今回は、Sass(SCSSやSASS)を、npm-scriptsを使ってコンパイルする方法を紹介します。
npm-scriptsを使ってSassをコンパイルするには
まず、Web開発に慣れている方で、すでにnode.jsおよびsassのインストールが済んでおり、ただSassをコンパイルするためのnpm-scriptsの書き方が分からない、という場合は、package.json
ファイルのscripts
フィールドに、次のように記述してください。
{
"scripts": {
"build:sass": "sass --no-source-map src/sass/:dist/css/",
"watch:sass": "sass --no-source-map --watch src/sass/:dist/css/"
}
}
実際にSassをコンパイルするには、次のコマンドを実行します。
$ npm run build:sass
$ npm run watch:sass
ここからは、npm-scriptsを使ってSassをコンパイルできるようにするまでの流れを、詳しく見ていきます。
npm-scriptsを使うための準備
npm-scriptsでSassをコンパイルするための準備として、お使いのコンピュータに、node.jsをインストールしておく必要があります。
上記のリンクから、ご自身のコンピュータに合った方法で、node.jsのインストールを済ませておいてください。
Sassのインストール
つづいて、Sassのインストールをしていきます。
まず、次のコマンドでディレクトリを作り、そこへ移動します。
$ mkdir npm-test
$ cd npm-test
$ npm init -y
では、Sassをインストールしましょう。
$ npm install sass --save-dev
$ npm list
npm-test@1.0.0 xxxx\npm-test
`-- sass@1.55.0
Sass(sassやscss)のファイルを用意する
つづいて、sass
またはscss
ファイルを用意します。
まずは、Sassのファイルを保存しておくためのディレクトリを作成しましょう。
$ mkdir -p src/sass/
作成したsrc/sass
ディレクトリに、SCSSを使うのであれば拡張子がscss、SASSを使うのならば拡張子がsass
のファイルを作ります。
今回はサンプルとして、btn.scss(btn.sass)を作ります。
もしVimを使っているのでしたら、次のコマンドでSassのファイルを作ることができます。
SCSSの場合
$ vim src/sass/btn.scss
SASSの場合
$ vim src/sass/btn.sass
btn.scss
の内容は、次のようにしました。
src/sass/btn.scss
.btn {
cursor: pointer;
text-align: center;
&.btn-primary {
color: #fff;
background: #1da1f2;
border: none;
}
}
もしSASSを使うのでしたら、次のようになります。
src/sass/btn.sass
.btn
cursor: pointer
text-align: center
&.btn-primary
color: #fff
background: #1da1f2
border: none
npxコマンドを使って、Sass(sassやscss)をCSSにコンパイル
npm-scriptsを使ってSassをコンパイルするには、そのコマンドをpackage.json
のscripts
フィールドに登録しておく必要があります。
となると、登録する前に、そのコマンドでちゃんと動作するかどうかをチェックしておきたいですよね。
そんなときは、npx
コマンドを使います。
では、実際にnpx
コマンドを使って、Sassをコンパイルしてみたいと思います。
以下のコマンドを実行しましょう。
$ npx sass src/sass/:dist/css/
これはsrc/sass
ディレクトリにあるSassのファイルをコンパイルして、dist/css
ディレクトリに保存するものです。
書き方としては、次のようになります。
$ npx sass [sassファイルがあるディレクトリ]:[cssを保存するディレクトリ]
コンパイルしたCSSは、次のようになります。
dist/css/btn.css
.btn {
cursor: pointer;
text-align: center;
}
.btn.btn-primary {
color: #fff;
background: #1da1f2;
border: none;
}
/*# sourceMappingURL=btn.css.map */
Sassのよく使うオプションについて
Sassには、さまざまなオプションがありますが、次のふたつのオプションがよく使われると思うので、覚えておきましょう。
ソースマップ(.mapファイル)を生成しないようにする
上記の方法でSassをコンパイルすると、拡張子が.map
となったソースマップが生成されます。
これでブラウザの開発者ツールから、そのスタイルがどのSassファイルに書かれているか、というのを知ることができます。
しかし、これが必要ないと感じることも多いと思います。
そんなときは、--no-source-map
オプションを使います。
$ npx sass --no-source-map src/sass/:dist/css/
また、このオプションを使うことで、CSSの最後に記述されていたsourceMappingURL
も、出力されなくなります。
ファイルの変更を監視する
ファイルを変更したとき、毎回コンパイルのコマンドを実行するのは大変です。
そんなときは、ファイルの変更を監視して、自動的にコンパイルされるようにしておくと便利です。
下のコマンドは、src/sass
ディレクトリにあるファイルを監視して、変更があったときに自動でコンパイルしてくれるものです。
$ npx sass --watch src/sass/:dist/css/
scriptsフィールドにコマンドを登録する
package.json
のscripts
フィールドにコマンドを登録しておくことで、コマンドの実行がさらに便利になります。
package.json
{
"name": "npm-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build:sass": "sass --no-source-map src/sass/:dist/css/",
"watch:sass": "sass --no-source-map --watch src/sass/:dist/css/"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"sass": "^1.55.0"
}
}
今回は、7、8行目で、ふたつのコマンドを登録しました。
SassをCSSにコンパイルするものと、Sassを監視してCSSにコンパイルするものです。
これらのコマンドは、次のようにすれば実行することができます。
$ npm run build:sass
$ npm run watch:sass
ディレクトリやオプションを含めて、あらかじめpackage.json
に登録してあるので、たったこれだけでコンパイルや監視を行なうことができます。
まとめ
今回はnpm-scriptsを使って、SassをCSSにコンパイルする方法を紹介しました。
npx
コマンドでは、毎回オプションやディレクトリを入力する必要がありますが、あらかじめnpm-scriptsに登録しておくことで、かんたんにコマンドを実行できるようになります。