プラグインディレクトリ
plugins ディレクトリにはルート Vue.js アプリケーションがインスタンス化する前に実行する Javascript プラグインが含まれています。
これは Vue プラグインを追加し、関数や定数を導入する場所です。Vue.use() を使用する必要がある時は都度 plugins/ ファイルを作成し、nuxt.config.js の plugins にそのパスを追加する必要があります。
外部パッケージ
サーバーとクライアント両方に HTTP リクエストを行うためには、アプリケーションで外部パッケージ/モジュール(著名な例は axios です)を使用することをお勧めします。
はじめに、npm か Yarn を介してインストールします。
yarn add @nuxtjs/axios
 npm install @nuxtjs/axios
 例えば、アプリケーション全体の API 呼び出しから発生する可能性のあるエラーに対応するよう、axios インターセプターを設定できます。この例では、API から 500 ステータスエラーが発生した時、sorry というカスタムエラーページにユーザをリダイレクトします。
export default function ({ $axios, redirect }) {
  $axios.onError(error => {
    if (error.response.status === 500) {
      redirect('/sorry')
    }
  })
}
 最後になりますが、モジュールと新しく作成したプラグインをプロジェクト構成に追加します。
module.exports = {
  modules: ['@nuxtjs/axios'],
  plugins: ['~/plugins/axios.js']
}
 そのあとページコンポーネントで直接使用できます:
<template>
  <h1>{{ post.title }}</h1>
</template>
<script>
export default {
    async asyncData ({ $axios, params }) {
      const  post  = await $axios.$get(`https://api.nuxtjs.dev/posts/${params.id}`)
      return { post }
    }
}
</script>
 モジュールのインストールなしで axios を使うための他の方法は、<script> タグで直接 axios をインポートすることです。
<script>
import axios from 'axios'
export default {
    async asyncData ({ params }) {
      const { data: post }  = await axios.get(`https://api.nuxtjs.dev/posts/${params.id}`)
      return { post }
    }
}
</script>
 nuxt.config.js の build > transpile オプションにパッケージを追加する必要があります。build: {
  // ここでwebpack設定を拡張できます
  transpile: ['npm-package-name'],
},
 Vue プラグイン
v-tooltip などの Vue プラグインを使用してアプリケーションにツールチップを表示する場合、アプリを起動する前にプラグインを設定する必要があります。
はじめにインストールをする必要があります
yarn add v-tooltip
 npm install v-tooltip
 次にファイル plugins/vue-tooltip.js を作成します
import Vue from 'vue'
import VTooltip from 'v-tooltip'
Vue.use(VTooltip)
 plugins プロパティ
次に nuxt.config.js の plugins キー内にファイルパスを追加します。plugins プロパティを使用すると、簡単に Vue.js プラグインをメインアプリケーションに追加できます。plugins プロパティで定義されているすべてのパスは、メインアプリケーションを初期化する前にインポートされます。
export default {
  plugins: ['~/plugins/vue-tooltip.js']
}
 ES6 プラグイン
プラグインが node_modules にあり、ES6 モジュールをエクスポートする場合、transpile ビルドオプションに追加する必要がある場合があります:
module.exports = {
  build: {
    transpile: ['vue-tooltip']
  }
}
 その他のビルドオプションについては、configuration build のドキュメントを参照してください。
クライアントまたはサーバーサイドのみ
一部のプラグインは SSR がサポートされていないため、ブラウザのみで機能する場合があります。
従来のプラグインに名前を付ける
プラグインがクライアント、もしくはサーバーサイドのみで実行されると想定される場合、.client.js または .server.js は、プラグインファイルの拡張子として適用できます。ファイルはそれぞれの(クライアントまたはサーバー)サイドのみに自動的に含まれます。
export default {
  plugins: [
    '~/plugins/foo.client.js', // クライアントサイドのみ
    '~/plugins/bar.server.js', // サーバーサイドのみ
    '~/plugins/baz.js' // クライアントサイドとサーバーサイド両方
  ]
}
 オブジェクト構文
plugins の mode プロパティ('client' または 'server')でオブジェクト構文を使用することもできます。
export default {
  plugins: [
    { src: '~/plugins/both-sides.js' },
    { src: '~/plugins/client-only.js', mode: 'client' }, // クライアントサイドのみ
    { src: '~/plugins/server-only.js', mode: 'server' } // サーバーサイドのみ
  ]
}
 $root とコンテキストの挿入 
