UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

107 lines (99 loc) 7.07 kB
"use strict";var _typeof = require("@babel/runtime-corejs2/helpers/typeof");var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");_Object$defineProperty(exports, "__esModule", { value: true });exports["default"] = exConfig;var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty")); var _fs = _interopRequireDefault(require("fs")); var _path = _interopRequireDefault(require("path")); var _copyWebpackPlugin = _interopRequireDefault(require("copy-webpack-plugin")); var paths = _interopRequireWildcard(require("./paths.js")); var _core = _interopRequireDefault(require("@babel/core"));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;}function ownKeys(e, r) {var t = _Object$keys(e);if (_Object$getOwnPropertySymbols) {var o = _Object$getOwnPropertySymbols(e);r && (o = o.filter(function (r) {return _Object$getOwnPropertyDescriptor(e, r).enumerable;})), t.push.apply(t, o);}return t;}function _objectSpread(e) {for (var r = 1; r < arguments.length; r++) {var t = null != arguments[r] ? arguments[r] : {};r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {(0, _defineProperty2["default"])(e, r, t[r]);}) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {_Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r));});}return e;} /** * 获取小游戏工程目录的minigame.config.js的配置 * @param {Object} webpackConfig webpack的配置文件 * @param {Object} options 提供一些参数 * @param {String} options.context 小游戏工程目录 * @param {String} options.src 小游戏工程src目录 * @param {String} options.build 小游戏工程的编译目录 */ function exConfig(webpackConfig, options) { // 如果小游戏工程目录存在minigame.config.js,就以此为准,没有再判断webpack.config.js if (_fs["default"].existsSync(paths.PROJECT_CONFIG)) { try { var _require = require(paths.PROJECT_CONFIG)(options),_require$externals = _require.externals,externals = _require$externals === void 0 ? [] : _require$externals,_require$copyFile = _require.copyFile,copyFile = _require$copyFile === void 0 ? [] : _require$copyFile; var exts = webpackConfig.externals || {}; var copys = []; externals.map(function (e) { // 把 externals添加到webpack配置中去 exts[e.module_name] = "commonjs ".concat(e.module_path); var inputFilePath = _path["default"].join(options.context, e.module_from); var outputFilePath = _path["default"].join(options.build, e.module_path); if (!e.module_from.endsWith('engine/js/main.js')) { copys.push({ from: _path["default"].join(options.context, e.module_from), to: _path["default"].join(options.build, e.module_path) }); return; } try { // babel将src下内容转换下,到dist下 if (!_fs["default"].existsSync(options.build)) { _fs["default"].mkdirSync(options.build); } var code = _fs["default"].readFileSync(inputFilePath, 'utf8'); var result = _core["default"].transformSync(code, { filename: e.module_from, cwd: __dirname, // 设置工作目录 presets: ['@babel/preset-env'], plugins: [ ['@babel/plugin-transform-runtime', { // Optionally configure helpers to false or use the corejs option helpers: false // This stops adding runtime helpers // corejs: false }]] }); // babel将src下内容转换下,到dist下 if (!_fs["default"].existsSync(_path["default"].dirname(outputFilePath))) { _fs["default"].mkdirSync(_path["default"].dirname(outputFilePath), { recursive: true }); } _fs["default"].writeFileSync(outputFilePath, result.code); console.log("Successfully transpiled ".concat(inputFilePath, " to ").concat(outputFilePath)); } catch (error) { console.error("Error code: ".concat(error.message, " ").concat(inputFilePath, " to ").concat(outputFilePath)); // 把 externals添加到webpack配置中去 copys.push({ from: _path["default"].join(options.context, e.module_from), to: _path["default"].join(options.build, e.module_path) }); } }); if (copys.length) { webpackConfig.externals = exts; // 把配置的 externals 文件 拷贝到 build目录 webpackConfig.plugins.push(new _copyWebpackPlugin["default"]({ patterns: copys.map(function (config) {return _objectSpread({}, config);} ) })); } // 复制文件到build的逻辑,没有被代码引入,但是打包需要打的文件路径 var copyFiles = copyFile.map(function (e) { return { from: _path["default"].join(options.context, e.module_from), to: _path["default"].join(options.build, e.module_path) }; }); if (copyFiles.length) { webpackConfig.plugins.push(new _copyWebpackPlugin["default"]({ patterns: copyFiles.map(function (config) {return _objectSpread({}, config);} ) })); } } catch (e) { console.error(e); } } else if (_fs["default"].existsSync(paths.PROJECT_WEBPACK_CONFIG)) { try { require(paths.PROJECT_WEBPACK_CONFIG).postHook(webpackConfig, options); } catch (e) { console.error(e); } } }