Skip to content
This repository was archived by the owner on Sep 30, 2020. It is now read-only.

Commit 3d8ec75

Browse files
Fixes #5 - Update eject for programatically determining soy and bridge
1 parent 23765b9 commit 3d8ec75

File tree

3 files changed

+25
-32
lines changed

3 files changed

+25
-32
lines changed

packages/liferay-npm-scripts/example/eject/after/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"testURL": "http://localhost"
3333
},
3434
"scripts": {
35-
"build": "metalsoy --soyDeps \"node_modules/+(com.liferay.frontend.js.web|management-toolbar)/**/*.soy\" && cross-env NODE_ENV=production babel --source-maps -d classes/META-INF/resources src/main/resources/META-INF/resources && liferay-npm-bundler&& npm run cleanSoy",
35+
"build": "metalsoy --soyDeps \"node_modules/+(com.liferay.frontend.js.web|management-toolbar)/**/*.soy\" && cross-env NODE_ENV=production babel --source-maps -d classes/META-INF/resources src/main/resources/META-INF/resources && liferay-npm-bundler && npm run cleanSoy",
3636
"cleanSoy": "rimraf src/**/*.soy.js",
3737
"format": "csf src/**/*.js --inline-edit",
3838
"lint": "csf src/**/*.js",

packages/liferay-npm-scripts/example/eject/before/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"liferay-npm-scripts": "^0.0.2"
1111
},
1212
"scripts": {
13-
"build": "liferay-npm-scripts build --soy --bundler",
13+
"build": "liferay-npm-scripts build",
1414
"eject": "liferay-npm-scripts eject",
1515
"format": "liferay-npm-scripts format",
1616
"lint": "liferay-npm-scripts lint",

packages/liferay-npm-scripts/src/scripts/eject.js

Lines changed: 23 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const path = require('path');
55
const rimraf = require('rimraf');
66
const sortKeys = require('sort-keys');
77

8+
const {soyExists,} = require('./soy');
89
const generateSoyDependencies = require('../utils/generate-soy-dependencies');
910
const getMergedConfig = require('../utils/get-merged-config');
1011
const spawnSync = require('../utils/spawnSync');
@@ -20,13 +21,13 @@ const scriptsDependencies = require(path.join(__dirname, '../../package.json'))
2021

2122
/**
2223
* Helper for generating the npm `build` script
23-
* @param {Object} flags Flags included via CLI
24+
* @param {Object} config Options derived from file structure
2425
* @returns {string}
2526
*/
26-
function generateBuildScript(flags) {
27+
function generateBuildScript(config) {
2728
let retStr = '';
2829

29-
if (flags.soy) {
30+
if (config.soy) {
3031
retStr += `metalsoy --soyDeps \"${generateSoyDependencies(
3132
NPM_SCRIPTS_CONFIG.build.dependencies
3233
)}\" && `;
@@ -36,15 +37,13 @@ function generateBuildScript(flags) {
3637
NPM_SCRIPTS_CONFIG.build.output
3738
} ${NPM_SCRIPTS_CONFIG.build.input}`;
3839

39-
if (flags.bundler) {
40-
retStr += ' && liferay-npm-bundler';
41-
}
40+
retStr += ' && liferay-npm-bundler';
4241

43-
if (flags.bridge) {
42+
if (config.bridge) {
4443
retStr += ' && liferay-npm-bridge-generator';
4544
}
4645

47-
if (flags.soy) {
46+
if (config.soy) {
4847
retStr += '&& npm run cleanSoy';
4948
}
5049

@@ -55,9 +54,10 @@ function generateBuildScript(flags) {
5554
* Main function for ejecting configuration to package.json and configuration
5655
*/
5756
module.exports = function() {
58-
const flags = projectPackage.scripts.build
59-
.match(/(?<=--)(?:\w+)/g)
60-
.reduce((prev, cur) => ({...prev, [cur]: true,}), {});
57+
const config = {
58+
bridge: fs.existsSync(path.join(CWD, '.npmbridgerc')),
59+
soy: soyExists(),
60+
};
6161

6262
// Write config for babel
6363
if (!projectPackage.babel) {
@@ -80,16 +80,14 @@ module.exports = function() {
8080
}
8181

8282
// Write config file for bundler
83-
if (flags.bundler) {
84-
fs.writeFileSync(
85-
path.join(CWD, '.npmbundlerrc'),
86-
JSON.stringify(BUNDLER_CONFIG, null, '\t')
87-
);
88-
}
83+
fs.writeFileSync(
84+
path.join(CWD, '.npmbundlerrc'),
85+
JSON.stringify(BUNDLER_CONFIG, null, '\t')
86+
);
8987

9088
// Set initial npm scripts
9189
projectPackage.scripts = {
92-
build: generateBuildScript(flags),
90+
build: generateBuildScript(),
9391
format: `csf ${NPM_SCRIPTS_CONFIG.format.join(' ')} --inline-edit`,
9492
lint: `csf ${NPM_SCRIPTS_CONFIG.lint.join(' ')}`,
9593
test: 'jest',
@@ -105,27 +103,22 @@ module.exports = function() {
105103
jest: scriptsDependencies['jest'],
106104
'liferay-jest-junit-reporter':
107105
scriptsDependencies['liferay-jest-junit-reporter'],
106+
'liferay-npm-bundler': scriptsDependencies['liferay-npm-bundler'],
107+
'liferay-npm-bundler-preset-liferay-dev':
108+
scriptsDependencies['liferay-npm-bundler-preset-liferay-dev'],
108109
};
109110

110-
// Additional if --soy flag is included
111-
if (flags.soy) {
111+
// Additional if soy is used
112+
if (config.soy) {
112113
newDevDependencies['metal-tools-soy'] =
113114
scriptsDependencies['metal-tools-soy'];
114115
newDevDependencies['rimraf'] = scriptsDependencies['rimraf'];
115116

116117
projectPackage.scripts.cleanSoy = 'rimraf src/**/*.soy.js';
117118
}
118119

119-
// Additional if --bundler flag is included
120-
if (flags.bundler) {
121-
newDevDependencies['liferay-npm-bundler'] =
122-
scriptsDependencies['liferay-npm-bundler'];
123-
newDevDependencies['liferay-npm-bundler-preset-liferay-dev'] =
124-
scriptsDependencies['liferay-npm-bundler-preset-liferay-dev'];
125-
}
126-
127-
// Additional if --bridge flag is included
128-
if (flags.bridge) {
120+
// Additional if bridge is used
121+
if (config.bridge) {
129122
newDevDependencies['liferay-npm-bridge-generator'] =
130123
scriptsDependencies['liferay-npm-bridge-generator'];
131124
}

0 commit comments

Comments
 (0)