2015-12-06 17 views
30

mam problemu minimalizacji wyjście plik CSS przez-text-WebPACK-plugin ekstraktuWebPACK wyciąg-text-WebPack-plugin i CSS-ładowarka minifikacji

/* webpack.config.js */ 
... 
loader: [{test: /\.css$/, loader: ExtractTextPlugin.extract('css?minimize')}] 
... 
plugins: [new ExtractTextPlugin("styles.css")] 
... 

/* test.js */ 
require('./file1.css') 
/* file1.css */ 
@import './file2.css'; 
body {color: green;} 
body {font-size: 1rem;} 

/* file2.css */ 
body {border: 1px solid;} 
body {background: purple;} 

/* the output styles.css */ 
body{color:green;font-size:1rem}body{border:1px solid;background:purple} 

W wyświetlonym styles.css , istnieją 2 znaczniki ciała. Wygląda na to, że minifikacje są wykonywane w pliku (wewnątrz pliku1.css i wewnątrz pliku2.css), ale nie wtedy, gdy oba pliki są połączone i wyodrębnione do ostatecznego pliku styles.css.

W jaki sposób można zminimalizować końcowy plik style.css? Więc wyjście jest

body{color:green;font-size:1rem;border:1px solid;background:purple} 

Odpowiedz

44

Można użyć optimize-css-assets-webpack-plugin, który został stworzony, aby rozwiązać ten problem dokładnie.

plugins: [ 
    new ExtractTextPlugin("styles.css"), 
    new OptimizeCssAssetsPlugin() 
] 
+1

Testuję przed użyciem samodzielnego "cssnano" po pakiecie sieci Web. Jeśli jest ekwiwalentny, myślę, że będzie to najlepsza odpowiedź, a ja nagrodzę cię nagrodą. Dzięki za informację. Z ciekawości, projekt powstał 4 dni temu (dla odniesienia, 8 stycznia 2016 r.), Jak go znalazłeś? – Matt

+0

Przeszukałem ten problem, a co dziwne, ten projekt był na pierwszej stronie Google. Musiałem użyć właściwego zestawu słów kluczowych :) –

+0

Mogę potwierdzić, że jest to taki sam wynik netto jak uruchomienie 'cssnano' na wygenerowanym pliku' bundle.css' ... ale bezpośrednio w pakiecie sieciowym. To doskonała wiadomość! Bounty przyznane. – Matt

2

Aby zmapować css, możesz użyć CSS-loader z pakietu Webpack z opcją "minimalizuj". Rozwiązał problem w moim przypadku:

webpack.config.js 

... 
module: { 
    rules: [ 
     { 
     test: /\.css$/, 
     use: [{ 
      loader: "css-loader", 
      options: { 
       minimize: true 
      } 
     } 
     }, 
    ] 
}, 
... 
+0

Rozwiązało to dla mnie! A może łatwiejsze rozwiązanie zamiast instalowania kolejnej wtyczki. – Olly

Powiązane problemy