Files
est-api/webpack.config.js
2025-11-26 06:33:03 +00:00

47 lines
1.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
}),
],
};