nuxt logo

ドキュメント翻訳(非公式)

設定

Nuxtは、あなたを生産的にするために合理的なデフォルトで設定されています。

デフォルトでは、Nuxtはほとんどのユースケースをカバーするように設定されています。nuxt.config.tsファイルは、このデフォルトの設定を上書きまたは拡張することができます。

Nuxtの設定

nuxt.config.tsファイルはNuxtプロジェクトのルートに位置しており、アプリケーションの動作を上書きまたは拡張することができます。

最小限の設定ファイルは、設定を含むオブジェクトを含むdefineNuxtConfig関数をエクスポートします。defineNuxtConfigヘルパーはインポートなしでグローバルに利用可能です。

nuxt.config.ts
export default defineNuxtConfig({
  // My Nuxt config
})

このファイルは、カスタムスクリプトの追加、モジュールの登録、レンダリングモードの変更などを行うために、ドキュメンテーションで頻繁に参照されます。

こちらも参照 api > configuration > nuxt-config

Nuxtでアプリケーションを構築するためにTypeScriptを使用する必要はありません。しかし、nuxt.configファイルの拡張子に.tsを使用することを強くお勧めします。これにより、設定を編集する際のタイプミスやエラーを避けるためのIDEのヒントを利用することができます。

環境オーバーライド

nuxt.configで完全に型安全な環境ごとのオーバーライドを設定することができます。

nuxt.config.ts
export default defineNuxtConfig({
  $production: {
    routeRules: {
      '/**': { isr: true }
    }
  },
  $development: {
    //
  },
  $env: {
    staging: {
      // 
    }
  },
})

NuxtのCLIコマンドを実行する際に環境を選択するには、--envNameフラグに環境名を渡すだけでよいです。たとえば、nuxt build --envName stagingのようにします。

これらのオーバーライドの背後にある仕組みについて詳しく知りたい場合は、 c12ドキュメンテーションの環境固有の設定を参照してください。

レイヤーを作成している場合は、$metaキーを使用して、あなた自身やレイヤーの消費者が使用する可能性のあるメタデータを提供することもできます。

環境変数とプライベートトークン

runtimeConfig APIは環境変数のような値をアプリケーションの残りの部分に公開します。デフォルトでは、これらのキーはサーバーサイドでのみ利用可能です。 runtimeConfig.publicおよび runtimeConfig.app(Nuxt内部で使用されています)内のキーはクライアントサイドでも利用可能です。

これらの値は nuxt.config内で定義するべきであり、環境変数を使用して上書きすることが可能です。

export default defineNuxtConfig({
  runtimeConfig: {
    // The private keys which are only available server-side
    apiSecret: '123',
    // Keys within public are also exposed client-side
    public: {
      apiBase: '/api'
    }
  }
})

これらの変数は、useRuntimeConfig() composableを使用してアプリケーションの残りの部分に公開されます。

pages/index.vue
const runtimeConfig = useRuntimeConfig()
こちらも参照 guide > going-further > runtime-config

Appの設定

app.config.tsファイルは、ビルド時に決定できる公開変数を公開するために使用されます。これはソースディレクトリ(デフォルトではプロジェクトのルート)にあり、runtimeConfigオプションとは対照的に、これらは環境変数を使用して上書きすることはできません。

最小限の設定ファイルは、設定を含むオブジェクトを含む defineAppConfig関数をエクスポートします。 defineAppConfigヘルパーはインポートなしでグローバルに利用可能です。

app.config.ts
export default defineAppConfig({
  title: 'Hello Nuxt',
  theme: {
    dark: true,
    colors: {
      primary: '#ff0000'
    }
  }
})

これらの変数は、useAppConfig composableを使用してアプリケーションの他の部分に公開されます。

pages/index.vue
const appConfig = useAppConfig()
こちらも参照 guide > directory-structure > app-config

runtimeConfig vs. app.config

上述のように、runtimeConfigapp.configの両方がアプリケーションの他の部分に変数を公開するために使用されます。どちらを使うべきかを決定するためのいくつかのガイドラインは以下のとおりです:

  • runtimeConfig: ビルド後に環境変数を使用して指定する必要があるプライベートまたはパブリックのトークン。
  • app.config: ビルド時に決定する公開トークン、テーマバリアントなどのウェブサイト設定、タイトル、および機密でないプロジェクト設定。
特徴runtimeConfigapp.config
クライアントサイドHydratedBundled
環境変数✅ Yes❌ No
リアクティブ性✅ Yes✅ Yes
タイプサポート✅ Partial✅ Yes
リクエストごとの設定❌ No✅ Yes
ホットモジュールの置換❌ No✅ Yes
非プリミティブJSタイプ❌ No✅ Yes

外部設定ファイル

Nuxtは nuxt.config.ts ファイルを設定の一元情報源として使用し、外部の設定ファイルの読み込みは無視します。プロジェクトを作成していく過程で、それらの設定が必要になるかもしれません。以下の表では、一般的な設定とそれがNuxtでどのように設定できるかを示しています。

名前設定ファイル設定方法
Nitronitro.config.tsnuxt.config内で nitro キーを使用
PostCSSpostcss.config.jsnuxt.config内で postcss キーを使用
Vitevite.config.tsnuxt.config内で vite キーを使用
webpackwebpack.config.tsnuxt.config内で webpack キーを使用

他によく使用される設定ファイルは以下の通りです:

名前設定ファイル設定方法
TypeScripttsconfig.json詳細情報
ESLinteslint.config.js詳細情報
Prettierprettier.config.js詳細情報
Stylelintstylelint.config.js詳細情報
TailwindCSStailwind.config.js詳細情報
Vitestvitest.config.ts詳細情報

Vueの設定

Viteを使用する場合

@vitejs/plugin-vueまたは@vitejs/plugin-vue-jsxにオプションを渡す必要がある場合、 nuxt.configファイルでそれを行うことができます。

nuxt.config.ts
export default defineNuxtConfig({
  vite: {
    vue: {
      customElement: true
    },
    vueJsx: {
      mergeProps: true
    }
  }
})
こちらも参照 api > configuration > nuxt-config#vue

webpackを使用する場合

webpackを使用していてvue-loaderを設定する必要がある場合、nuxt.configファイル内のwebpack.loaders.vueキーを使用してこれを行うことができます。利用可能なオプションはここで定義されています

nuxt.config.ts
export default defineNuxtConfig({
  webpack: {
    loaders: {
      vue: {
        hotReload: true,
      }
    }
  }
})
こちらも参照 api > configuration > nuxt-config#loaders

Vueの実験的な機能の有効化

VueのpropsDestructureのような実験的な機能を有効にする必要があるかもしれません。Nuxtは nuxt.config.tsでそれを行う簡単な方法を提供しています。ビルダーの種類に関係なく:

nuxt.config.ts
export default defineNuxtConfig({
  vue: {
    propsDestructure: true
  }
})

実験的な reactivityTransformの移行

Nuxt 3.9とVue 3.4から、reactivityTransformはVueからVue Macrosに移動しています。これにはNuxtのインテグレーションがあります。

こちらも参照 api > configuration > nuxt-config#vue-1