增加WebPack混淆并打包
This commit is contained in:
46
webpack.config.js
Normal file
46
webpack.config.js
Normal file
@@ -0,0 +1,46 @@
|
||||
const path = require('path');
|
||||
const NodeExternals = require('webpack-node-externals');
|
||||
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
||||
const WebpackObfuscator = require('webpack-obfuscator');
|
||||
|
||||
module.exports = {
|
||||
target: 'node',
|
||||
entry: path.resolve(__dirname, 'app.js'),
|
||||
mode: 'production',
|
||||
output: {
|
||||
path: path.resolve(__dirname, 'dist'),
|
||||
filename: 'server.js',
|
||||
},
|
||||
// 不打包 node_modules,减少体积并避免原生模块问题
|
||||
externals: [NodeExternals()],
|
||||
resolve: {
|
||||
extensions: ['.js'],
|
||||
},
|
||||
// 保持 Node 的 __dirname/__filename 语义,指向 dist 目录
|
||||
node: {
|
||||
__dirname: false,
|
||||
__filename: false,
|
||||
},
|
||||
// 这里不使用 source-map,以免暴露过多信息
|
||||
plugins: [
|
||||
// 将运行期需要的资产复制到 dist 根目录,以适配打包后 __dirname 指向 dist
|
||||
new CopyWebpackPlugin({
|
||||
patterns: [
|
||||
{ from: path.resolve(__dirname, 'farmeworkapi/.env'), to: path.resolve(__dirname, 'dist/.env'), toType: 'file', noErrorOnMissing: true },
|
||||
{ from: path.resolve(__dirname, 'farmeworkapi/pub.pem'), to: path.resolve(__dirname, 'dist/pub.pem'), noErrorOnMissing: true },
|
||||
],
|
||||
}),
|
||||
// 在打包产物上进行混淆
|
||||
new WebpackObfuscator({
|
||||
compact: true,
|
||||
controlFlowFlattening: false, // 为稳定性,默认关闭;如需更强混淆可开启
|
||||
deadCodeInjection: false,
|
||||
stringArray: true,
|
||||
rotateStringArray: true,
|
||||
stringArrayEncoding: ['rc4'],
|
||||
stringArrayThreshold: 0.75,
|
||||
disableConsoleOutput: false,
|
||||
}),
|
||||
],
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user