🦒 webpackでsassを使用する方法【sass-loader・node-sass】
作成日: 2022/01/01
2

node-sassとsass-loaderをインストール

役割としては以下。
node-sass → Sassをコンパイルする
sass-loader → Sassを読み込む

npm install --save-dev node-sass sass-loader

package.jsonを確認

追加されているのを確認する。

{
  "scripts": {
    "build": "webpack"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^6.5.1",
    "mini-css-extract-plugin": "^2.4.5",
    "node-sass": "^7.0.1",
    "sass-loader": "^12.4.0",
    "style-loader": "^3.3.1",
    "webpack": "^5.65.0",
    "webpack-cli": "^4.9.1"
  }
}

webpack-config.jsに設定を追加

const MiniCssExtractPlugin = require('mini-css-extract-plugin');


module.exports = {
    entry: './src/index.js',
    output: {
        path: `${__dirname}/dist`,
        filename: 'bundle.js'
    },
    mode: 'development',
    module: {
        rules: [
            {
                //ここから変更(正規表現 css,sass,scssファイルを検知したら)
                test: /\.(css|sass|scss)/,
                //ここまで変更
                use: [
                    {
                        loader: MiniCssExtractPlugin.loader
                    },
                    {
                        loader: 'css-loader'
                    },
                    {
                        //ここから追加
                        loader: 'sass-loader'
                        //ここまで追加
                    }
                ]
            }
        ]
    },
    plugins: [
        new MiniCssExtractPlugin()
    ]
}

src/style.cssをscssに変更する

※もちろんファイル内の記述もscssに変える

エントリーポイントのJSに読み込ませているファイルを変更

import { hello } from './sub.js'
import './style.scss'

hello('hello world');

webpackを起動

画面を確認する

これだけだと分からないので、HTMLとSCSSを変更してみる

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./main.css">
</head>
<body>
    <h1>webpackチュートリアル<span>(SCSSを追加)</span></h1>

    <script src="./bundle.js"></script>
</body>
</html>
h1 {
    color: red;
    span {
        font-size: 16px;
        color: blue;
    }
}

再度画面を確認

npm run build

ちゃんと反映されているのを確認できる。


事業会社にてコーダーをしています。制作は6年目。 インプットしたことをアウトプットしています。