使用了 let 变量之后 webpack.optimize.UglifyJsPlugin 就压缩不了代码了吗?

webpack.config.js

var webpack = require('webpack');
var path = require('path');

module.exports = {
    entry: './test.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'my-first-webpack.bundle.js',
        library: "MyLibrary",
        libraryTarget: 'umd',
        umdNamedDefine: true
    },
    module: {
        rules: [{
            test: /\.js$/,
            loader: 'babel-loader'
        }]
    },
    plugins: [
        new webpack.optimize.UglifyJsPlugin({
            beautify: false,
            comments: false,
            compress: {
                warnings: false,
                drop_console: true,
                collapse_vars: true,
                reduce_vars: true,
            }
        })
    ]
}

test.js

let aLooooongName = 'test webpack';
console.log(123123123123123123)
// zhushihasdifhaisdhfih
if (true) {
    aLooooongName = 'true value'
} else {
    aLooooongName = 'false value'
}

export default aLooooongName;

结果经过webpack打包出来的文件并没有压缩,但是将test.js改成以下样子之后就可以压缩了,是什么情况?

var aLooooongName = 'test webpack';
console.log(123123123123123123)
// zhushihasdifhaisdhfih
if (true) {
    aLooooongName = 'true value'
} else {
    aLooooongName = 'false value'
}

export default aLooooongName;

也就将一个let变成了var了,就能压缩了什么情况???
求助!!!!

阅读 8.7k
3 个回答

uglify不支持压缩ES6语法

忘了写 .babelrc 了,写了 .babelrc 这个后就正常了。
不过看来webpack.optimize.UglifyJsPlugin是只能压缩es5的代码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进