レイヤー
Nuxt は、デフォルトのファイル、設定などを拡張できる強力なシステムを提供します。
Nuxt のコア機能の 1 つが、レイヤーと拡張サポートです。デフォルトの Nuxt アプリケーションを拡張して、コンポーネント、ユーティリティ、設定を再利用できます。レイヤー構造は標準の Nuxt アプリケーションとほぼ同じであるため、作成と保守が容易です。
ユースケース
nuxt.configおよびapp.configを使用して、プロジェクト間で再利用可能な設定プリセットを共有するapp/components/ディレクトリを使用してコンポーネントライブラリを作成するapp/composables/およびapp/utils/ディレクトリを使用してユーティリティおよびコンポーザブルライブラリを作成する- Nuxt モジュールプリセットを作成する
- プロジェクト間で標準セットアップを共有する
- Nuxt テーマを作成する
- モジュラーアーキテクチャを実装することでコードの整理を強化し、大規模プロジェクトでドメイン駆動設計 (DDD) パターンをサポートする。
使用方法
デフォルトでは、プロジェクト内の ~~/layers ディレクトリ内のすべてのレイヤーが、プロジェクト内でレイヤーとして自動的に登録されます。
レイヤーの自動登録は Nuxt v3.12.0 で導入されました。
さらに、これらの各レイヤーの srcDir への名前付きレイヤーエイリアスが自動的に作成されます。たとえば、~~/layers/test レイヤーには #layers/test を介してアクセスできます。
名前付きレイヤーエイリアスは Nuxt v3.16.0 で導入されました。
さらに、nuxt.config ファイルに extends プロパティを追加することで、レイヤーから拡張できます。
nuxt.config.ts
export default defineNuxtConfig({
extends: [
// Extend from a local layer
'../base',
// Extend from an installed npm package
'@my-themes/awesome',
// Extend from a git repository
'github:my-themes/awesome#v1',
],
})
プライベート GitHub リポジトリから拡張する場合は、認証トークンを渡すこともできます
nuxt.config.ts
export default defineNuxtConfig({
extends: [
// per layer configuration
['github:my-themes/private-awesome', { auth: process.env.GITHUB_TOKEN }],
],
})
レイヤーソースの横にあるオプションで指定することで、レイヤーのエイリアスをオーバーライドできます。
nuxt.config.ts
export default defineNuxtConfig({
extends: [
[
'github:my-themes/awesome',
{
meta: {
name: 'my-awesome-theme',
},
},
],
],
})
Nuxt はunjs/c12GlobalComponentsunjs/gigetリモートレイヤーを拡張するためのものです。詳細と利用可能なすべてのオプションについては、ドキュメントを確認してください。
レイヤーの優先順位
複数のレイヤーを使用する場合、それらが互いをどのようにオーバーライドするかを理解することが重要です
extends内のレイヤー - エントリが早いほど優先順位が高い(最初のものが 2 番目のものをオーバーライドする)~~/layersディレクトリから自動スキャンされたローカルレイヤーはアルファベット順(Z が A をオーバーライドする)- あなたのプロジェクトはスタック内で最高の優先順位を持ちます - 常に他のレイヤーをオーバーライドします
nuxt.config.ts
export default defineNuxtConfig({
extends: [
// Highest priority (among extends)
'../base',
// Medium priority
'@my-themes/awesome',
// Lower priority
'github:my-themes/awesome#v1',
],
// Your project has the highest priority
})
これは、複数のレイヤーが同じコンポーネント、設定、またはファイルを定義している場合、優先順位の高いものが使用されることを意味します。