@honor-minigame/cli
Version:
honor minigame pack cli
83 lines (75 loc) • 2.67 kB
JavaScript
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
}]
}))
}
}