Sassが編集されたときに自動反映させたい! 〜Parcelを用いたSass自動コンパイル環境の構築方法〜
こんばんは、y-mix( @bwolftech )です!
実は触れていなかったSassのコンパイル方法を工夫したので書いておきます。
コチラは Sassのみを勉強するための構成を想定しているので 実際のプロダクトではまた別の方法になると思います。
Sassのコンパイルについて
使い方によってはCSSよりも記述量が減らせるSassは便利なのですが、書いた結果を見たいときは コンパイルが必要です。
ProgateでいうとSass/HTMLを変更した結果が見たいときはプレビュー画面の右上にある ぐるぐる回りそうなボタンをクリックする必要があります。
これが手元の開発環境だと
という手順を踏まなければなりません。
これを解決するためにParcelを導入します。
本来は複数のJavaScriptなどのファイルをまとめるモジュールバンドラとして使われますが、ファイルの変更を監視してブラウザで開いている内容を自動的に更新してくれる機能もあります。
モジュールバンドラとしてよく使われるのがWebpackなのですが、Sassファイルの自動コンパイルだけが目的なのでお手軽にParcelを使います。
Parcelを用いたSass自動コンパイルの方法
1. Node.jsとyarnの環境を用意する
Parcelを用いるには Node.jsとnpm/yarnの環境が必要です。また、npx
を使うため、npm 5.2.0 以上が必要です。
環境構築について書きません。
2.プロジェクトを始める
次の構成でディレクトリを作ったあと、次の構成で sass-parcel-sample
ディレクトリを作ります。
sass-parcel-sample └── src └── scss
次に sass-parcel-sample
内で Node.js のプロジェクトを始めます。yarn
をチョイスしました。
cd sass-parcel-sample yarn init -y
3. パッケージを入れる
Parcelが使えるようにパッケージを入れます。
yarn add -D parcel
4. Sassを読み込むHTMLを作る
次の構成でファイルを3つ作ります。
sass-parcel-sample └── src ├── app.js ├── index.html └── scss └── style.scss
HTMLではJavaScriptファイルを読み込んで、JavaScriptファイルではSassを読み込む形にしています。
src/index.html
<!<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Parcel Sample</title> </head> <body> <h1>Parcel</h1> <script src="./app.js"></script> </body> </html>
src/app.js
import './scss/style.scss';
./src/scss/style.scss
$sampleColor: #ABCDEF; body { h1 { color: $sampleColor; } }
5. Scssをコンパイルする
ファイルができたら src/index.html
を指定してParcelを実行します。
npx parcel ./src/index.html
6. http://localhost:1234/
で確認する
HTMLを開く代わりにブラウザで http://localhost:1234/
を開きます。
そして src
に置いてあるSassファイルやHTMLファイルをエディターで変更して保存すると ブラウザーの更新ボタンを押さなくてもすぐに反映されます!
Parcelによってビルドされたファイルは dist
に保存されますが、 -d
オプションで変更することができます。
npx parcel ./src/index.html -d public
オチ
…どの方法でコンパイルしようか迷うと作品に取り書かれる時間が減っていくわけですね!
参考
- Sassの変換にオススメ! Parcel入門 - ICS MEDIA: https://ics.media/entry/19580/
- Parcel 入門 ~Parcelはwebpackの代わりになるのか~ - Qiita: https://qiita.com/soarflat/items/3e43368b2d767c730781