components プロパティ
Nuxt v2.13 以上では @nuxt/components モジュールを使ってコンポーネントのスキャンと自動インポートができます。
@nuxt/components を nuxt.config 内の buildModules に追加するだけです。- 
型: 
BooleanまたはArray - 
デフォルト: 
false 
true またはオブジェクトオプションを設定したとき、Nuxt は @nuxt/components  を組み込んでそして pages、layouts (および他のコンポーネント)内でコンポーネントを使用する際には、自動的にインポートされます。
設定
export default {
  // これは自動的に、`~/components` からコンポーネントを読み込みます
  components: true
}
 components: true を設定すると、デフォルトでは、~/components ディレクトリが組み込まれます。
しかしながら、スキャンするディレクトリを追加することで、自動検測の動作をカスタマイズすることができます:
export default {
  components: [
    // { path: '~/components' } に相当
    '~/components',
    { path: '~/components/other', extensions: ['vue'] }
  ]
}
 パス
各項目は、文字列またはオブジェクトのいずれかです。文字列の値は、{ path }に対するショートカットです。
path
- 必須項目
 - 
型: 
String 
コンポーネントを含むディレクトリへのパス(絶対または相対)。
Nuxt のエイリアス (~ や @) を使ってプロジェクト内のディレクトリを参照したり、npm パッケージのパスを直接使用することができます(プロジェクト内で require を使用するのと同様です)。
extensions
- 
型: 
Array<string> - 
デフォルト:
- 
Nuxt ビルダー (
builder.supportedExtensions) によって拡張子がサポート済み - 
デフォルトは拡張子 
['vue', 'js']がサポート、 または['vue', 'js', 'ts', 'tsx']は環境次第 
 - 
