私はwebpackの初心者で、scssをcssに変換してから縮小する方法に苦労しています。
ファイル構造
????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
私はこのようなjsをコンパイルしています
"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"
sass-loader
のようなものを見つけましたが、機能させることができません。
webpack.config.js
module.exports = {
module: {
rules: [{
test: /\.scss$/,
use: [{
loader: "sass-loader",
options: {
minimize: true
}
}]
}]
}
};
インクルードされたファイルへのパスをどこに置くか、出力へのパスをどこに置くかわかりません。
アドバイスをいただければ幸いです。
Javascriptモジュールから.scss
ファイルをインポートし、それを直接DOMに適用できるようにしたい場合は、最初にこのドキュメントに従うだけです。
https://webpack.js.org/loaders/sass-loader/
そしてPostcss
をミックスに追加します:
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': {}
}
};
コンパイル済みのCSSを別のファイルに抽出する場合は、次の方法があります。
https://github.com/webpack-contrib/mini-css-extract-plugin
特に:
https://github.com/webpack-contrib/mini-css-extract-plugin#advanced-configuration-example