ksh*_*ine 6 javascript typescript webpack
我发现了很多关于 webpack 中发生的“意外字符‘@’”的内容,但没有一个与externalswebpack 选项的错误具体相关或有帮助。我以前用过这个,无论有没有@符号,都没有任何问题,所以我不知道为什么 webpack 现在变得暴躁。
const TerserPlugin = require('terser-webpack-plugin');
module.exports = () => {
return {
mode: 'production',
target: 'node',
entry: './build.ts',
output: {
path: __dirname,
filename: `build.js`
},
node: {
__dirname: false,
__filename: false,
},
resolve: {
extensions: ['.ts', '.js'],
mainFields: ['es2015', 'module', 'main', 'browser']
},
module: {
rules: [
{
test: /\.ts$/i,
loader: 'ts-loader',
options: { configFile: 'tsconfig-build.json' },
exclude: [/\/node_modules\//]
}
]
},
externals: ['chalk', '@tubular/util'],
optimization: {
minimize: true,
minimizer: [new TerserPlugin({
terserOptions: {
mangle: false,
output: { max_line_len: 511 }
}
})],
},
};
};
Run Code Online (Sandbox Code Playgroud)
@ 是我想要排除的包名称的必要部分,而且我之前已经排除过此类包,所以这既神秘又烦人。
有人知道这里出了什么问题吗?
我找到了答案,但这肯定不是我正在寻找的答案。
如果我使用该包webpack-node-externals,我可以node_modules像这样外部化所有内容:
const nodeExternals = require('webpack-node-externals');
// ...
externalsPresets: { node: true },
externals: [nodeExternals()],
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,排除所有节点外部恰好很好,因此webpack-node-externals解决了我眼前的问题。但如果我想更有选择性,并且想要排除名称中带有@的包,我仍然有一个谜团。
| 归档时间: |
|
| 查看次数: |
2450 次 |
| 最近记录: |