UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

109 lines (98 loc) 7.54 kB
"use strict";var _typeof = require("@babel/runtime-corejs2/helpers/typeof");var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");_Object$defineProperty(exports, "__esModule", { value: true });exports["default"] = void 0;var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));var _path = _interopRequireDefault(require("path")); var _index = require("../../cli-shared-utils/index.js"); var paths = _interopRequireWildcard(require("../lib/paths.js")); var _constanst = require("../lib/constanst.js"); var _readdir = _interopRequireDefault(require("../lib/readdir.js")); var _rpk = _interopRequireDefault(require("../lib/rpk.js"));function _getRequireWildcardCache(e) {if ("function" != typeof _WeakMap) return null;var r = new _WeakMap(),t = new _WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {return e ? t : r;})(e);}function _interopRequireWildcard(e, r) {if (!r && e && e.__esModule) return e;if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e };var t = _getRequireWildcardCache(r);if (t && t.has(e)) return t.get(e);var n = { __proto__: null },a = _Object$defineProperty && _Object$getOwnPropertyDescriptor;for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {var i = a ? _Object$getOwnPropertyDescriptor(e, u) : null;i && (i.get || i.set) ? _Object$defineProperty(n, u, i) : n[u] = e[u];}return n["default"] = e, t && t.set(e, n), n;}var ZipWebpackPlugin = /*#__PURE__*/function () { function ZipWebpackPlugin(options) {(0, _classCallCheck2["default"])(this, ZipWebpackPlugin); this.options = options; }return (0, _createClass2["default"])(ZipWebpackPlugin, [{ key: "apply", value: function apply(compiler) { var pluginName = 'ZipWebpackPlugin'; /** * 获取打原整包的配置 * @param {Boolean} isRelease 是否是release模式 * @param {String} packageName 包名 * @param {Boolean} singlePackage 是否是打原整包 * @param {Array} subpackages 分包配置 * @param {String} pluginPath 插件包路径 * @param {Object} manifest 小游戏配置文件 * @param {String} buildType 小游戏构建类型 */ var _this$options = this.options,isRelease = _this$options.isRelease,packageName = _this$options.packageName,singlePackage = _this$options.singlePackage,subpackages = _this$options.subpackages,manifest = _this$options.manifest,buildType = _this$options.buildType,compileStartTime = _this$options.compileStartTime; compiler.hooks.afterEmit.tapPromise(pluginName, function (compilation) { // 签名文件 var signFiles = { debug: { privatekey: paths.DEBUG_PRIVATE_KEY, certificate: paths.DEBUG_CERTIFICATE }, release: { privatekey: paths.RELEASE_PRIVATE_KEY, certificate: paths.RELEASE_CERTIFICATE } }; // 编译完成开始打包,打包前先校验签名文件是否存在 var signFile = signFiles[isRelease ? 'release' : 'debug']; // debug包的后缀 .rpk release包的后缀 .signed.rpk // buildType 默认值为release var RPK_SIGNED_NEW = _constanst.RPK_SIGNED; var RPK_NEW = _constanst.RPK; if (buildType && !buildType.includes('release')) { RPK_SIGNED_NEW = ".".concat(buildType).concat(_constanst.RPK_SIGNED); RPK_NEW = ".".concat(buildType).concat(_constanst.RPK); } var ext = isRelease ? RPK_SIGNED_NEW : RPK_NEW; if (!_index.fs.existsSync(signFile.privatekey)) { throw new Error("".concat(_constanst.LOG_TITLE, "\u7F3A\u5C11\u79C1\u94A5\u6587\u4EF6, \u6253\u5305\u5931\u8D25: ").concat(signFile.privatekey)); } if (!_index.fs.existsSync(signFile.certificate)) { throw new Error("".concat(_constanst.LOG_TITLE, "\u7F3A\u5C11\u8BC1\u4E66\u6587\u4EF6, \u6253\u5305\u5931\u8D25: ").concat(signFile.certificate)); } return new _promise["default"](function (resolve) { (0, _index.info)("".concat(_constanst.LOG_TITLE).concat(singlePackage ? '原整包编译完成,开始生成原整包' : '分包编译完成,开始生成分包', " \u8017\u65F6\uFF1A").concat(new Date().valueOf() - compileStartTime, "ms")); // 遍历出build目录所有文件 var files = (0, _readdir["default"])(paths.BUILD); // 如果是打原整包 if (singlePackage) { // 打原整包到temp目录 有插件包的也走这个逻辑,因为需要打个兼容的包 (0, _rpk["default"])("".concat(packageName).concat(_constanst.RPK), files, paths.BUILD, paths.TEMP, signFile, manifest).then(resolve); } else { // 如果存在分包,那么就打出各个分包,并和原整包一起再打一个rpk,到dist目录 var pkgRes = []; // 根据分包配置,找到各个包对应的资源。执行如下操作后,files中剩下的即为主包的资源 subpackages.forEach(function (_ref) {var name = _ref.name,root = _ref.root; var matchFiles = []; for (var index = files.length - 1; index >= 0; index--) { var file = files[index]; var _ext = _path["default"].extname(root); if (_ext === '' && file.indexOf(root) === 0) { // 如果是目录,校验路径 matchFiles.push(files.splice(index, 1)[0]); } else if (_ext !== '' && (file === root || file === "".concat(root, ".map"))) { // 如果是文件,校验是否为 xxx.js 和 xxx.js.map matchFiles.push(files.splice(index, 1)[0]); } } pkgRes.push({ name: name, matchFiles: matchFiles }); }); // 打各个分包 var rpkPromise = pkgRes.map(function (_ref2) {var name = _ref2.name,matchFiles = _ref2.matchFiles; return (0, _rpk["default"])("".concat(name).concat(_constanst.RPK), matchFiles, paths.BUILD, paths.TEMP, signFile); }); var promiseArr = [(0, _rpk["default"])("".concat(_constanst.MAIN).concat(_constanst.RPK), files, paths.BUILD, paths.TEMP, signFile, manifest)]; // 分包都打好后,连原整包一起打一个整包 _promise["default"].all([].concat((0, _toConsumableArray2["default"])(rpkPromise), promiseArr)).then(function () { (0, _rpk["default"])("".concat(packageName).concat(ext), (0, _readdir["default"])(paths.TEMP), paths.TEMP, paths.DIST, signFile).then(function () { resolve(); }); }); } }); }); } }]);}();var _default = exports["default"] = ZipWebpackPlugin;