UNPKG

fz-react-cli

Version:

A CLI tool for build modern web application and libraries

306 lines (299 loc) 8.13 kB
#!/usr/bin/env node var spawn = require('cross-spawn'); var script = process.argv[2]; var args = process.argv.slice(3); var fs = require('fs'); var path = require('path'); var appPath = fs.realpathSync(process.cwd()); var isNodeModuleUnderAppFolder = __dirname.indexOf(appPath) != -1; var webpack = !isNodeModuleUnderAppFolder ? path.join(__dirname, '..', 'node_modules', '.bin', 'webpack') : 'webpack'; var crossEnv = !isNodeModuleUnderAppFolder ? path.join(__dirname, '..', 'node_modules', '.bin', 'cross-env') : 'cross-env'; var babel = !isNodeModuleUnderAppFolder ? path.join(__dirname, '..', 'node_modules', '.bin', 'babel') : 'babel'; var propertyToJson = !isNodeModuleUnderAppFolder ? path.join(__dirname, '..', 'node_modules', '.bin', 'propertyToJson') : 'propertyToJson'; var presetEs2015 = require.resolve('babel-preset-es2015'); var presetReact = require.resolve('babel-preset-react'); var hash = process.env.npm_config_hash_enable || false; switch (script) { case 'copy': var result = spawn.sync( 'node', [require.resolve('../lib/utils/copy')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'move': var result = spawn.sync( 'node', [require.resolve('../lib/utils/copy')].concat(args.concat(false)), { stdio: 'inherit' } ); process.exit(result.status); break; case 'gitclone': args[args.length - 1] = path.join(appPath, args[args.length - 1]); var result = spawn.sync( 'node', [require.resolve('../lib/clean'), args[args.length - 1]], { stdio: 'inherit' } ); var result = spawn.sync('git', ['clone'].concat(args), { stdio: 'inherit' }); process.exit(result.status); break; case 'hgclone': args[args.length - 1] = path.join(appPath, args[args.length - 1]); var result = spawn.sync( 'node', [require.resolve('../lib/clean'), args[args.length - 1]], { stdio: 'inherit' } ); var result = spawn.sync('hg', ['clone'].concat(args), { stdio: 'inherit' }); process.exit(result.status); break; case 'app': var result = spawn.sync( 'cp', ['-r', path.join(__dirname, '..', 'blueprint')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'library': var result = spawn.sync( 'cp', ['-r', path.join(__dirname, '..', 'library')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'propertyToJson': var result = spawn.sync( propertyToJson, args.map(arg => { return path.join(appPath, arg); }), { stdio: 'inherit' } ); process.exit(result.status); break; case 'help': var result = spawn.sync( 'node', [require.resolve('../lib/server/helpServer')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'html': var result = spawn.sync( 'node', [require.resolve('../lib/server/htmlServer')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'start': var result = spawn.sync( 'node', [require.resolve('../lib/server/server')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'clean': args = args.map(arg => path.join(appPath, arg)); var result = spawn.sync( 'node', [require.resolve('../lib/clean')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'docs': var result = spawn.sync( 'node', [require.resolve('../lib/server/docsServer')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'sstest': var result = spawn.sync( 'node', [require.resolve('../lib/server/ssServer')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'impact': var result = spawn.sync( 'node', [require.resolve('../lib/server/impactServer')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'build:component': var result = spawn.sync( crossEnv, [ 'BABEL_ENV=commonjs', babel, 'src', '--out-dir', 'lib', '--presets=' + presetEs2015 + ',' + presetReact, '--copy-files' ].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'build:component:server': // var result = spawn.sync( // crossEnv, // [ // 'BABEL_ENV=server', // babel, // 'app', // '--out-dir', // 'lib', // '--presets=' + presetEs2015 + ',' + presetReact, // '--copy-files' // ].concat(args), // { stdio: 'inherit' } // ); // process.exit(result.status); var result = spawn.sync( webpack, ['--config', require.resolve('../lib/config/webpack.server.config.js')], { stdio: 'inherit' } ); console.log('result'); process.exit(result.status); break; case 'cluster:monitor': var result = spawn.sync( 'node', [require.resolve('../lib/server/clusterHubServer')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'node': var result = spawn.sync( 'node', [require.resolve('../lib/server/NodeServer')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'build:library:es': var result = spawn.sync( crossEnv, [ babel, 'src', '--out-dir', 'es', '--presets=' + require.resolve('../lib/babelPresetModule') + ',' + presetReact, '--copy-files' ].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'build:component:umd': var result = spawn.sync( webpack, [ '--config', require.resolve('../lib/config/webpack.component.build.config.js') ], { stdio: 'inherit' } ); process.exit(result.status); break; case 'build:css:umd': var result = spawn.sync( webpack, [ '--config', require.resolve('../lib/config/webpack.css.build.config.js') ], { stdio: 'inherit' } ); process.exit(result.status); break; case 'build': if (hash) { var result = spawn.sync( webpack, [ '--config', require.resolve('../lib/config/webpack.hash.prod.config.js') ].concat(args), { stdio: 'inherit' } ); process.exit(result.status); } else { var result = spawn.sync( webpack, [ '--config', require.resolve('../lib/config/webpack.prod.config.js') ].concat(args), { stdio: 'inherit' } ); process.exit(result.status); } break; case 'test': var result = spawn.sync( 'node', [require.resolve('../lib/test')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; case 'publish:report': var result = spawn.sync( 'sh', [path.join(__dirname, '..', 'reportpublish.sh')].concat(args), { stdio: 'inherit' } ); process.exit(result.status); break; /* check to reuse "test" option */ default: console.log('fz-react-cli > Unknown script "' + script + '".'); console.log('fz-react-cli app <appName>'); console.log('fz-react-cli library <libraryName>'); console.log('fz-react-cli start'); console.log('fz-react-cli build'); console.log('fz-react-cli sstest'); console.log('fz-react-cli test'); console.log('fz-react-cli publish:report'); console.log('fz-react-cli build:library:es'); console.log('fz-react-cli gitclone <last argument clone folder>'); console.log('fz-react-cli hgclone <last argument clone folder>'); process.exit(0); break; }