最近ではコーディングを行う際に、HTMLはPug、CSSはSASS記法のSassやstylusをよく使っています。これがとても便利で、快適にコーディングすることができます。そこで、Nuxt.jsのプロジェクトでもこれらを使えるようにしておきたいと思います。それぞれ必要なモジュールをnpmなどでインストールしていきます。各本体となるモジュールに加えて、対応したloaderのモジュールをセットでインストールします。ここではPug、Sass、Stylusのモジュールをインストールしています。
$ npm install --save-dev pug@2.0.3 pug-plain-loader $ npm install --save-dev node-sass sass-loader stylus stylus-loader
インストールが完了すると「package.json」に追加されているのが確認できます。これで新しいプロジェクトを作成するときも、すぐに環境が揃って使うことができますね。
【package.json】
{ "devDependencies": { "node-sass": "^4.14.1", "pug": "^2.0.3", "pug-plain-loader": "^1.0.0", "sass-loader": "^8.0.2", "stylus": "^0.54.7", "stylus-loader": "^3.0.2", ........... } }
Vue.jsの単一コンポーネントファイル内でPugを使うには、templateタグのlang属性にPugを指定することで、以降はPugの書き方でコーディングすることができます。もちろんVue.jsに用意されているディレクティブも使えます。
【vue】
<template lang="pug"> div h1.page-title. ページタイトル p(v-if="isActive"). ページ本文テキスト </template>
また同じくCSSを記述するstyleタグにもlang属性が使えますので、sass、scss、stylusといった言語を指定します。それだけでいろんな記法が使い分けることができます。
【vue】
<style lang="stylus"> .page-title font-size 2em color red & + p margin-top 15px </style>
NodeSassからDartSassへの移行
Sassの公式サイトではNodeSassが非推奨とされ、DartSassの使用が勧められています。すでにNodeSassを使っている場合には新たにDartSassのモジュールをインストールして設定する必要があります。不要である場合にはNodeSassのモジュールも削除しておきます。DartSassのモジュールのインストールについてはこちらの記事「Gulpで使っているSassをNode SassからDart Sassへ移行してみる」でも詳しく触れています。
$ npm install --save-dev sass fibers
インストールが完了すると「package.json」に追加されているのが確認できます。
【package.json】
{ "devDependencies": { "fibers": "^5.0.0", "sass": "^1.28.0", "pug": "^2.0.3", "pug-plain-loader": "^1.0.0", "sass-loader": "^8.0.2", "stylus": "^0.54.7", "stylus-loader": "^3.0.2", ........... } }
パッケージのインストールが完了したら、「nuxt.config.js」へ以下のように設定を追記します。
【nuxt.config.js】※一部抜粋
const dartSass = require('sass') const fibers = require('fibers') export default { ........... build: { loaders: { scss: { implementation: dartSass, sassOptions: { fiber: fibers } } } } ........... }
あとはNodeSassと同じように単一コンポーネント内でSassを使ってスタイルを記述できるようになります。
効率よくコーディングをするためには、これらの機能を使いこなすことが重要です。コードを書く量が増えてくるとその違いは顕著に出てきますので、ぜひ試してみてはいかがでしょうか?また、過去記事「Nuxt.jsで「style-resources-module」を使って、グローバルで変数やmixinなどを使えるようにする」ではSassの変数を扱うときに便利な設定も紹介していますので、こちらも合わせてご参考にどうぞ。
(参考にさせて頂いたサイト)
CSS プリプロセッサを使うには?
Using Stylus with Vue.js / Nuxt.js
Nuxt.jsプロジェクトでDart Sassを使う