安装 webpack 和 glob
npm install webpack webpack-cli --save-dev
npm install glob --save-dev
webpack.config.js
const path = require('path');
const glob = require('glob');
const TerserPlugin = require("terser-webpack-plugin");
// 目标js
var allJsFiles = glob.sync('./Assets/Res/Scripts/**/*.js');
var logicJsFiles = [];
for (var i = 0; i < allJsFiles.length; i++) {
if (allJsFiles[i].indexOf("/GameInit/") > -1) continue;
logicJsFiles.push(allJsFiles[i]);
}
module.exports = {
// mode: 'development',
mode: 'production',
// entry: glob.sync('./Assets/Res/Scripts/**/*.js'),
entry: {
GameInit: './Assets/Res/Scripts/GameInit/GameInit.js', // 入口文件,会包含 ImportModule
GameLogic: logicJsFiles, // 其他所有js文件
},
output: {
path: path.resolve(__dirname, 'Assets/Res/JS'),
filename: '[name]_bundle.js',
},
optimization: {
minimize: true,
minimizer: [new TerserPlugin({
terserOptions: {
keep_classnames: true, // 保留类名
},
})],
},
externals: {
csharp: "commonjs2 csharp",
puerts: "commonjs2 puerts",
path: "commonjs2 path",
fs: "commonjs2 fs",
// 定义一些 require 的外部文件
"csharp.UnityEngine": "commonjs2 csharp.UnityEngine",
"csharp.FairyGUI": "commonjs2 csharp.FairyGUI",
"../JSLibs/sproto/sproto": "commonjs2 ../JSLibs/sproto/sproto",
"../JSLibs/sproto/utils": "commonjs2 ../JSLibs/sproto/utils",
},
};
执行,生成 ***_bundle.js
npx webpack