前回記事「Nuxt.jsでSassファイルをグローバルに使えるようにする」の続きになりますが、グローバルで使えるSassファイル内に定義した変数やmixinをVueコンポーネントファイル内のstyleで使えるようにする方法のメモです。そのままですとSassとしてスタイルは定義できますが、コンポーネント内で変数やmixinを使うと、定義されていませんとエラーが出てしまいます。
そこで「style-resources-module」というモジュールを使うことで、コンポーネント内でもグローバルにあるSassファイルの変数やmixinが使えるようになります。
【nuxt-community/style-resources-module】
https://github.com/nuxt-community/style-resources-module
詳しくは公式のGitHubにドキュメントがありますが、とても簡単ですのでこちらでもまとめておこうと思います。まずはNuxtプロジェクト内にモジュールをインストールしていきます。
$ cd プロジェクトディレクトリ $ yarn add --dev @nuxtjs/style-resources or $ npm install --save-dev @nuxtjs/style-resources
インストールが終わると再び同じく「package.json」のdevDependenciesのリストに追加されているのが確認できます。
【package.json】※一部抜粋
{ "devDependencies": { ....... "@nuxtjs/style-resources": "^1.0.0", ....... } }
そして、「nuxt.config.js」にあるモジュールの項目に下記のように追記して、新たに「styleResources」の項目を追加し、その中に値として使いたい変数やmixinが含まれているSassファイルのパスを指定します。読み込み順を考慮する必要がある場合には、その順番に記述しましょう。
【nuxt.config.js】※一部抜粋
export default { modules: [ '@nuxtjs/style-resources' ], styleResources: { sass: [ '@/assets/sass/variable.sass' ], scss: [ '@/assets/scss/_variable.scss', '@/assets/scss/_mixin.scss' ], stylus: [ '@/assets/stylus/layout.styl' ] } }
styleResourcesの値には対象となるSassファイルを指定しますが、拡張子の種類別に分けて書く必要があるので注意しましょう。これでグローバルのSassファイルにある変数やmixinもコンポーネントファイルで自由に使うことができます。他にもこのようなモジュールはあるようですが、サポートが終わっていたりと、新しいバージョンのNuxtプロジェクトで使えないといったことがあるので気をつけたいですね。
(参考にさせて頂いたサイト)
nuxt-community/style-resources-module