最終更新日: 2023年08月15日

アセット

Nuxtは、スタイルシート、フォント、画像などのアセットを処理するために2つのディレクトリを使用します。

  • public/ディレクトリのコンテンツは、そのままサーバールートで提供されます。
  • assets/ディレクトリには、ビルドツール(Viteまたはwebpack)に処理させたいすべてのアセットが一般的に格納されます。

public/ ディレクトリ

public/ディレクトリは、アプリケーションの特定のURLで公開される静的アセットのための公開サーバーとして使用されます。

アプリケーションのコードやブラウザから、public/ディレクトリ内のファイルをルートURL(/)から取得することができます。

下記の例では、public/img/ディレクトリ内の画像ファイルを参照する場合、そのファイルはimg/nuxt.png で利用できます。

  • app.vue
  • vue
// publicディレクトリ直下に「img」フォルダを作成し、png画像を配置した例

<template>
  <img src="/img/nuxt.png" alt="Discover Nuxt 3" />
</template>

assets/ ディレクトリ

NuxtはViteまたはWebpackを使用してアプリケーションをビルドおよびバンドルします。 これらのビルドツールの主な機能はJavaScriptファイルの処理ですが、プラグイン(Vite用)やローダー(Webpack用)を通じてスタイルシート、フォント、SVGなどの他の種類のアセットを処理することも可能です。 このステップでは、元のファイルをパフォーマンスやキャッシュの目的(スタイルシートの最小化やブラウザのキャッシュ無効化など)で変換します。

Nuxtは、慣例としてassets/ディレクトリを使用してこれらのファイルを保存しますが、 このディレクトリの自動スキャン機能は存在せず、任意の他の名前を使用することもできます。

アプリケーションのコードでは、assets/ディレクトリ内のファイルを参照するためには、~/assets/を使用します。

たとえば、ビルドツールがこのファイル拡張子を処理するように設定されている場合、画像ファイルを参照する方法は次のとおりです。

  • app.vue
  • vue
// assetsフォルダには、img や css のフォルダを作成し、その中に必要なファイルを配置する。

<template>
  <img src="~/assets/img/nuxt.png" alt="Discover Nuxt 3" />
</template>

グローバルスタイルのインポート

Nuxtのコンポーネントスタイルにグローバルなステートメントを挿入するためには、nuxt.config.tsファイルでViteオプションを使用することができます。

この例では、Nuxtのページやコンポーネントで使用されるカラー変数を含むSassのパーシャルファイルがあります。

  • assets/_colors.scss
  • scss
$primary: #49240f;
$secondary: #e4a79d;
  • nuxt.config
  • ts
export default defineNuxtConfig({
  vite: {
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: '@use "@/assets/_colors.scss" as *;'
        }
      }
    }
  }
})