web-dev-qa-db-fra.com

Impossible de réduire le code CSS avec webpack

Version Webpack: 4.16.3

Toute compilation est réussie.
Mon code après compilation dans bundle.css n'est pas minify.
J'essaie d'utiliser minimiser: vrai dans text-webpack-plugin, mais cela ne fonctionne pas.

Pour la compilation, j'utilise la commande en ligne de commande: webpack dans mon répertoire de travail

Qu'est-ce que je fais mal?

Ma configuration wepback:

'use strict'

const webpack = require("webpack");
const ExtractTextPlugin = require('extract-text-webpack-plugin')

module.exports = {
  context: __dirname,
  mode: 'production',
  entry: __dirname + "/js/init.js",
  output: {
    path: __dirname + "/dist",
    filename: "bundle.js"
  },
  plugins: [
    new webpack.ProvidePlugin({
      $: "jquery",
      jQuery: "jquery",
      noUiSlider: 'nouislider',
      Vue: 'vue'
    }),
    new ExtractTextPlugin("bundle.css")
  ],
  module: {
    'rules': [
      {
        test: /\.css$/,
        use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: {
            loader: "css-loader",
            options: {
              minimize: true
            }
          }
        })
      }
      , {
        test: /\.less$/,
        use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: {
            loader: "css-loader!less-loader",
          }
        })
      }, {
        test: /\.(png|jpe?g|gif|cur)$/,
        loader: 'url-loader?limit=8192&name=imgs/[name]-[hash].[ext]'
      }
    ]
  }
};
6
Alexander Loginov

Avec la version Webpack supérieure à 4, vous pouvez utiliser mini-css-extract-plugin au lieu de ExtractTextPlugin brancher

7
brk

Utilisez OptimizeCSSAssetsPlugin pour réduire les ressources CSS, les extracteurs sont utilisés pour séparer uniquement les ressources de sortie. Notez que la minification fonctionne avec le mode de production, c'est-à-dire assurez-vous de passer "--mode production" dans la commande de construction de webpack.

    {....,
        optimization: {
                minimizer: [
                   //Incase you want to uglify/minify js
                    new UglifyJsPlugin({
                        cache: true,
                        parallel: true,
                        sourceMap: true
                    }),
                    new OptimizeCSSAssetsPlugin({
                        cssProcessorOptions: { discardComments: { removeAll: true } },
                        canPrint: true
                    })
                ]
         }
    ....}
11
Ishan Gulati

Vous devriez utiliser ce plugin à la place.

https://github.com/NMFR/optimize-css-assets-webpack-plugin

0
Jason Ching

Voici ma config. Je pense que vous abusez de use

const MiniCssExtractPlugin = require("mini-css-extract-plugin");
{....,
test: /\.(scss|sass)$/,
use: [
    process.env.NODE_ENV !== 'production' ? 'style-loader' : MiniCssExtractPlugin.loader, // creates style nodes from JS strings
    {// translates CSS into CommonJS
       loader: 'css-loader',
       options: {
          importLoaders: 1,
          minimize: true
       }
    },
    'postcss-loader',
    "sass-loader" // compiles Sass to CSS
]
}
0
SHZhao74