1

有了这个使用 webpack-encore 的 webpack.config.js,并用 terser 缩小,我可以成功编译,但绝对没有任何东西被缩小。注释和完整的变量名称仍然存在。

var Encore = require('@symfony/webpack-encore');

const TerserPlugin = require('terser-webpack-plugin');

Encore
    // the project directory where compiled assets will be stored
    .setOutputPath('public/build/')
    .setPublicPath('/build')
    // the public path used by the web server to access the previous directory
    .cleanupOutputBeforeBuild()
    .enableSourceMaps(!Encore.isProduction())
    .enableReactPreset()
    .enableSassLoader()
    .enableLessLoader()
    .autoProvidejQuery()
    .disableSingleRuntimeChunk()

     .addEntry('app_prescription', [
         './assets/js/prescription/app_prescription.js'
     ])



    .addLoader({
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: "babel-loader?cacheDirectory"
    })

;


if( Encore.isProduction() ) {
    Encore.addPlugin(new TerserPlugin({parallel: true,cache:true}) );
}

module.exports = function(env) {

    Encore.enableVersioning();
    const config = Encore.getWebpackConfig() ;

    if( Encore.isProduction() ) {

        config.optimization = {
            minimizer: [new TerserPlugin({parallel: true,cache:true})]
        }
    }



    return config ;
}

这段代码有什么问题?

4

2 回答 2

1

对于在 2021 年及以后偶然发现此问题的每个人的迟到答案:

使用安可的configureTerserPlugin方法:

 Encore.configureTerserPlugin((options) => {
     options.cache = true;
     options.terserOptions = {
         output: {
             comments: false
         }
     }
 })
于 2021-06-22T08:58:39.060 回答
0

根据https://github.com/webpack-contrib/terser-webpack-plugin#extractcomments以避免生成*.LICENSE.txt文件,您应该使用此方法选项:

Encore.configureTerserPlugin(options => {
    options.extractComments = false;
});
于 2021-09-27T07:41:14.523 回答