Webpack extract-text-webpack-plugin 和 css-loader 缩小
Webpack extract-text-webpack-plugin and css-loader minification
我在最小化 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}
您可以使用 optimize-css-assets-webpack-plugin,它的创建正是为了解决这个问题。
plugins: [
new ExtractTextPlugin("styles.css"),
new OptimizeCssAssetsPlugin()
]
对于 css 压缩,您可以使用带有 "minimize" 选项的 webpack 的 CSS-loader。它解决了我的问题:
webpack.config.js
...
module: {
rules: [
{
test: /\.css$/,
use: [{
loader: "css-loader",
options: {
minimize: true
}
}
},
]
},
...
Paul 的回答已停止使用 1.0.0 Minimize 中的重大更改,并且已从选项中删除了一些其他选项。
推荐的解决方案是使用optimize-cssnano-plugin。这个插件比 optimize-css-assets-webpack-plugin.
更适合源映射
示例:
plugins: [
new ExtractTextPlugin("styles.css"),
new OptimizeCssnanoPlugin({
sourceMap: nextSourceMap,
cssnanoOptions: {
preset: ['default', {
discardComments: {
removeAll: true,
},
}],
},
}),
]
我在最小化 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}
您可以使用 optimize-css-assets-webpack-plugin,它的创建正是为了解决这个问题。
plugins: [
new ExtractTextPlugin("styles.css"),
new OptimizeCssAssetsPlugin()
]
对于 css 压缩,您可以使用带有 "minimize" 选项的 webpack 的 CSS-loader。它解决了我的问题:
webpack.config.js
...
module: {
rules: [
{
test: /\.css$/,
use: [{
loader: "css-loader",
options: {
minimize: true
}
}
},
]
},
...
Paul 的回答已停止使用 1.0.0 Minimize 中的重大更改,并且已从选项中删除了一些其他选项。
推荐的解决方案是使用optimize-cssnano-plugin。这个插件比 optimize-css-assets-webpack-plugin.
更适合源映射示例:
plugins: [
new ExtractTextPlugin("styles.css"),
new OptimizeCssnanoPlugin({
sourceMap: nextSourceMap,
cssnanoOptions: {
preset: ['default', {
discardComments: {
removeAll: true,
},
}],
},
}),
]