Node.js 网页包不再缩小捆绑包
我正在编写一个npm模块,它通过node vs cli运行webpack编译器。我已经有一段时间没有测试我的构建功能了,因为它正在工作,但我最近运行了它,而且我似乎无法让webpack缩小捆绑包js。对我的节点、网页包和一些依赖项版本进行了一些小的更新,但没有重大的升级&没有破坏性的更改。 我一直在竭尽全力想让这一切重新开始,我正在向社区伸出援手,让我保持清醒 一切似乎都很好,只有缩小似乎停止了工作。优化对象是作为此故障排除的一部分添加的,并且在没有以前的问题的情况下可以正常工作 假设配置看起来正常,网页包或节点中是否有任何新内容可能会阻止此操作?我被难住了 网页包配置Node.js 网页包不再缩小捆绑包,node.js,webpack,minify,bundling-and-minification,Node.js,Webpack,Minify,Bundling And Minification,我正在编写一个npm模块,它通过node vs cli运行webpack编译器。我已经有一段时间没有测试我的构建功能了,因为它正在工作,但我最近运行了它,而且我似乎无法让webpack缩小捆绑包js。对我的节点、网页包和一些依赖项版本进行了一些小的更新,但没有重大的升级&没有破坏性的更改。 我一直在竭尽全力想让这一切重新开始,我正在向社区伸出援手,让我保持清醒 一切似乎都很好,只有缩小似乎停止了工作。优化对象是作为此故障排除的一部分添加的,并且在没有以前的问题的情况下可以正常工作 假设配置看起来
({
devtool: 'source-map',
entry: '/foo.js'
externals: [nodeExternals()],
mode: 'production',
target: 'web',
module: {
rules: [
{
test: /\.coffee$/,
use: [
{
loader: 'babel-loader'
},
{
loader: 'coffee-loader'
}
]
},
{
test: /\.js$/,
use: [
{
loader: 'babel-loader'
}
]
},
{
test: /\.(sass|css)$/,
use: [
{
loader: Extract.loader,
options: {
sourceMap: true
}
},
{
loader: 'css-loader',
options: {
sourceMap: true
}
},
{
loader: 'sass-loader',
options: {
sourceMap: true
}
}
]
}
]
},
optimization: {
minimize: true,
noEmitOnErrors: true
},
output: {
filename: 'project_1.0.0.js',
path: '/build'
},
plugins: [
new Write,
new Extract({
filename: 'project_1.0.0.css'
})
],
resolve: {
modules: ['node_modules']
}
});
更新:找到解决方案
该问题是由output.filename的扩展名
.jss
引起的。将其更新为just.js
修复了该问题。然而,在我看来,这仍然是一个奇怪的结果。如果我好奇的话,我可能会发布另一个更新,解释webpack的行为我怀疑,既然您手动添加了优化
部分,那么您现在也需要手动定义最小化
属性。试着这样做:
const TerserPlugin = require('terser-webpack-plugin');
// ...
{
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
parse: {
ecma: 8
},
compress: {
ecma: 5,
warnings: false,
comparisons: false,
inline: 2
},
mangle: {
safari10: true
},
output: {
ecma: 5,
comments: false,
ascii_only: true
}
},
parallel: true,
cache: true,
sourceMap: true
})
];
}
}
因此,在为stack overflow post模拟webpack config js对象的过程中(我为一些值提供了一些变量和函数),我注意到对于output.filename,我使用了
project.js
,而不是project.js
。我把它和提取插件文件名混淆了,并做了一个js/css混合扩展。。。当我将其更正为.js时,它现在又可以工作了。。。这很好。。。但是
为什么会打破它?显然,您不能只创建一个包含您想要的任何扩展的包。。。但是为什么它不会抛出错误,为什么缩小是唯一不起作用的事情。。。这些都是更多的反问句,但我内心的程序员想弄清楚原因。。看起来做它正在做的事情需要额外的工作
@感谢您抽出时间回复。如果我没有在那里格式化缩进以尝试您的代码,我不确定我会捕捉到这一点。:)