ae-biu
Version:
Born For AE, Born To Do
111 lines (74 loc) • 3.27 kB
JavaScript
;
var _from = require('babel-runtime/core-js/array/from');
var _from2 = _interopRequireDefault(_from);
var _set = require('babel-runtime/core-js/set');
var _set2 = _interopRequireDefault(_set);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _commander = require('commander');
var _commander2 = _interopRequireDefault(_commander);
var _webpack = require('webpack');
var _webpack2 = _interopRequireDefault(_webpack);
var _webpackDevServer = require('webpack-dev-server');
var _webpackDevServer2 = _interopRequireDefault(_webpackDevServer);
var _logger = require('./utils/logger');
var _logger2 = _interopRequireDefault(_logger);
var _getWebpackConfig = require('./utils/get-webpack-config');
var _getWebpackConfig2 = _interopRequireDefault(_getWebpackConfig);
var _getUrls = require('./utils/get-urls');
var _getUrls2 = _interopRequireDefault(_getUrls);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_commander2.default.usage('[options]').parse(process.argv);
var args = _commander2.default.args;
process.env.NODE_ENV = 'development';
process.env.SDP_ENV = (args[0] || process.env.SDP_ENV || process.env.npm_config_sdp_env || 'test').trim();
var port = process.env.PORT || 3000;
var host = process.env.HOST || '0.0.0.0';
var webpackConfig = require('./config/webpack.config.dev');
var webpackDevServerConfig = require('./config/webpack-dev-server.config');
var projectConfig = (0, _getWebpackConfig2.default)();
if (typeof projectConfig === 'function') {
webpackConfig = projectConfig((0, _extends3.default)({}, webpackConfig, {
devServer: webpackDevServerConfig
}));
} else if (projectConfig) {
webpackConfig = projectConfig;
}
if (webpackConfig.devServer) {
webpackDevServerConfig = (0, _extends3.default)({}, webpackDevServerConfig, webpackConfig.devServer);
delete webpackConfig.devServer;
}
var _webpackConfig = webpackConfig,
_webpackConfig$entry = _webpackConfig.entry,
entry = _webpackConfig$entry === undefined ? {} : _webpackConfig$entry;
var hmrEntry = ['webpack-dev-server/client', 'webpack/hot/dev-server'];
if (entry.hasOwnProperty('app')) {
if (Array.isArray(entry.app)) {
entry.app = hmrEntry.concat(entry.app);
} else if (typeof entry.app === 'string') {
entry.app = hmrEntry.concat([entry.app]);
}
var appSet = new _set2.default(entry.app);
entry.app = (0, _from2.default)(appSet);
}
webpackConfig.output.publicPath = '/';
var compiler = (0, _webpack2.default)(webpackConfig);
var urls = (0, _getUrls2.default)(host, port);
var urlPrintStr = ['Server running at:', ' - Local: ' + urls.local, ' - Network: ' + urls.network].join('\n');
compiler.plugin('done', function () {
return console.log(urlPrintStr);
});
var devServer = new _webpackDevServer2.default(compiler, webpackDevServerConfig);
devServer.listen(port, host, function (err) {
if (err) {
_logger2.default.error(err);
}
_logger2.default.info('Starting server with HMR\n');
_logger2.default.info(urlPrintStr);['SIGINT', 'SIGTERM'].forEach(function (sig) {
process.on(sig, function () {
devServer.close();
process.exit();
});
});
});