web-dev-qa-db-fra.com

Webpack compile scss en css et minify

Je suis nouveau avec webpack et j'ai du mal à convertir les scss en css puis à les réduire.

Structure des fichiers

 ????public
     ┣ ????dist
     ┃ ┣ ????css
     ┃ ┗ ????js
     ┃ ┃ ┗ ????adminMain.js
     ┣ ????src
     ┃ ┣ ????css
     ┃ ┃ ┃ ┣ ????admin.css
     ┃ ┃ ┃ ┣ ????admin.css.map
     ┃ ┃ ┃ ┣ ????admin.scss
     ┃ ┃ ┃ ┣ ????main.css
     ┃ ┃ ┃ ┣ ????main.css.map
     ┃ ┃ ┃ ┗ ????main.scss
     ┃ ┗ ????js
     ┃ ┃ ┗ ????adminMain.js

Je compile js comme ça

"dev": "webpack --mode development ./public/src/js/adminMain.js --output ./public/dist/js/adminMain.js",
"build": "webpack --mode production ./public/src/js/adminMain.js --output ./public/dist/js/adminMain.js"

J'ai trouvé quelque chose comme sass-loader mais je ne peux pas le faire fonctionner.

webpack.config.js

module.exports = {
    module: {
        rules: [{
            test: /\.scss$/,
            use: [{
                loader: "sass-loader",
                options: {
                    minimize: true
                }
            }]
        }]
    }
};

je ne sais pas où mettre le chemin vers le fichier inclus et où mettre le chemin vers la sortie.

Je serai reconnaissant pour tout conseil.

3
Juraj Jakubov

Si vous voulez simplement pouvoir importer .scss les fichiers de vos modules Javascript et les appliquer directement au DOM, vous pouvez simplement suivre cette documentation en premier:

https://webpack.js.org/loaders/sass-loader/

puis ajoutez Postcss au mix:

https://github.com/postcss/postcss-loader

tldr;

npm install sass-loader node-sass style-loader css-loader postcss-loader cssnano --save-dev
// webpack.config.js
module.exports = {
  module: {
    rules: [
      {
        test: /\.scss$/,
        use: [
          'style-loader', // creates style nodes from JS strings
          {
            loader: 'css-loader', // translates CSS into CommonJS
            options: {
              importLoaders: 1
            }
          },
          'postcss-loader', // post process the compiled CSS
          'sass-loader' // compiles Sass to CSS, using Node Sass by default
        ]
      }
    ]
  }
};
// postcss.config.js
module.exports = {
  plugins: {
    'cssnano': {}
  }
};

Si vous souhaitez extraire le CSS compilé dans un fichier séparé, il y a:

https://github.com/webpack-contrib/mini-css-extract-plugin

Surtout:

https://github.com/webpack-contrib/mini-css-extract-plugin#advanced-configuration-example

1
madflow