UNPKG

8.13 kBJavaScriptView Raw
1#!/usr/bin/env node
2var spawn = require('cross-spawn');
3var script = process.argv[2];
4var args = process.argv.slice(3);
5var fs = require('fs');
6var path = require('path');
7var appPath = fs.realpathSync(process.cwd());
8var isNodeModuleUnderAppFolder = __dirname.indexOf(appPath) != -1;
9var webpack = !isNodeModuleUnderAppFolder
10 ? path.join(__dirname, '..', 'node_modules', '.bin', 'webpack')
11 : 'webpack';
12var crossEnv = !isNodeModuleUnderAppFolder
13 ? path.join(__dirname, '..', 'node_modules', '.bin', 'cross-env')
14 : 'cross-env';
15var babel = !isNodeModuleUnderAppFolder
16 ? path.join(__dirname, '..', 'node_modules', '.bin', 'babel')
17 : 'babel';
18var propertyToJson = !isNodeModuleUnderAppFolder
19 ? path.join(__dirname, '..', 'node_modules', '.bin', 'propertyToJson')
20 : 'propertyToJson';
21var presetEs2015 = require.resolve('babel-preset-es2015');
22var presetReact = require.resolve('babel-preset-react');
23var hash = process.env.npm_config_hash_enable || false;
24switch (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 // var result = spawn.sync(
169 // crossEnv,
170 // [
171 // 'BABEL_ENV=server',
172 // babel,
173 // 'app',
174 // '--out-dir',
175 // 'lib',
176 // '--presets=' + presetEs2015 + ',' + presetReact,
177 // '--copy-files'
178 // ].concat(args),
179 // { stdio: 'inherit' }
180 // );
181 // process.exit(result.status);
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 /* check to reuse "test" option */
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}