Nuxt ビルダー (
 
例: 複数ファイルコンポーネント構造をサポート
SFC を .js、.vue、.css に分割したい場合は、.vue ファイルのみをスキャンすることも可能です:
| components
---| componentC
------| componentC.vue
------| componentC.js
------| componentC.scss
 // nuxt.config.js
export default {
  components: [{ path: '~/components', extensions: ['vue'] }]
}
 pattern
- 
型: 
string(glob パターン ) - 
デフォルト: 
**/*.${extensions.join(',')} 
指定された path において、このパターンにマッチするファイルのみが含まれます。
ignore
- 
型: 
Array - 
要素: 
string(glob パターン ) - 
デフォルト: 
[] 
指定された path 内のファイルを除外するパターン
prefix
- 
型: 
String - 
デフォルト: 
''(プリフィックスなし) 
マッチするすべてのコンポーネントのプリフィックス
以下の例では、awesome/ ディレクトリ内のコンポーネントの名前に、awesome- / Awesomeというプレフィックスを追加しています。
// nuxt.config.js
export default {
  components: [
    '~/components',
    { path: '~/components/awesome/', prefix: 'awesome' }
  ]
}
 | components/
---| awesome/
------| Button.vue
---| Button.vue
 <template>
  <div>
    <AwesomeButton>Click on me 🤘</AwesomeButton>
    <button>Click on me</button>
  </div>
</template>
 pathPrefix
- 
型: 
Boolean - 
デフォルト: 
true 
コンポーネント名の前に、そのパスを付加する。
watch
- 
型: 
Boolean - 
デフォルト: 
true 
指定された path を監視して、ファイルの追加や削除などの変更をする。
transpile
- 
型: 
Boolean - 
デフォルト: 
'auto' 
指定された path を build.transpile  を使ってトランスパイルする。デフォルト ('auto') では、node_modules/ が path にある場合、transpile: true を設定します。
level
- 
型: 
Number - 
デフォルト: 
0 
レベルは、2つの異なるディレクトリにある同じ名前のコンポーネントの上書きを許可するために使用されます。これは、ユーザーが自分のコンポーネントを上書きできるようにしたいライブラリの作成者や、カスタムテーマの作成者にとって便利です。
export default {
  components: [
    '~/components', // デフォルトレベルは 0
    { path: 'my-theme/components', level: 1 }
  ]
}
 ~/componentsにあるコンポーネントは、my-theme/components にある同じ名前のコンポーネントを上書きします。値の小さいものが優先されます。
高度
コンポーネントの上書き
level オプションを使ってコンポーネントを上書きする方法があります。これは、モジュールやテーマの作者にとって非常に便利です。
以下の構造を考え:
| node_modules/
---| my-theme/
------| components/
---------| Header.vue
| components/
---| Header.vue
 そして、nuxt.config で定義すると:
components: [
  '~/components', // デフォルトレベルは 0
  { path: 'node_modules/my-theme/components', level: 1 }
]
 components/Header.vue は、最下層が優先されるので、テーマコンポーネントを上書きします。
ライブラリ作者
tree-shaking とコンポーネントの自動登録機能を備えた Vue コンポーネントライブラリの作成が超簡単になりました✨。
このモジュールは、components:dirs という名前のフックを公開しているので、Nuxtモジュールでのユーザー設定を必要とせずに、ディレクトリリストを簡単に拡張することができます。
以下のようなディレクトリ構造を想像してみてください:
| node_modules/
---| awesome-ui/
------| components/
---------| Alert.vue
---------| Button.vue
------| nuxt.js
| pages/
---| index.vue
| nuxt.config.js
 それから、awesome-ui/nuxt.js で、components:dir というフックを使うことができます:
import { join } from 'path'
export default function () {
  this.nuxt.hook('components:dirs', dirs => {
    // ./components の dir をリストに追加する
    dirs.push({
      path: join(__dirname, 'components'),
      prefix: 'awesome'
    })
  })
}
 これで完成です。これで、あなたのプロジェクトでは、nuxt.config.js で ui ライブラリを Nuxt モジュールとしてインポートすることができます:
export default {
  buildModules: ['@nuxt/components', 'awesome-ui/nuxt']
}
 そして、モジュールのコンポーネント(プレフィックスは awesome- )を直接使用して、私たちの pages/index.vue を作成します:
<template>
  <div>
    My <AwesomeButton>UI button</AwesomeButton>!
    <awesome-alert>Here's an alert!</awesome-alert>
  </div>
</template>
 これは、使用されている場合にのみ自動的にコンポーネントをインポートし、node_modules/awesome-ui/components/ でコンポーネントを更新する際に HMR をサポートします。
次: 作成したawesome-uiモジュールを npm  に公開して、他の Nuxters と共有しましょう✨。
 
        N3-rd
       
 
        Adrien Zaganelli
       
 
        Mag
       
 
        Stefan Huber
       
 
        Olga Bulat
       
 
        Maciek Palmowski
       
 
        Sébastien Chopin
       
 
        Daniel Roe
       
 
        Clément Ollivier
       
 
        Paiva
       
 
        Florian Reuschel
       
 
        Rishi Raj Jain
       
 
        Savas Vedova
       
 
        Steven Soekha
       
 
        Vinícius Alves
       
 
        Kareem Dabbeet
       
 
        Valentín Costa
       
 
        Ryan Skinner
       
 
        Alex Hirzel
       
 
        Ajeet Chaulagain
       
 
        René Eschke
       
 
        Nico Devs
       
 
        Muhammad
       
 
        Nazaré da Piedade
       
 
        Naoki Hamada
       
 
        Tom
       
 
        Yann Aufray
       
 
        Anthony Chu
       
 
        Nuzhat Minhaz
       
 
        Lucas Portet
       
 
        Richard Schloss
       
 
        bpy
       
 
        Antony Konstantinidis
       
 
        Hibariya
       
 
        Jose Seabra
       
 
        Eze
       
 
        Florian LEFEBVRE
       
 
        Lucas Recoaro
       
 
        Julien SEIXAS
       
 
        Hugo
       
 
        Sylvain Marroufin
       
 
        Spencer Cooley
       
 
        Piotr Zatorski
       
 
        Vladimir Semyonov
       
 
        Harry Allen
       
 
        kazuya kawaguchi
       
 
        Unai Mengual
       
 
        Hyunseung
       
 
        Alexandre Chopin
       
 
        pooya parsa
       
 
        Nick Medrano
       
 
        Mosaab Emam
       
 
        Ilja
       
 
        Heitor Ramon Ribeiro
       
 
        Nero
       
 
        Yoon Han