ae-biu
Version:
Born For AE, Born To Do
142 lines (97 loc) • 3.6 kB
JavaScript
;
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();
});
});