1 | #!/usr/bin/env node
|
2 | var spawn = require('cross-spawn');
|
3 | var script = process.argv[2];
|
4 | var args = process.argv.slice(3);
|
5 | var fs = require('fs');
|
6 | var path = require('path');
|
7 | var appPath = fs.realpathSync(process.cwd());
|
8 | var isNodeModuleUnderAppFolder = __dirname.indexOf(appPath) != -1;
|
9 | var webpack = !isNodeModuleUnderAppFolder
|
10 | ? path.join(__dirname, '..', 'node_modules', '.bin', 'webpack')
|
11 | : 'webpack';
|
12 | var crossEnv = !isNodeModuleUnderAppFolder
|
13 | ? path.join(__dirname, '..', 'node_modules', '.bin', 'cross-env')
|
14 | : 'cross-env';
|
15 | var babel = !isNodeModuleUnderAppFolder
|
16 | ? path.join(__dirname, '..', 'node_modules', '.bin', 'babel')
|
17 | : 'babel';
|
18 | var propertyToJson = !isNodeModuleUnderAppFolder
|
19 | ? path.join(__dirname, '..', 'node_modules', '.bin', 'propertyToJson')
|
20 | : 'propertyToJson';
|
21 | var presetEs2015 = require.resolve('babel-preset-es2015');
|
22 | var presetReact = require.resolve('babel-preset-react');
|
23 | var hash = process.env.npm_config_hash_enable || false;
|
24 | switch (script) {
|
25 | case 'copy':
|
26 | var result = spawn.sync(
|
27 | 'node',
|
28 | [require.resolve('../lib/utils/copy')].concat(args),
|
29 | { stdio: 'inherit' }
|
30 | );
|
31 | process.exit(result.status);
|
32 | break;
|
33 | case 'move':
|
34 | var result = spawn.sync(
|
35 | 'node',
|
36 | [require.resolve('../lib/utils/copy')].concat(args.concat(false)),
|
37 | { stdio: 'inherit' }
|
38 | );
|
39 | process.exit(result.status);
|
40 | break;
|
41 | case 'gitclone':
|
42 | args[args.length - 1] = path.join(appPath, args[args.length - 1]);
|
43 | var result = spawn.sync(
|
44 | 'node',
|
45 | [require.resolve('../lib/clean'), args[args.length - 1]],
|
46 | { stdio: 'inherit' }
|
47 | );
|
48 | var result = spawn.sync('git', ['clone'].concat(args), {
|
49 | stdio: 'inherit'
|
50 | });
|
51 | process.exit(result.status);
|
52 | break;
|
53 | case 'hgclone':
|
54 | args[args.length - 1] = path.join(appPath, args[args.length - 1]);
|
55 | var result = spawn.sync(
|
56 | 'node',
|
57 | [require.resolve('../lib/clean'), args[args.length - 1]],
|
58 | { stdio: 'inherit' }
|
59 | );
|
60 | var result = spawn.sync('hg', ['clone'].concat(args), {
|
61 | stdio: 'inherit'
|
62 | });
|
63 | process.exit(result.status);
|
64 | break;
|
65 | case 'app':
|
66 | var result = spawn.sync(
|
67 | 'cp',
|
68 | ['-r', path.join(__dirname, '..', 'blueprint')].concat(args),
|
69 | { stdio: 'inherit' }
|
70 | );
|
71 | process.exit(result.status);
|
72 | break;
|
73 | case 'library':
|
74 | var result = spawn.sync(
|
75 | 'cp',
|
76 | ['-r', path.join(__dirname, '..', 'library')].concat(args),
|
77 | { stdio: 'inherit' }
|
78 | );
|
79 | process.exit(result.status);
|
80 | break;
|
81 | case 'propertyToJson':
|
82 | var result = spawn.sync(
|
83 | propertyToJson,
|
84 | args.map(arg => {
|
85 | return path.join(appPath, arg);
|
86 | }),
|
87 | {
|
88 | stdio: 'inherit'
|
89 | }
|
90 | );
|
91 | process.exit(result.status);
|
92 | break;
|
93 | case 'help':
|
94 | var result = spawn.sync(
|
95 | 'node',
|
96 | [require.resolve('../lib/server/helpServer')].concat(args),
|
97 | { stdio: 'inherit' }
|
98 | );
|
99 | process.exit(result.status);
|
100 | break;
|
101 | case 'html':
|
102 | var result = spawn.sync(
|
103 | 'node',
|
104 | [require.resolve('../lib/server/htmlServer')].concat(args),
|
105 | { stdio: 'inherit' }
|
106 | );
|
107 | process.exit(result.status);
|
108 | break;
|
109 | case 'start':
|
110 | var result = spawn.sync(
|
111 | 'node',
|
112 | [require.resolve('../lib/server/server')].concat(args),
|
113 | { stdio: 'inherit' }
|
114 | );
|
115 | process.exit(result.status);
|
116 | break;
|
117 | case 'clean':
|
118 | args = args.map(arg => path.join(appPath, arg));
|
119 | var result = spawn.sync(
|
120 | 'node',
|
121 | [require.resolve('../lib/clean')].concat(args),
|
122 | { stdio: 'inherit' }
|
123 | );
|
124 | process.exit(result.status);
|
125 | break;
|
126 | case 'docs':
|
127 | var result = spawn.sync(
|
128 | 'node',
|
129 | [require.resolve('../lib/server/docsServer')].concat(args),
|
130 | { stdio: 'inherit' }
|
131 | );
|
132 | process.exit(result.status);
|
133 | break;
|
134 | case 'sstest':
|
135 | var result = spawn.sync(
|
136 | 'node',
|
137 | [require.resolve('../lib/server/ssServer')].concat(args),
|
138 | { stdio: 'inherit' }
|
139 | );
|
140 | process.exit(result.status);
|
141 | break;
|
142 | case 'impact':
|
143 | var result = spawn.sync(
|
144 | 'node',
|
145 | [require.resolve('../lib/server/impactServer')].concat(args),
|
146 | { stdio: 'inherit' }
|
147 | );
|
148 | process.exit(result.status);
|
149 | break;
|
150 | case 'build:component':
|
151 | var result = spawn.sync(
|
152 | crossEnv,
|
153 | [
|
154 | 'BABEL_ENV=commonjs',
|
155 | babel,
|
156 | 'src',
|
157 | '--out-dir',
|
158 | 'lib',
|
159 | '--presets=' + presetEs2015 + ',' + presetReact,
|
160 | '--copy-files'
|
161 | ].concat(args),
|
162 | { stdio: 'inherit' }
|
163 | );
|
164 | process.exit(result.status);
|
165 |
|
166 | break;
|
167 | case 'build:component:server':
|
168 |
|
169 |
|
170 |
|
171 |
|
172 |
|
173 |
|
174 |
|
175 |
|
176 |
|
177 |
|
178 |
|
179 |
|
180 |
|
181 |
|
182 | var result = spawn.sync(
|
183 | webpack,
|
184 | ['--config', require.resolve('../lib/config/webpack.server.config.js')],
|
185 | { stdio: 'inherit' }
|
186 | );
|
187 | console.log('result');
|
188 | process.exit(result.status);
|
189 | break;
|
190 | case 'cluster:monitor':
|
191 | var result = spawn.sync(
|
192 | 'node',
|
193 | [require.resolve('../lib/server/clusterHubServer')].concat(args),
|
194 | { stdio: 'inherit' }
|
195 | );
|
196 | process.exit(result.status);
|
197 |
|
198 | break;
|
199 | case 'node':
|
200 | var result = spawn.sync(
|
201 | 'node',
|
202 | [require.resolve('../lib/server/NodeServer')].concat(args),
|
203 | { stdio: 'inherit' }
|
204 | );
|
205 | process.exit(result.status);
|
206 |
|
207 | break;
|
208 | case 'build:library:es':
|
209 | var result = spawn.sync(
|
210 | crossEnv,
|
211 | [
|
212 | babel,
|
213 | 'src',
|
214 | '--out-dir',
|
215 | 'es',
|
216 | '--presets=' +
|
217 | require.resolve('../lib/babelPresetModule') +
|
218 | ',' +
|
219 | presetReact,
|
220 | '--copy-files'
|
221 | ].concat(args),
|
222 | { stdio: 'inherit' }
|
223 | );
|
224 | process.exit(result.status);
|
225 |
|
226 | break;
|
227 | case 'build:component:umd':
|
228 | var result = spawn.sync(
|
229 | webpack,
|
230 | [
|
231 | '--config',
|
232 | require.resolve('../lib/config/webpack.component.build.config.js')
|
233 | ],
|
234 | { stdio: 'inherit' }
|
235 | );
|
236 | process.exit(result.status);
|
237 | break;
|
238 | case 'build:css:umd':
|
239 | var result = spawn.sync(
|
240 | webpack,
|
241 | [
|
242 | '--config',
|
243 | require.resolve('../lib/config/webpack.css.build.config.js')
|
244 | ],
|
245 | { stdio: 'inherit' }
|
246 | );
|
247 | process.exit(result.status);
|
248 | break;
|
249 | case 'build':
|
250 | if (hash) {
|
251 | var result = spawn.sync(
|
252 | webpack,
|
253 | [
|
254 | '--config',
|
255 | require.resolve('../lib/config/webpack.hash.prod.config.js')
|
256 | ].concat(args),
|
257 | { stdio: 'inherit' }
|
258 | );
|
259 |
|
260 | process.exit(result.status);
|
261 | } else {
|
262 | var result = spawn.sync(
|
263 | webpack,
|
264 | [
|
265 | '--config',
|
266 | require.resolve('../lib/config/webpack.prod.config.js')
|
267 | ].concat(args),
|
268 | { stdio: 'inherit' }
|
269 | );
|
270 |
|
271 | process.exit(result.status);
|
272 | }
|
273 | break;
|
274 | case 'test':
|
275 | var result = spawn.sync(
|
276 | 'node',
|
277 | [require.resolve('../lib/test')].concat(args),
|
278 | { stdio: 'inherit' }
|
279 | );
|
280 | process.exit(result.status);
|
281 | break;
|
282 | case 'publish:report':
|
283 | var result = spawn.sync(
|
284 | 'sh',
|
285 | [path.join(__dirname, '..', 'reportpublish.sh')].concat(args),
|
286 | { stdio: 'inherit' }
|
287 | );
|
288 | process.exit(result.status);
|
289 | break;
|
290 |
|
291 | default:
|
292 | console.log('fz-react-cli > Unknown script "' + script + '".');
|
293 | console.log('fz-react-cli app <appName>');
|
294 | console.log('fz-react-cli library <libraryName>');
|
295 | console.log('fz-react-cli start');
|
296 | console.log('fz-react-cli build');
|
297 | console.log('fz-react-cli sstest');
|
298 | console.log('fz-react-cli test');
|
299 | console.log('fz-react-cli publish:report');
|
300 | console.log('fz-react-cli build:library:es');
|
301 | console.log('fz-react-cli gitclone <last argument clone folder>');
|
302 | console.log('fz-react-cli hgclone <last argument clone folder>');
|
303 | process.exit(0);
|
304 | break;
|
305 | }
|