Mokelab Blog

webpack で scss を扱う

Web アプリの画面レイアウトや装飾は通常の Web サイトと同様に css を使用します。css は実行時まで構文チェックなどが行えないので、「イケてる」css である sass(scss)で記述し、css にコンパイルするのがよいでしょう。今回は webpack 経由で scss を扱う方法を説明します。

ビルドに必要なツールを追加する

npm 経由で scss のビルドに使うツールを追加します。追加するツールは node-sass sass-loader style-loader css-loader の 4 つです。

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

(中略)

+ css-loader@3.2.0
+ sass-loader@8.0.0
+ style-loader@1.0.0
+ node-sass@4.13.0
added 115 packages from 70 contributors and audited 1787917 packages in 14.849s
found 0 vulnerabilities

webpack.config.js に設定を追加する

次に、scss ファイルをビルド対象とするための設定を webpack.config.js に記述します。module.rules 中のコメント以下が追加部分です。

module.exports = {
  mode: "development",

  entry: "./src/main.ts",

  module: {
    rules: [
      {
        test: /\.ts$/,
        use: "ts-loader",
      },
      // scssファイルに対する処理
      {
        test: /\.scss$/,
        use: [
          { loader: "style-loader" },
          {
            loader: "css-loader",
            options: {
              sourceMap: false,
              importLoaders: 2,
            },
          },
          {
            loader: "sass-loader",
            options: {
              sourceMap: false,
              sassOptions: {
                includePaths: ["./node_modules"],
              },
            },
          },
        ],
      },
    ],
  },

  resolve: {
    extensions: [".js", ".ts"],
  },
};

scss ファイルを作成する

ビルドの準備ができたら、早速 scss ファイルを作成してみましょう。main.ts と同じフォルダに myStyle.scss ファイルを作成します。

body {
  background-color: antiquewhite;
}

main.ts で読み込む

作成した scss ファイルは main.ts 側で読み込む必要があります。読み込むにはモジュールと同様に import を使います。

// page.jsを読み込む
import page from "page";
import { TopPage } from "./TopPage";
import { SecondPage } from "./SecondPage";

import "./myStyle.scss";

まとめ

webpack を使って scss をビルドする方法を説明しました。なぜ scss をビルドできるようにするかは、次回の記事で判明します。

本サイトではサービス向上のため、Google Analyticsを導入しています。分析にはCookieを利用しています。