我正在使用webpack 4,不确定我的代码是否被压缩和压缩了。我也在使用React。
我的第一个问题是在webpack的plugin
属性或optimization
属性中使用Webpack UglifyJS插件。当我使用plugin
属性时,它似乎至少压缩了但没有压缩到一行。我仍然不确定它是否会缩小。当我使用optimization
时,它甚至不会压缩。当我查看捆绑的js文件时,似乎正在捆绑node_modules
中的东西,例如webpack
。
//与plugin
module.exports = {
...
plugins: [new UglifyJsPlugin({
test: /\.js$/,
exclude: /node_modules/,
sourceMap: true,
uglifyOptions: {
compress: {},
mangle: true,
}
}],
//不适用于optimization
module.exports = {
...
optimization: {
minimize: true,
minimizer: [new UglifyJsPlugin({
test: /\.js$/,
exclude: /node_modules/,
sourceMap: true,
uglifyOptions: {
compress: {},
mangle: true,
}
}],
}
在第一个示例中,代码至少被压缩,但没有压缩成一行。
//示例
!*** ./node_modules/scheduler/index.js ***!
\*****************************************/
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nif (false) {} else {\n...
!*** ./node_modules/scheduler/tracing.js ***!
\*******************************************/
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nif (false) {...
也不确定是否将其缩小。我在我的React Component中写了一个函数
someFunc(one, two) {
return one + two
}
根据npm uglifyjs文档,应该将其缩小为
someFunc(a, b) { \n return a+b\n}
但是它被输出为
someFunc(one, two) { \n return one + two\n}
这在缩小吗?
答案 0 :(得分:2)
默认情况下,Webpack 4在production
模式下进行优化和缩小。
因此,如果我的猜测正确,那么您的配置就是development
配置。
您可以删除您的显式UglifyJsPlugin定义并将mode
设置为production
,然后Webpack会处理所有事情。
mode: 'production',
plugins: [...],
optimization: ...
您可以根据需要自定义优化。但是将模式设置为production
会产生预期的结果。
更多信息在这里
答案 1 :(得分:0)
我也面临着同样的问题。在将模式配置值提供为生产后,它开始工作。
module.exports = {
// webpack config
mode: process.env.NODE_ENV || 'development',
};
// command NODE_ENV=production webpack