UNPKG

ae-biu

Version:

Born For AE, Born To Do

142 lines (97 loc) 3.6 kB
#!/usr/bin/env node 'use strict'; var _commander = require('commander'); var _commander2 = _interopRequireDefault(_commander); var _webpack = require('webpack'); var _webpack2 = _interopRequireDefault(_webpack); var _logger = require('./utils/logger'); var _logger2 = _interopRequireDefault(_logger); var _clearLine = require('./utils/clear-line'); var _clearLine2 = _interopRequireDefault(_clearLine); var _loading = require('./utils/loading'); var _loading2 = _interopRequireDefault(_loading); var _getWebpackConfig = require('./utils/get-webpack-config'); var _getWebpackConfig2 = _interopRequireDefault(_getWebpackConfig); var _webpackBundleAnalyzer = require('webpack-bundle-analyzer'); var _serve = require('serve'); var _serve2 = _interopRequireDefault(_serve); var _rimraf = require('rimraf'); var _rimraf2 = _interopRequireDefault(_rimraf); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _commander2.default.usage('[options]').option('-a, --analyzer', 'start bundle analyzer after build').option('-p, --port', 'set static server port').parse(process.argv); var args = _commander2.default.args; var port = void 0; var sdpEnv = void 0; var analyzer = _commander2.default.analyzer; for (var i in args) { if (/\d+/.test(args[i])) { port = args[i]; } else { sdpEnv = args[i]; } } process.env.NODE_ENV = 'production'; process.env.SDP_ENV = (sdpEnv || process.env.SDP_ENV || process.env.npm_config_sdp_env || 'product').trim(); var PORT = port || (process.env.PORT || process.env.npm_config_port || '8080').trim(); var webpackConfig = require('./config/webpack.config.prod'); var projectConfig = (0, _getWebpackConfig2.default)(); if (typeof projectConfig === 'function') { webpackConfig = projectConfig(webpackConfig); } else if (projectConfig) { webpackConfig = projectConfig; } var distDir = webpackConfig.output.path; if (analyzer) { webpackConfig.plugins.push(new _webpackBundleAnalyzer.BundleAnalyzerPlugin({ analyzerMode: 'server', analyzerHost: '127.0.0.1', analyzerPort: 8888, reportFilename: 'report.html', openAnalyzer: true, generateStatsFile: false, statsFilename: 'stats.json', statsOptions: null, logLevel: 'info' })); } _logger2.default.info('Clean dist files\n'); _rimraf2.default.sync(distDir); var compiler = (0, _webpack2.default)(webpackConfig); var loading = new _loading2.default(); console.log(); loading.start(); compiler.run(function (err, stats) { loading.clear(); (0, _clearLine2.default)(); console.log(); _logger2.default.info('Webpack compile completed.\n'); if (err) { _logger2.default.error('Webpack compiler encountered a fatal error.\n', err); process.exit(1); } var jsonStats = stats.toJson(); console.log(stats.toString({ modules: false, children: false, chunks: false, chunkModules: false, colors: true })); if (jsonStats.errors.length > 0) { _logger2.default.error('Webpack compiler encountered errors.\n'); console.log(jsonStats.errors); process.exit(1); } else if (jsonStats.warnings.length > 0) { _logger2.default.warning('Webpack compiler encountered warnings.\n'); } else { _logger2.default.success('No errors or warnings encountered.\n'); } var server = (0, _serve2.default)(distDir, { port: PORT }); _logger2.default.info('Static server now is running at http://0.0.0.0:' + PORT); _commander2.default.on('exit', function () { _logger2.default.info('Static server now is closed'); server.stop(); }); });