如何使用TerserPlugin和webpack-encore进行缩小

时间:2019-06-28 16:33:33

标签: symfony symfony4 webpack-encore terser

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

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 ;
}

此代码有什么问题?

1 个答案:

答案 0 :(得分:0)

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

使用 encore 的 configureTerserPlugin 方法:

 Encore.configureTerserPlugin((options) => {
     options.cache = true;
     options.terserOptions = {
         output: {
             comments: false
         }
     }
 })