gpt4 book ai didi

css - 如何在 sass-loader 和 ExtractTextPlugin 完成后运行 POSTCSS?

转载 作者:技术小花猫 更新时间:2023-10-29 10:33:09 28 4
gpt4 key购买 nike

我想弄清楚如何在我的最终输出 css 文件上运行 postcss。

'strict';

const path = require('path');
const webpack = require('webpack');
const StatsPlugin = require('stats-webpack-plugin');

/* POSTCSS Optimizations of CSS files */
const clean = require('postcss-clean');
const colorMin = require('postcss-colormin');
const discardDuplicates = require('postcss-discard-duplicates');
const discardEmpty = require('postcss-discard-empty');
const mergeRules = require('postcss-merge-rules');
const mergeLonghand = require('postcss-merge-longhand');
const minifyFonts = require('postcss-minify-font-values');
const orderedValues = require('postcss-ordered-values');
const uniqueSelectors = require('postcss-unique-selectors');

/* EXTRACT CSS for optimization and parallel loading */
const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {
entry: './src/index',
output: {
path: path.join(__dirname, 'dist'),
filename: '[name].js',
chunkFilename: '[id].bundle.js',
publicPath: '/dist/',
soureMapFilename: '[file].map'
},
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.NoErrorsPlugin(),
new StatsPlugin('stats.json'),
new ExtractTextPlugin('assets/css/[name].css?[hash]-[chunkhash]-[contenthash]-[name]', {
disable: false,
allChunks: true
})
],
node: {
net: 'empty',
tls: 'empty',
dns: 'empty'
},
module: {
loaders: [{
test: /\.js$/,
loaders: ['babel'],
exclude: /node_modules/,
include: __dirname
},
{
test: /\.scss$/i,
loader: ExtractTextPlugin.extract('style', ['css', 'postcss', 'sass'])
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract('style', ['css'])
},
{
test: /\.(eot|woff|woff2|ttf|svg|png|jpg)$/,
loader: 'url-loader?limit=30000&name=[name]-[hash].[ext]'
}]
},
postcss() {
return [mergeRules, mergeLonghand, colorMin, clean, discardEmpty,
orderedValues, minifyFonts, uniqueSelectors, discardDuplicates];
},
sassLoader: {
includePaths: [path.resolve(__dirname, './node_modules')]
}
};

我当前的配置可以很好地编译所有依赖的 SASS 并获取它和静态 CSS 导入并使用 ExtractTextPlugin 提取它们。

似乎我可以在 CSS block 上运行 POSTCSS 优化,但不能在最终产品上运行。这意味着我无法摆脱重复的 CSS 规则。

在 sass-loader 和 extractTextPlugin 发挥它们的魔力之后,如何在最终状态 CSS 文件上运行 POSTCSS?

最佳答案

我在使用 ExtractTextPlugin 进行类似设置时遇到了问题,我的问题在于我如何使用 ExtractTextPlugin 插件。

我只将它用于生产构建,这对我有用:

module: {
loaders: [
{ // styles
test: /\.scss$/,
include: [ path.join(__dirname, 'source/styles') ],
loader: ExtractTextPlugin.extract('style', ['css', 'postcss', 'sass'])
}
]
},

注意 ['css', 'postcss', 'sass'] 的数组。那是我所缺少的部分。该数组将首先解析,然后运行最终由插件提取的样式。

并且,在我使用的插件数组上 new ExtractTextPlugin('styles-[chunkhash].css')

关于css - 如何在 sass-loader 和 ExtractTextPlugin 完成后运行 POSTCSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122012/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com