我在使用extract-text-webpack-plugin
最小化css文件输出时遇到问题/* 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}
在生成的styles.css中,有2个body标签。似乎缩小是在文件中执行的(在file1.css和file2.css中),但是当两个文件组合并提取到最终的styles.css中时不会。
如何在最终的style.css上进行缩小?所以输出是
body{color:green;font-size:1rem;border:1px solid;background:purple}
答案 0 :(得分:48)
您可以使用optimize-css-assets-webpack-plugin,这是为了解决这个问题而创建的。
plugins: [
new ExtractTextPlugin("styles.css"),
new OptimizeCssAssetsPlugin()
]
答案 1 :(得分:2)
对于css缩小,你可以使用webpack的CSS-loader和"最小化"选项。它解决了我的问题:
webpack.config.js
...
module: {
rules: [
{
test: /\.css$/,
use: [{
loader: "css-loader",
options: {
minimize: true
}
}
},
]
},
...
答案 2 :(得分:0)
Paul的答案已停止处理1.0.0最小化中的更改,并且其他一些选项已从选项中删除。
推荐的解决方案是使用optimize-cssnano-plugin。该插件与源地图相比,与optimize-css-assets-webpack-plugin配合使用效果更好。
示例:
plugins: [
new ExtractTextPlugin("styles.css"),
new OptimizeCssnanoPlugin({
sourceMap: nextSourceMap,
cssnanoOptions: {
preset: ['default', {
discardComments: {
removeAll: true,
},
}],
},
}),
]