2015-12-06 4 views
30

ich Problem habe die CSS-Datei ausgegeben durch den Extrakt-Text-webpack-Plugin minimiertWebpack Extrakt-Text-webpack-Plugin und CSS-loader minification

/* 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} 

Im resultierenden styles.css Es gibt 2 Body Tags. Es sieht so aus, als würden innerhalb einer Datei (innerhalb von file1.css und in file2.css) Verkleinerungen durchgeführt, aber nicht, wenn die beiden Dateien kombiniert und in die final styles.css extrahiert werden.

Wie kann die Minification in der final style.css durchgeführt werden? So ist der Ausgang

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

Antwort

44

ist, könnten Sie verwenden optimize-css-assets-webpack-plugin, die erstellt wurde, genau dieses Problem zu lösen.

+1

Wird Test gegen 'cssnano' Standalone nach Webpack. Wenn es gleichwertig ist, denke ich, es wird die beste Antwort sein, und ich werde Ihnen das Kopfgeld verleihen. Danke für die Information. Aus Neugier, das Projekt wurde vor 4 Tagen erstellt (als Referenz, 8. Januar 2016), wie hast du es gefunden? – Matt

+0

Ich googelte das Problem, und seltsamerweise war dieses Projekt auf der ersten Seite von Google. Ich muss den richtigen Satz von Schlüsselwörtern verwendet haben :) –

+0

Ich kann bestätigen, dass dies das gleiche Nettoergebnis ist wie das Ausführen von 'cssnano' auf der generierten' bundle.css' Datei ... aber direkt im Webpack. Das sind ausgezeichnete Nachrichten! Bounty ausgezeichnet – Matt

2

Für die CSS-Minification können Sie den CSS-Loader des Webpacks mit der Option "minimieren" verwenden. Es löste das Problem in meinem Fall:

webpack.config.js 

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

Das hat es für mich gelöst! Und vielleicht eine einfachere Lösung, anstatt ein anderes Plugin zu installieren. – Olly