UNPKG

@honor-minigame/cli

Version:

honor minigame pack cli

83 lines (75 loc) 2.76 kB
import fs from 'fs' import path from 'path' import CopyPlugin from 'copy-webpack-plugin' import * as paths from './paths.js' import prettierCode from '../config/pretty-loader.js' import { require } from './require.js' /** * 获取小游戏工程目录的minigame.config.js的配置 * @param {Object} webpackConfig webpack的配置文件 * @param {Object} options 提供一些参数 * @param {String} options.context 小游戏工程目录 * @param {String} options.src 小游戏工程src目录 * @param {String} options.build 小游戏工程的编译目录 */ export default function exConfig(webpackConfig, options) { // 如果小游戏工程目录存在minigame.config.js,就以此为准,没有再判断webpack.config.js if (fs.existsSync(paths.PROJECT_CONFIG)) { try { const { externals = [], copyFile = [] } = require(paths.PROJECT_CONFIG)(options) const exts = webpackConfig.externals || {} const copys = [] externals.map(e => { // 把 externals添加到webpack配置中去 exts[e.module_name] = `commonjs ${e.module_path}` const inputFilePath = path.join(options.context, e.module_from) prettierCode(inputFilePath) copys.push({ from: path.join(options.context, e.module_from), to: path.join(options.build, e.module_path) }) }) if (copys.length) { webpackConfig.externals = exts // 把配置的 externals 文件 拷贝到 build目录 webpackConfig.plugins.push(new CopyPlugin({ patterns: copys.map(config => ({ ...config })) })) } // 复制文件到build的逻辑,没有被代码引入,但是打包需要打的文件路径 const copyFiles = copyFile.map(e => { prettierCode(path.join(options.context, e.module_from)) return { from: path.join(options.context, e.module_from), to: path.join(options.build, e.module_path) } }) if (copyFiles.length) { webpackConfig.plugins.push(new CopyPlugin({ patterns: copyFiles.map(config => ({ ...config })) })) } } catch (e) { console.error(e) } } else if (fs.existsSync(paths.PROJECT_WEBPACK_CONFIG)) { try { require(paths.PROJECT_WEBPACK_CONFIG).postHook(webpackConfig, options) } catch (e) { console.error(e) } } // 解决cocos 引擎插件2.3.4的问题 if (fs.existsSync(paths.PLUGIN_COCOS)) { webpackConfig.plugins.push(new CopyPlugin({ patterns: [{ from: paths.PLUGIN_COCOS, to: paths.PLUGIN_COCOS_BUILD }] })) } }