Próbuję dowiedzieć się, jak uruchomić postcss na moim ostatecznym pliku wyjściowego css.Jak uruchomić POSTCSS AFTER sass-loader i ExtractTextPlugin?
'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')]
}
};
Moja obecna konfiguracja działa dobrze na kompilacji wszystkich zależnej SASS i biorąc to i statycznych importu CSS i wydobywania ich przy użyciu ExtractTextPlugin.
Wygląda na to, że mogę uruchomić optymalizacje POSTCSS na porcjach CSS, ale nie na produkcie końcowym. Oznacza to, że nie mogę pozbyć się zduplikowanych reguł CSS.
Jak uruchomić POSTCSS na pliku CSS stanu końcowego PO sass-loader i extractTextPlugin pracowały ich magii?
Możesz przenieść loadery 'postcss' do' module.postLoaders' (https://webpack.github.io/docs/configuration.html#module-preloaders-module-postloaders), ale nie jestem pewien, czy to będzie pracować z 'ExtractTextPlugin'. –
Niestety, wygląda na to, że nie działa. Zakładam, że ze względu na sposób działania ładowarek, zanim dotarłem do PostLoadera, aby wykonać POSTCSS, nie ma już żadnych CSS w plikach do manipulowania i nie ma możliwości wskazania postcsów do nowo scalonego pliku CSS/files w dist. Nie sądzę, że ładowarki mogą po prostu wskazywać dowolny dowolny plik w systemie plików, myślę, że musi on być podłączony do punktu wejścia JS. – nhavar