O diretório plugins
O diretório plugins contém seus plugins escritos em JavaScript que você deseja executar antes da instanciação da raiz da aplicação Vue.js.
Este é o lugar para adicionar os plugins do Vue e injetar funções ou constantes. Toda vez que você precisar usar o Vue.use(), você deve criar um ficheiro dentro de plugins/ e adicionar seu caminho ao plugins dentro do nuxt.config.js.
Pacotes externos
Você pode querer usar pacotes/módulos externos dentro da sua aplicação (um grande exemplo é o axios ) para fazer requisições HTTP para ambos servidor e cliente.
Primeiro, instale ele via npm ou yarn.
yarn add @nuxtjs/axios
 npm install @nuxtjs/axios
 Você pode configurar por exemplo os intercetores para reagir a possíveis erros da chamadas da sua API através da aplicação. Dentro deste exemplo nós redirecionamos o usuário para uma página de erro personalizada chamada desculpa (sorry) quando nós recebemos um estado de erro 500 por parte da nossa API.
export default function ({ $axios, redirect }) {
  $axios.onError(error => {
    if (error.response.status === 500) {
      redirect('/sorry')
    }
  })
}
 Por último mas não menos importante, adicionar o módulo e o recentemente criado plugin à configuração do projeto.
module.exports = {
  modules: ['@nuxtjs/axios'],
  plugins: ['~/plugins/axios.js']
}
 Depois podemos usar ele diretamente dentro do seu componentes de página:
<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>
 Uma outra maneira de usar o axios sem instalar o módulo é importando axios diretamente dentro da tag <script>.
<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>
 build > transpile dentro do nuxt.config.js para o carregador do webpack tornar o seu plugin disponível.build: {
  // Você pode estender a configuração do webpack aqui
  transpile: ['npm-package-name'],
},
 Plugins de Vue
Se você quiser usar plugins do vue, como v-tooltip para exibir dicas da ferramenta (tooltips) dentro da sua aplicação, nós precisamos configurar o plugin antes do lançamento da aplicação.
Primeiro, nós precisamos instalar ele
yarn add v-tooltip
 npm install v-tooltip
 Depois criamos o ficheiro plugins/vue-tooltip.js
import Vue from 'vue'
import VTooltip from 'v-tooltip'
Vue.use(VTooltip)
 A propriedade plugins
Então nós adicionamos o caminho do ficheiro dentro a chave plugins do nosso nuxt.config.js. A propriedade plugins permite você adicionar plugins do Vue.js à sua aplicação principal. Todos os caminhos definidos dentro da propriedade plugins serão importados antes da inicialização da aplicação principal.
export default {
  plugins: ['~/plugins/vue-tooltip.js']
}
 Plugins do ES6
Se o plugin está localizado dentro do node_modules e exporta um módulo ES6, você pode precisar adicionar ele à opção de construção transpile:
module.exports = {
  build: {
    transpile: ['vue-tooltip']
  }
}
 Você pode recorrer a documentação da configuração do build para saber mais sobre a opção build.
Apenas no lado do cliente ou servidor
Alguns plugins podem funcionar apenas dentro do browser por causa da falta suporte ao SSR.
Nomear de maneira convencional o plugin
Se é suposto um plugin ser executado apenas no lado do cliente ou servidor, .client.js ou .server.js podem ser aplicados como uma extensão do ficheiro do plugin. O ficheiro será automaticamente incluído apenas no respetivo lado (do cliente ou servidor).
export default {
  plugins: [
    '~/plugins/foo.client.js', // apenas no lado do cliente
    '~/plugins/bar.server.js', // apenas no lado do servidor
    '~/plugins/baz.js' // ambos cliente e servidor
  ]
}
 A sintaxe de objeto
Você pode também usar a sintaxe de objeto com a propriedade mode com o valor ('client' ou 'server') dento de plugins.
export default {
  plugins: [
    { src: '~/plugins/both-sides.js' },
    { src: '~/plugins/client-only.js', mode: 'client' }, // apenas no lado do cliente
    { src: '~/plugins/server-only.js', mode: 'server' } // apenas no lado do servidor
  ]
}
 Injetar dentro do $root e contexto 
Algumas vezes você deseja tornar as funções ou valores disponíveis ao longo da sua aplicação. Você pode injetar essas variáveis dentro das instâncias do Vue (lado do cliente), o contexto (lado do servidor) e até dentro da memória do Vuex. É uma convenção prefixar essas funções com um $.
O Nuxt fornece a você uma maneira de fazer isso facilmente com um método inject(key, value). O inject é dado como segundo parâmetro quando exportamos uma função. O $ será pré-adicionado automaticamente a chave.
beforeCreate e created são chamados ambos, no lado do cliente e no lado do servidor. Todos os outros gatilhos são apenas chamado no lado do cliente.export default ({ app }, inject) => {
  // Injete $hello(msg) dentro do Vue, contexto e memória.
  inject('hello', msg => console.log(`Hello ${msg}!`))
}
 export default {
  plugins: ['~/plugins/hello.js']
}
 Agora o serviço $hello pode ser acessado a partir do context e this dentro das páginas, componentes, plugins, e ações da memória.
export default {
  mounted() {
    this.$hello('mounted')
    // irá exibir no terminal 'Hello mounted!'
  },
  asyncData({ app, $hello }) {
    $hello('asyncData')
    // Se estiver usando Nuxt <= 2.12, use 👇
    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() e globalmente não conecte nada ao Vue dentro desta função, dedicada a injeção do Nuxt. Isso causará vazamento de memória no lado do servidor.A propriedade extendPlugins
Você talvez queira estender os plugins ou mudar as ordem dos plugins criada pelo Nuxt. Esta função aceita um array de objetos de plugin e deve retornar um array de objetos de plugin.
Exemplo de mudança da ordem de plugins:
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
  }
}
 Mixins global
Mixins global pode ser facilmente adicionado com plugins do Nuxt mas pode causar problemas e vazamento de memória quando não manipulado corretamente. Sempre que você adicionar um mixin global a sua aplicação, você deve usar um bandeira para evitar registar ele várias vezes:
import Vue from "vue"
// Certifique-se de pegar um nome único para a bandeira
// assim ele não irá entrar em conflito com qualquer outro mixin.
if (!Vue.__my_mixin__) {
  Vue.__my_mixin__ = true
  Vue.mixin({ ... }) // Depois configure o seu mixin
}
 
 
        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