snowpack + scss環境の構築
※この記事は手探りでsnowpack環境を構築しており、ベストなやり方ではない可能性があります
前提
snowpackの公式より、app-template-blankのテンプレートを使用しております
npx create-snowpack-app app-blank01 --template @snowpack/app-template-blank
Sass環境を整える
公式にある通りsnowpack.config.jsonのscriptに"build:scss": "sass"
のbuildコマンドを追加します。
sassをインストールします
$ npm install -D sass
snowpack CLIについて
コマンド
snowpackにはデフォルトでコマンドが用意されています(2020.05.24時点)
snowpack dev
snowpack build
snowpack install
dev
一時的な開発環境を用意するためのコマンドです。開発する際はこのコマンドを実行するのが良いと思います。devコマンドは不要なBindをせずに素早く起動するように工夫されております。詳しくは公式をご確認ください
build
バンドルされていないproduction用のファイルをbuildディレクトリにコピーします。これらはParselを通して実施されます。詳しくは公式をご確認ください
install
installコマンドはdev,buildコマンドに含まれているので自ら実施することはないでしょう。詳しくは公式を見てほしいのですが、使用しているESModuleをweb_modules
にインストールしています。これによりwebからimportできるようになっています。
スクリプト
snowpack.config.jsonを見るとpackage.jsonと同じようにscriptが設定されています
"scripts": {
"mount:public": "mount public --to /",
"mount:src": "mount src --to /_dist_"
snowpackのCLIには下記のTypeがあります。詳しくは公式を確認してもらいたいので、ここでは簡単に紹介します
- build
- run
- mount
- proxy
build
build時に実行したいコマンドを設定することができます。run
時には実行されません
run
起動時に1回だけコマンドを実行します。lintやscssなどを設定するのに最適です
mount
ビルド時にファイルのマウント先を設定するのに使います
proxy
Proxyを設定することが出来ます。開発時にAPIリクエストでのCORSを対策するなどに便利です。これはProductionビルド時には適用されません
scssファイルを作成する
scssのトランスパイルを設定するために、src
ディレクトリにscssファイルを作成します。ここではindex.scss
とします
body {
color: red;
}
※scssファイルの中身はエラーが出なければなんでも構いません
snowpack + scss
snowpack.config.jsonにスクリプトを設定します。
上記の説明からrunコマンドに設定を書を書くと以下のようになります
"scripts": {
...
"run:scss,scss": "sass src/index.scss public/index.css",
"run:scss,scss::watch": "$1 --watch"
}
追加した1行目は、sassコマンドを実行しその出力をpublicディレクトリに指定しています。
2行目は、1行目のコマンドに対してsassのwatch
オプションを指定しています。
::
2行目のコマンドにある::
と$1
の詳細な説明は公式をご確認ください。
簡単に紹介すると、1行目のコマンドへのアドオンになり、$1
は1行目のコマンドに置換されます。つまり以下のようになります。
sass src/index.scss public/index.css --watch
試してみます
ここまで設定したらpackage.json
のスクリプトstart
を実行してみてください
$ npm start
npm start
は、snowpack dev
を実行しています。
ブラウザが立ち上がったら、src/index.scss
を変更してみてください。変更が確認できれば完成です。