UNPKG

polymerx-cli

Version:

Unlock the power of Polymer 3, Web Components and modern web tools.

110 lines (84 loc) 3.48 kB
"use strict"; 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;