@gdjiami/cli
Version:
CLI for build front end project.
76 lines (75 loc) • 3.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var path_1 = tslib_1.__importDefault(require("path"));
var terser_1 = tslib_1.__importDefault(require("terser"));
var fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
var core_js_builder_1 = tslib_1.__importDefault(require("core-js-builder"));
var core_js_compat_1 = tslib_1.__importDefault(require("core-js-compat"));
var paths_1 = tslib_1.__importDefault(require("../paths"));
var uniq_1 = tslib_1.__importDefault(require("lodash/uniq"));
var utils_1 = require("../utils");
var defaultFeatures = [
'es.promise',
'es.array.from',
'es.array.of',
'es.array.fill',
'es.array.index-of',
'es.array.find-index',
'es.array.find',
'es.array.includes',
'es.object.assign',
'es.object.keys',
'es.string.ends-with',
'es.string.starts-with',
'es.string.includes',
'es.symbol.iterator',
'es.symbol.species',
'es.map',
'es.set',
];
exports.default = (function (argv) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var out, pkg, fullPath, customFeature, targets, allFeatures, list, finalFeatures, code, err_1;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
out = argv.out || 'public/polyfill.js';
pkg = fs_extra_1.default.readJSONSync(paths_1.default.appPackageJson);
fullPath = path_1.default.isAbsolute(out) ? out : path_1.default.join(process.cwd(), out);
fs_extra_1.default.mkdirpSync(path_1.default.dirname(fullPath));
customFeature = (pkg.polyfills || []).concat(pkg.polyfill);
targets = pkg.browserslist || [];
allFeatures = uniq_1.default(defaultFeatures.concat(customFeature));
list = core_js_compat_1.default({ targets: targets }).list;
finalFeatures = allFeatures.filter(function (i) { return list.indexOf(i) !== -1; });
utils_1.message.info("\u5C06\u6DFB\u52A0\u4EE5\u4E0B\u7279\u6027\u5230: " + fullPath);
finalFeatures.forEach(function (i) { return console.log(i); });
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, core_js_builder_1.default({
targets: targets,
modules: finalFeatures,
})];
case 2:
code = _a.sent();
fs_extra_1.default.writeFile(fullPath, terser_1.default.minify(code, {}).code, 'utf8', function (err) {
if (err == null) {
utils_1.message.success('构建成功');
}
else {
console.error(err);
process.exit(1);
}
});
return [3 /*break*/, 4];
case 3:
err_1 = _a.sent();
utils_1.message.error('构建失败');
console.error(err_1);
process.exit(1);
return [3 /*break*/, 4];
case 4: return [2 /*return*/];
}
});
}); });