2015-04-29 16 views
9

Chcę zminimalizować mój kod JavaScript do produkcji. Nie chcę jednak minimalizować kodu dostawców, ponieważ mają już wersję minimalizującą.Minimalizuj tylko jeden fragment pakietu Webpack

Mój aktualny webpack.config.js dzieli kod wyjściowy na dwie części.

module.exports = { 

    entry: { 
     vendor: ['jquery','angular'], 
     app: ['./Client/app.start.js'] 
    }, 
    output: { 
     filename: 'bundle.js', 
     path: __dirname 
    }, 

    resolve : { 
     alias : { 
      'angular' : 'angular/angular.min.js', 
      'jquery' : 'jquery/dist/jquery.min.js' 
     } 
    }, 

    plugins: [ 
     new webpack.optimize.CommonsChunkPlugin("vendor", "vendor.bundle.js"), 
     new webpack.optimize.UglifyJsPlugin({minimize: true}) 
    ] 
} 

Kiedy biegnę >> WebPack, oba kawałki ("bundle.js" i "vendor.bundle.js") są zminimalizowane. Jak mogę skonfigurować Webpack, aby minimalizować tylko "bundle.js"?

Dzięki

Odpowiedz

1

Zazwyczaj trzeba różne configs (jeden z zeszpecić i drugi bez), do produkcji i rozwoju, by zminimalizować tylko w produkcji, jeśli to, co chcesz.

Prawdopodobnie już to wiesz, ale dobrze jest być dokładnym. To, czego być może nie wiesz, to to, że pakiet sieciowy działa lepiej i zaleca się używanie nietkniętego kodu i pozwolić, aby pakiet sieci Web wykonał swoje zadanie. Nie wierzę, że uglifyJsPlugin jest w stanie celować w porcje, może jest inna wtyczka, która może to zrobić, ale nie jestem świadomy.

Na marginesie nie musisz się martwić o podwójną minifikację, dodaje ona niewielki efekt, biorąc pod uwagę, że jest to środowisko produkcyjne i że nie zmienia się z minuty na minutę.

4

Jeśli z jakiegoś powodu naprawdę chcesz zminimalizować tylko jeden pakiet, możesz użyć opcji test w UglifyJsPlugin. Użyj nazwy pakietu i nie testuj pojedynczych modułów za pomocą wyrażenia regularnego, ponieważ kiedy kod jest pobierany przez UglifyJsPlugin, jest już dołączony.

new webpack.optimize.UglifyJsPlugin({ 
    compress: { warnings: false }, 
    test: /(vendor.bundle.js\.js)+/i 
}) 

Zobacz docs: https://webpack.github.io/docs/list-of-plugins.html#uglifyjsplugin

test, to wyklucza (RegExp | Array): skonfigurować filtrowanie przetwarzanych plików (domyślnie: Test: /.js($|\?)/i)