Nuxt.jsのプロジェクトでSassやstylus、Pugを使えるようにする
最終更新日: Update!!
最近ではコーディングを行う際に、HTMLはPug、CSSはSASS記法のSassやstylusをよく使っています。これがとても便利で、快適にコーディングすることができます。そこで、Nuxt.jsのプロジェクトでもこれらを使えるようにしておきたいと思います。それぞれ必要なモジュールをnpmなどでインストールしていきます。各本体となるモジュールに加えて、対応したloaderのモジュールをセットでインストールします。ここではPug、Sass、Stylusのモジュールをインストールしています。
効率よくコーディングをするためには、これらの機能を使いこなすことが重要です。コードを書く量が増えてくるとその違いは顕著に出てきますので、ぜひ試してみてはいかがでしょうか?また、過去記事「Nuxt.jsで「style-resources-module」を使って、グローバルで変数やmixinなどを使えるようにする」ではSassの変数を扱うときに便利な設定も紹介していますので、こちらも合わせてご参考にどうぞ。 (参考にさせて頂いたサイト) CSS プリプロセッサを使うには? Using Stylus with Vue.js / Nuxt.js Nuxt.jsプロジェクトでDart Sassを使う
$ 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を使う
sponserd
keyword search
recent posts
- Vue.js(Composition API)+TypeScriptの環境でVuex・Vue Router・Axoisを使ってみる#1:環境構築
Vue.js(Composition API)+TypeScriptの環境でVuex・Vue Router・Axoisを使ってみる#1:環境構築
- メディアクエリを使わないレスポンシブコーディングを試してみる #1:カラムレイアウト
メディアクエリを使わないレスポンシブコーディングを試してみる #1:カラムレイアウト
- webpack+Reactの環境にTailwindCSSを導入してみる
webpack+Reactの環境にTailwindCSSを導入してみる
- Vue.js(Options API)からReactへの移行でみる違いと比較 #5:コンポーネント間で値の受け渡し(props)
Vue.js(Options API)からReactへの移行でみる違いと比較 #5:コンポーネント間で値の受け渡し(props)
- Vue.js(Options API)からReactへの移行でみる違いと比較 #4:イベントハンドリング・バインディング
Vue.js(Options API)からReactへの移行でみる違いと比較 #4:イベントハンドリング・バインディング
- Vue.js(Options API)からReactへの移行でみる違いと比較 #3:テンプレート処理
Vue.js(Options API)からReactへの移行でみる違いと比較 #3:テンプレート処理
- Vue.js(Options API)からReactへの移行でみる違いと比較 #2:メソッド・ステート
Vue.js(Options API)からReactへの移行でみる違いと比較 #2:メソッド・ステート
- Vue.js(Options API)からReactへの移行でみる違いと比較 #1:コンポーネント
Vue.js(Options API)からReactへの移行でみる違いと比較 #1:コンポーネント
categories