🥤

sass(scss)導入【gulpで自動コンパイル】

2021/10/10に公開

javaプロジェクトでscss記法を使いたかったので、gulpを使って自動コンパイルさせました。

目次
  • Sassとは
  • gulpとは
  • gulp導入手順
    • gulpのインストール
    • gulpfile.jsの作成
    • watchで自動実行
    • 完成したgulpfile.js
  • 最後に

Sassとは

cssを拡張して、読みやすく書きやすくしたスタイルシートです。

S…Syntactically(文法的に)
a…Awesome(素晴らしい)
ss…StyleSheet(スタイルシート)

このような意味のようです。Awesomeが入ってるなんてなんだか素敵です。

Sassには、sass記法とscss記法があります。

今回は、cssの書き方に近いscssを使いました。

詳しい説明は、こちらにあります。
https://udemy.benesse.co.jp/design/web-design/sass.html

gulpとは

簡単に言うと、処理を自動化することができるツールです。
似ているツールは他にもあるようですが、処理が早くNode.jsのパッケージであることが特徴のようです。

今回は、sass(scss)をcssへコンパイルする処理をgulpで自動化します。

詳しい説明は、こちらにあります。
https://www.pc-koubou.jp/magazine/38196

gulp導入手順

gulpのインストール

プロジェクトのルートディレクトリで以下を実行します。

npm install gulp gulp-cli --save-dev

Sassからcss変換の定義のため、以下を実行します。

npm install sass gulp-sass --save-dev

gulpfile.jsの作成

プロジェクトのルートディレクトリに「gulpfile.js」を作成します。
ここに自動化する処理を書いていきます。

/*
src 参照元を指定
dest 出力先を指定
watch ファイル監視
series(直列処理)
*/
const { gulp, src, dest, watch, series} = require('gulp');

// プラグインを呼び出し
var sass = require('gulp-sass')(require('sass'));

// プラグインの処理をまとめる
const cssSass = () => {
  return src('./src/main/resources/static/sass/*.scss') //コンパイル元
    .pipe(sass({ outputStyle: 'expanded' }))
    .pipe(dest('./src/main/resources/static/css'))     //コンパイル先
}

// タスクをまとめて実行
exports.default = series(cssSass);

私はこのように作成しました。
コンパイル元とコンパイル先のディレクトリは、それぞれのプロジェクトに合わせて変更します。

watchで自動実行

このままでは毎回コマンドを叩かなくてはいけないので、watchで自動実行させます。

exports.watch = function() {
    watch('./src/main/resources/static/sass/*.scss', cssSass);
}

先程の最終行に処理を追加します。

これで、自動実行の準備が完了です。

あとは、以下のコマンドを叩いてからファイルを修正することですぐにcssへコンパイルされます。

gulp watch

止めるときは、ctl+cです。

完成したgulpfile.js

/*
src 参照元を指定
dest 出力先を指定
watch ファイル監視
series(直列処理)と(並列処理)
*/
const { gulp, src, dest, watch, series} = require('gulp');

// プラグインを呼び出し
var sass = require('gulp-sass')(require('sass'));

// プラグインの処理をまとめる
const cssSass = () => {
  return src('./src/main/resources/static/sass/*.scss') //コンパイル元
    .pipe(sass({ outputStyle: 'expanded' }))
    .pipe(dest('./src/main/resources/static/css'))     //コンパイル先
}

// タスクをまとめて実行
exports.default = series(cssSass);


exports.watch = function() {
    watch('./src/main/resources/static/sass/*.scss', cssSass);
}

ちなみにresources部分のディレクトリ構成はこのようになっています。

最後に

web系では当たり前のようですが、業務系SEの私は実務でsass(scss)を
まだ使ってません。。。

これを機に自分のいるプロジェクトでも導入できれば良いな、と思います。

参考リンク:
https://sagara.ink/fe02.html

Discussion