$ node -v
v12.18.3
$ npm -v
6.14.6
$ npm -y init
$ npm -D install webpack webpack-cli
$ npx webpack -v
4.44.0
$ npm -D i sass-loader node-sass style-loader css-loader
$ npm -D i mini-css-extract-plugin optimize-css-assets-webpack-plugin
webpack.config.js
const path = require('path');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
module.exports = {
entry: {
anyname: `./src/scss/style.scss`,
},
output: {
path: path.resolve(__dirname, 'dist'),
},
// entry: `./src/index.js`,
// output: {
// filename: "main.js"
// },
module: {
rules: [
{
test: /\.scss$/,
use: [
{ loader: MiniCssExtractPlugin.loader },
{ loader: 'css-loader' },
{ loader: 'sass-loader' },
],
}
],
},
plugins: [
new MiniCssExtractPlugin({ filename: 'css/style.css'}),
],
optimization: {
minimizer: [new OptimizeCSSAssetsPlugin({})],
},
}
./src/scss/style.scss
body {
background-color: aqua;
}
### npx実行
$ npx webpack –mode production
./dest/css/style.css
body{background-color:#0ff}
sassからcssには出来た。
### sassはcssに、jsはdist/main.jsにトランスパイル
sassからcssにする場合と、index.jsからmain.jsにする場合に、一々webpack.config.jsのコメントアウトを外すのは面倒。entryを複数に書いてみる。
module.exports = {
entry: {
anyname: `./src/scss/style.scss`,
main: `./src/index.js`,
},
output: {
filename: "[name].js",
path: path.resolve(__dirname, 'dist'),
},
// 省略
}
こうすると、distフォルダにanyname.jsとmain.jsが作られる。

あとはローカルサーバか。