UNPKG

@quick-game/cli

Version:

Command line interface for rapid qg development

98 lines (91 loc) 4.14 kB
"use strict";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 _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));var _fs = _interopRequireDefault(require("fs")); var _manifest = require("../lib/manifest"); var paths = _interopRequireWildcard(require("../lib/paths.js")); var _constanst = require("../lib/constanst.js"); var _checkCompressionPlugin = _interopRequireDefault(require("../lib/checkCompressionPlugin"));function _getRequireWildcardCache(e) {if ("function" != typeof _WeakMap) return null;var r = new _WeakMap(),t = new _WeakMap();return (_getRequireWildcardCache = function (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;} const CompressionPlugin = require('compression-webpack-plugin'); const webglConfig = (0, _manifest.get)(); const enableBr = webglConfig.enableBrotli; console.log(`${enableBr ? '[已' : '[未'}开启wasm br压缩]`);var _default = exports.default = { mode: 'none', // target: 'node', context: paths.PROJECT_PATH, output: { filename: '[name].js', path: paths.BUILD, globalObject: 'this', publicPath: '' }, // amd: false, module: { rules: [ { test: /\.js$/, include: [paths.SRC], exclude: (filePath) => { return ( filePath.includes('node_modules') || filePath.includes('@babel')); } }, { test: /^(?!.*\.(js|json)$).*$/i, use: [ { loader: require.resolve('file-loader'), options: { context: paths.SRC, esModule: false, name(resourcePath, resourceQuery) { return '[path][name].[ext]'; } } }] }], exprContextRecursive: true, unknownContextCritical: true, unknownContextRecursive: true, wrappedContextRecursive: true, noParse: /\.json$/ }, resolve: { extensions: _constanst.FILE_EXT, modules: [ paths.SRC, 'node_modules'], preferRelative: true, alias: { // 如果有动态导入的模块,可以使用该方法添加 '@qgame/adapter': require.resolve('@qgame/adapter', { paths: [__dirname] }) } }, ignoreWarnings: [ (warning) => warning.message.includes('DEP_WEBPACK_COMPILATION_ASSETS')], plugins: enableBr ? [ new CompressionPlugin({ filename: '[path][base].br', algorithm: 'brotliCompress', test: /\.wasm\.code\.unityweb$/, //精确匹配 `.wasm.code.unityweb` compressionOptions: { level: 11 // 最大压缩 }, threshold: 0, minRatio: 0.8, deleteOriginalAssets: true // 是否删除原始 }), // 启用压缩检查插件,添加回调处理 new _checkCompressionPlugin.default(({ compressed, files }) => { if (!compressed) { console.error('❌ wasm br压缩失败或没有符合的[.wasm.code.unityweb]后缀条件的wasm文件!'); webglConfig.enableBrotli = "-1"; } else { webglConfig.enableBrotli = "1"; console.log(`✅ wasm br压缩成功,共压缩 ${files.length} 个文件`); } _fs.default.writeFileSync( paths.MANIFEST, (0, _stringify.default)(webglConfig, null, 2), // 缩进 2 个空格 'utf-8' ); })] : [] };