ときどき、アプリケーション内で関数や値を利用できるようにしたい場合があります。これらの変数を Vue インスタンス(クライアントサイド)、コンテキスト(サーバーサイド)、さらには Vuex ストアに挿入できます。これらの関数の前に $ を付けるのが慣例です。
Nuxt はこれを簡単に行うための inject(key、value メソッドを提供します。関数をエクスポートするとき、2 番目のパラメーターとして Inject が指定されます。$ は、キーの先頭に自動的に追加されます。
beforeCreate フックと created フックのみがクライアント、サーバーサイド両方から呼び出されることを把握しておくことが重要です。他のすべてのフックはクライアントサイドからのみ呼び出されます。export default ({ app }, inject) => {
  // Vue、コンテキスト、そしてストアに $hello(msg)を挿入します。
  inject('hello', msg => console.log(`Hello ${msg}!`))
}
 export default {
  plugins: ['~/plugins/hello.js']
}
 $hello サービスは、ページ、コンポーネント、プラグイン、ストアアクションの context と this にアクセスできるようになりました。
export default {
  mounted() {
    this.$hello('mounted')
    // console.log 'Hello mounted!' が呼び出される
  },
  asyncData({ app, $hello }) {
    $hello('asyncData')
    // Nuxt <= 2.12 を使用する場合は 👇
    app.$hello('asyncData')
  }
}
 export const state = () => ({
  someValue: ''
})
export const actions = {
  setSomeValueToWhatever({ commit }) {
    this.$hello('store action')
    const newValue = 'whatever'
    commit('changeSomeValue', newValue)
  }
}
 Vue.use()、Vue.component() を使用しないでください、またグローバルに、Nuxt インジェクション専用のこの関数内に Vue を接続しないでください。サーバーサイドでメモリリークが発生します。extendPlugins プロパティ
プラグインを拡張したり、Nuxt によって作成されたプラグインの順序を変更したりすることができます。この関数は plugin オブジェクトの配列を受け入れ、プラグインオブジェクトの配列を返す必要があります。
プラグインの順序を変更する例:
export default {
  extendPlugins(plugins) {
    const pluginIndex = plugins.findIndex(
      ({ src }) => src === '~/plugins/shouldBeFirst.js'
    )
    const shouldBeFirstPlugin = plugins[pluginIndex]
    plugins.splice(pluginIndex, 1)
    plugins.unshift(shouldBeFirstPlugin)
    return plugins
  }
}
 グローバルミックスイン
グローバルミックスインは Nuxt プラグインで簡単に追加できますが、正しく処理しないとトラブルやメモリリークが発生する可能性があります。アプリケーションにグローバルミックスインを追加するときは、常にフラグを使用して複数回登録しないようにする必要があります:
import Vue from "vue"
// 他の mixin と衝突しないように
// フラグの名前は必ずユニークなものにしてください。
if (!Vue.__my_mixin__) {
  Vue.__my_mixin__ = true
  Vue.mixin({ ... }) // ミックスインを設定する
}
 
 
        Sébastien Chopin
       
 
        Nazaré da Piedade
       
 
        Nobu
       
 
        川音리오
       
 
        Maciek Palmowski
       
 
        Nestor Vera
       
 
        Daniel Roe
       
 
        Yue Yang
       
 
        Jeronimas
       
 
        Alessandro Carrano
       
 
        Clément Ollivier
       
 
        Alexander Lichter
       
 
        N3-rd
       
 
        Adrien Zaganelli
       
 
        Mag
       
 
        Stefan Huber
       
 
        Olga Bulat
       
 
        Paiva
       
 
        Florian Reuschel
       
 
        Savas Vedova
       
 
        Steven
       
 
        Vinícius Alves
       
 
        Kareem Dabbeet
       
 
        Valentín Costa
       
 
        Ryan Skinner
       
 
        Alex Hirzel
       
 
        Ajeet Chaulagain
       
 
        René Eschke
       
 
        Nico Devs
       
 
        Muhammad
       
 
        Naoki Hamada
       
 
        Tom
       
 
        Yann Aufray
       
 
        Anthony Chu
       
 
        Nuzhat Minhaz
       
 
        Lucas Portet
       
 
        Richard Schloss
       
 
        Bobby
       
 
        bpy
       
 
        Antony Konstantinidis
       
 
        Hibariya
       
 
        Jose Seabra
       
 
        Eze
       
 
        Florian Lefebvre
       
 
        Lucas Recoaro
       
 
        Julien SEIXAS