UNPKG

@gdjiami/cli

Version:

CLI for build front end project.

76 lines (75 loc) 3.34 kB
"use strict"; 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*/]; } }); }); });