polymerx-cli
Version:
Unlock the power of Polymer 3, Web Components and modern web tools.
110 lines (86 loc) • 3.14 kB
JavaScript
;
exports.__esModule = true;
exports.default = void 0;
var _path = require("path");
var _rimraf = _interopRequireDefault(require("rimraf"));
var _ora = _interopRequireDefault(require("ora"));
var _pify = _interopRequireDefault(require("pify"));
var _isDir = _interopRequireDefault(require("../lib/is-dir"));
var _getPkg = _interopRequireDefault(require("../lib/get-pkg"));
var _error = _interopRequireDefault(require("../lib/error"));
var _logStats = require("../lib/webpack/log-stats");
var _runWebpack = _interopRequireDefault(require("../lib/webpack/run-webpack"));
var _asyncCommand = _interopRequireDefault(require("../lib/async-command"));
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 pRimRaf = (0, _pify.default)(_rimraf.default);
var _default = (0, _asyncCommand.default)({
command: 'build [src] [dest]',
desc: 'Create a production build in build/',
builder: {
cwd: {
description: 'A directory to use instead of $PWD.',
default: '.'
},
src: {
description: 'Entry file (index.js)',
default: 'src'
},
dest: {
description: 'Directory root for output',
default: 'dist'
},
workers: {
description: 'Add a Service Workers to the application.',
alias: 'w',
type: 'boolean',
default: true
},
clean: {
description: 'Clear output directory before building.',
type: 'boolean',
default: true
},
json: {
description: 'Generate build statistics for analysis.',
type: 'boolean',
default: false
},
config: {
description: 'Path to custom polymerx.config.js',
alias: 'c'
}
},
async handler(argv) {
const spinner = (0, _ora.default)({
text: 'Preparing build things...',
color: 'magenta'
}).start();
const cwd = (0, _path.resolve)(argv.cwd);
const modules = (0, _path.resolve)(cwd, 'node_modules');
if (!(0, _isDir.default)(modules)) {
(0, _error.default)('No `node_modules` found! Please run `npm install` before continuing.', spinner);
return process.exit(1);
}
if (argv.clean) {
const dest = (0, _path.resolve)(cwd, argv.dest || 'dist');
await pRimRaf(dest);
}
const pkg = await (0, _getPkg.default)(argv.cwd);
const newArgv = _extends({}, argv, {
production: true,
pkg
});
spinner.color = 'yellow';
spinner.text = 'Running compiler...';
try {
const results = await (0, _runWebpack.default)(newArgv);
(0, _logStats.endBuildMessage)(results, spinner);
(0, _logStats.showStats)(results);
(0, _logStats.endMessage)(results.toJson().assets);
} catch (error) {
console.error('\n' + error);
}
}
});
exports.default = _default;