polymerx-cli
Version:
Unlock the power of Polymer 3, Web Components and modern web tools.
110 lines (84 loc) • 3.48 kB
JavaScript
;
exports.__esModule = true;
exports.default = void 0;
var _path = require("path");
var _chalk = _interopRequireDefault(require("chalk"));
var _getPort = _interopRequireDefault(require("get-port"));
var _consoleClear = _interopRequireDefault(require("console-clear"));
var _webpack = _interopRequireDefault(require("webpack"));
var _webpackDevServer = _interopRequireDefault(require("webpack-dev-server"));
var _isDir = _interopRequireDefault(require("../is-dir"));
var _logStats = require("./log-stats");
var _transformConfig = _interopRequireDefault(require("./transform-config"));
var _webpackBase = _interopRequireDefault(require("./webpack-base.config"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
const runProdCompiler = compiler => {
return new Promise((resolve, reject) => compiler.run(async (err, stats) => {
(0, _logStats.showStats)(stats);
if (err || stats && stats.hasErrors()) {
reject(_chalk.default.red(`⚠️ build failed! ${err || ''}`));
}
await new Promise(resolve => setTimeout(resolve, 20));
resolve(stats);
}));
};
const devBuild = async argv => {
const config = (0, _webpackBase.default)(argv);
if (argv.config) {
await (0, _transformConfig.default)(argv, config);
}
const userPort = Number(process.env.PORT || config.devServer.port) || 8080;
const port = await (0, _getPort.default)({
port: userPort
});
const compiler = (0, _webpack.default)(config);
return new Promise((resolve, reject) => {
compiler.plugin('done', stats => {
const {
devServer
} = config;
const protocol = process.env.HTTPS || devServer.https ? 'https' : 'http';
const userHost = process.env.HOST || devServer.host || 'localhost';
const host = userHost === '0.0.0.0' ? 'localhost' : userHost;
const serverAddr = `${protocol}://${host}:${_chalk.default.bold(port)}`;
(0, _consoleClear.default)();
(0, _logStats.endMessage)(stats.toJson().assets, stats.hasErrors());
(0, _logStats.detailMessage)(stats.hasErrors(), {
port,
userPort,
serverAddr,
nomodule: argv.nomodule,
assets: stats.toJson({
assets: true
}).assets
});
(0, _logStats.showStats)(stats);
});
compiler.plugin('failed', reject);
new _webpackDevServer.default(compiler, config.devServer).listen(port);
});
};
const prodBuild = async argv => {
const config = (0, _webpackBase.default)(argv);
if (argv.config) {
await (0, _transformConfig.default)(argv, config);
}
const compiler = (0, _webpack.default)(config);
return runProdCompiler(compiler);
};
var _default = argv => {
const cwd = (0, _path.resolve)(argv.cwd || process.cwd());
const src = (0, _path.resolve)(cwd, argv.src);
const srcDir = (0, _isDir.default)(src) ? src : (0, _path.dirname)(src);
const newArgv = _extends({}, argv, {
isProd: argv.production,
cwd,
src,
srcDir,
nomodule: argv.nomodule
});
const fn = argv.production ? prodBuild : devBuild;
return fn(newArgv);
};
exports.default = _default;