繁体   English   中英

webpack 4 uglifyjs无法缩小和压缩

[英]webpack 4 uglifyjs not minifying and compressing

我正在使用webpack 4,不确定我的代码是否被压缩和压缩了。 我也在使用React。

我的第一个问题是在webpack plugin属性或optimization属性中使用Webpack UglifyJS插件。 当我使用plugin属性时,它似乎至少压缩了但没有压缩到一行。 我仍然不确定它是否会缩小。 当我使用optimization它甚至不会压缩。 当我查看捆绑的js文件时,似乎正在捆绑诸如node_modules类的webpack

//与plugin一起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}

这是缩小吗?

Webpack 4默认在production模式下进行优化和缩小。

因此,如果我的猜测正确,那么您的配置就是development配置。

您可以删除您的显式UglifyJsPlugin定义并将mode设置为production ,Webpack将处理所有事情。

mode: 'production',
plugins: [...],
optimization: ...

您可以根据需要自定义优化。 但是将模式设置为production将产生预期的结果。

更多信息在这里

Webpack 4模式的用法

我也面临着同样的问题。 在将模式配置值提供为生产后,它开始工作。

module.exports = {
    // webpack config
    mode: process.env.NODE_ENV || 'development',
};

// command NODE_ENV=production webpack

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM