Configuração
Por predefinição, a Nuxt está configurada para abranger a maioria dos casos de uso. Esta configuração predefinida pode ser sobrescrita pelo ficheiro nuxt.config.js.
A Propriedade css 
A Nuxt permite-nos definir os ficheiros, módulos e bibliotecas que quisermos definir globalmente (incluídos em todas as páginas).
sass precisamos certificar-nos de que instalamos os pacotes sass e sass-loader.No nuxt.config.js, adicionamos os recursos de folha de estilo em cascata:
export default {
  css: [
    // Carregar um módulo de Node.js diretamente
    // (neste exemplo é um ficheiro de Sass)
    'bulma',
    // ficheiro de CSS no projeto
    '~/assets/css/main.css',
    // ficheiro de SCSS no projeto
    '~/assets/css/main.scss'
  ]
}
 Extensões de Estilo
Podemos omitir a extensão do ficheiro para ficheiros CSS, SCSS, PostCSS, Less, Stylus e muitos mais listados no vetor css no nosso ficheiro de configuração da Nuxt:
export default {
  css: ['~/assets/css/main', '~/assets/css/animations']
}
 main.scss e main.css, e não especificarmos uma extensão na entrada do vetor css, por exemplo, css: ['~/assets/css/main'], então apenas um dos ficheiros será carregado, dependendo da ordem da styleExtensions. Neste caso apenas o ficheiro .css será carregado e o ficheiro .scss será ignorado porque o .css vem primeiro no vetor da styleExtensions por predefinição.Ordem predefinida: ['css', 'pcss', 'postcss', 'styl', 'stylus', 'scss', 'sass', 'less'].
Pré-processadores
Graças ao vue-loader , podemos usar qualquer tipo de pré-processador para o nosso <template> ou <style>: usamos o atributo lang.
Exemplo do nosso pages/index.vue usando Pug  e Sass :
<template lang="pug">
  h1.red Hello {{ name }}!
</template>
<style lang="scss">
  .red {
    color: red;
  }
</style>
 Para usar estes pré-processadores, precisamos os seus carregadores de Webpack:
yarn add --dev pug pug-plain-loader
yarn add --dev sass sass-loader@10
 npm install --save-dev pug pug-plain-loader
npm install --save-dev sass sass-loader@10
 Recursos Externos
Definições Globais
Podemos incluir os nossos recursos externos no objeto ou função head. Tal como descrita na documentação da interface de programação de aplicação da head , os exemplos seguintes mostram a utilização de head como um objeto e como uma função. Se quisermos usar valores do nosso componente .vue como propriedades computadas ou dados, podemos usar a função head, retornando o objeto head final. Também podemos passar para cada recurso uma body: true opcional para incluir o recurso antes do marcador de fechamento </body>.
Incluímos os nossos recursos em nuxt.config.js (neste caso, no objeto head):
export default {
  head: {
    script: [
      {
        src: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js'
      }
    ],
    link: [
      {
        rel: 'stylesheet',
        href: 'https://fonts.googleapis.com/css?family=Roboto&display=swap'
      }
    ]
  }
}
 Definições Locais
Incluímos os nossos recursos no nosso ficheiro .vue dentro do diretório pages/ (neste caso, na função head):
<template>
  <h1>About page with jQuery and Roboto font</h1>
</template>
<script>
  export default {
    head() {
      return {
        script: [
          {
            src: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js'
          }
        ],
        link: [
          {
            rel: 'stylesheet',
            href: 'https://fonts.googleapis.com/css?family=Roboto&display=swap'
          }
        ]
      }
    }
  }
</script>
<style scoped>
  h1 {
    font-family: Roboto, sans-serif;
  }
</style>
 Extensões de PostCSS
Se estiver presente, renomeamos ou eliminamos o postcss.config.js no nosso diretório de projeto. Depois, no nosso ficheiro nuxt.config.js, adicionamos o seguinte:
export default {
  build: {
    postcss: {
      // Adicionar os nomes de extensões como chaves e argumentos como valores.
      // Instalá-los antes como dependências com `npm` ou `yarn`.
      plugins: {
        // Desativar uma extensão passando `false` como valor.
        'postcss-url': false,
        'postcss-nested': {},
        'postcss-responsive-type': {},
        'postcss-hexrgba': {}
      },
      preset: {
        // Alterar as definições de `postcss-preset-env`
        autoprefixer: {
          grid: true
        }
      }
    }
  }
}
 JSX
A Nuxt usa @nuxt/babel-preset-app , o qual se baseia no @vue/babel-preset-app  oficial para a configuração predefinida da Babel, para podermos usar a JSX nos nossos componentes.
Também podemos usar JSX no método render dos nossos componentes:
export default {
  data () {
    return { name: 'World' }
  },
  render (h) {
    return <h1 class="red">{this.name}</h1>
  }
}
 O ato de apelidar createElement como h é uma convenção comum que veremos no ecossistema da Vue, mas, na verdade, é opcional para a JSX, uma vez que esta injeta automaticamente  const h = this.$createElement em qualquer método e recuperador (não funções ou funções de seta) declarados na sintaxe da ES2015 que tem extensão de sintaxe de JavaScript, então podemos deixar de lado o parâmetro (h).
Podemos saber mais sobre como utilizá-la na secção da extensão de sintaxe de JavaScript (JSX) da documentação da Vue.js.
Ignorar Ficheiros
.nuxtignore 
Podemos utilizar um ficheiro .nuxtignore para permitir que a Nuxt ignore os ficheiros de layout, page, store e middleware no diretório raiz do nosso projeto (rootDir) durante a fase de construção. O ficheiro .nuxtignore está sujeito à mesma especificação que os ficheiros .gitignore e .eslintignore, em que cada linha é um padrão de globo indicando quais os ficheiros que devem ser ignorados.
# ignorar a disposição foo.vue
layouts/foo.vue
# ignorar os ficheiros de disposição cujo nome termina com -ignore.vue
layouts/*-ignore.vue
# ignorar a página bar.vue
pages/bar.vue
# ignorar a página dentro da pasta ignore
pages/ignore/*.vue
# ignorar o armazém de estado baz.js
store/baz.js
# ignorar os ficheiros de armazém de estado correspondentes a _.test._
store/ignore/_.test._
# ignorar os ficheiros de intermediários na pasta foo exceto foo/bar.js
middleware/foo/*.js !middleware/foo/bar.js
 A Propriedade ignorePrefix 
Qualquer ficheiro em pages/, layout/, middleware/ ou store/ será ignorado durante a construção se o seu nome de ficheiro começar com o prefixo especificado por ignorePrefix.
Por predefinição, todos os ficheiros que comecem por - serão ignorados, tais como store/-foo.js e pages/-bar.vue. Isto permite a colocação de testes, utilitários e componentes com os seus chamadores sem serem convertidos em rotas, armazéns de estado, etc.
A Propriedade ignore 
Mais personalizável do que ignorePrefix: todos os ficheiros que correspondem a padrões de globo especificados dentro de ignore serão ignorados na construção:
export default {
  ignore: 'pages/bar.vue'
}
 ignoreOptions 
O nuxtignore utiliza node-ignore nos bastidores, a ignoreOptions pode ser configurada como options do node-ignore:
export default {
  ignoreOptions: {
    ignorecase: false
  }
}
 Estender a Configuração da Webpack
Podemos estender a configuração da Webpack da Nuxt através da opção extend no nosso nuxt.config.js. A opção extend da propriedade build é um método que aceita dois argumentos. O primeiro argumento é o objeto config da Webpack exportado da configuração da Webpack da Nuxt. O segundo parâmetro é um objeto de contexto com as seguintes propriedades booleanas: { isDev, isClient, isServer, loaders }.
export default {
  build: {
    extend(config, { isDev, isClient }) {
      // ..
      config.module.rules.push({
        test: /\.(ttf|eot|svg|woff(2)?)(\?[a-z0-9=&.]+)?$/,
        loader: 'file-loader'
      })
      // Definir o modo da Webpack para desenvolvimento se `isDev` for verdadeiro
      if (isDev) {
        config.mode = 'development'
      }
    }
  }
}
 O método extend é chamado duas vezes — uma para o pacote do cliente e outra para o pacote do servidor.
Personalizar a Configuração dos Pedaços
Podemos querer ajustar um pouco a configuração da otimização , evitando uma reescrita do objeto predefinido:
export default {
  build: {
    extend(config, { isClient }) {
      if (isClient) {
        config.optimization.splitChunks.maxSize = 200000
      }
    }
  }
}
 Inspecionar a Configuração da Webpack
Para projetos complexos e depuração, às vezes é útil verificar como será a configuração final da Webpack. Felizmente, podemos executar o comando nuxt webpack de dentro do nosso projeto para gerar a configuração. Consultar este pedido de atualização de repositório #7029  para obter mais detalhes.
Adicionar Extensões de Webpack
No nosso ficheiro nuxt.config.js, sob a opção build, podemos passar a opção plugins da Webpack, da mesma maneira que o faríamos num ficheiro webpack.config.js .
Neste exemplo, adicionamos o método ProvidePlugin  embutido da Webpack para carregar automaticamente módulos de JavaScript (lodash e jQuery) ao invés de ter que importá-los com import ou require em todos os lugares.
import webpack from 'webpack'
export default {
  build: {
    plugins: [
      new webpack.ProvidePlugin({
        // módulos globais
        $: 'jquery',
        _: 'lodash'
      })
    ]
  }
}
 Nota: podemos não precisar de jQuery numa aplicação baseada em Vue.
Com a Nuxt, também podemos controlar o contexto de execução das extensões: se estas devem ser executadas nas construções do client ou do server (ou diferenciar as construções de dev e prod) dentro da build.extend , onde também podemos passar manualmente as extensões da Webpack.
Estender a Webpack para Carregar Ficheiros de Áudio
Os ficheiros de áudio devem ser processados pelo file-loader. Este carregador já está incluído na configuração predefinida da Webpack, mas não está configurado para lidar com os ficheiros de áudio. Precisamos de estender a sua configuração predefinida no nuxt.config.js:
export default {
  build: {
    extend(config, ctx) {
      config.module.rules.push({
        test: /\.(ogg|mp3|wav|mpe?g)$/i,
        loader: 'file-loader',
        options: {
          name: '[path][name].[ext]'
        }
      })
    }
  }
}
 Agora podemos importar os ficheiros de áudio desta maneira <audio :src="require('@/assets/water.mp3')" controls></audio>.
Se quisermos apenas escrever: <audio src="@/assets/water.mp3" controls></audio>, precisamos dizer ao vue-loader para requerer automaticamente os nossos ficheiros de áudio quando os referenciarmos com o atributo src:
export default {
  build: {
    loaders: {
      vue: {
        transformAssetUrls: {
          audio: 'src'
        }
      }
    },
    extend(config, ctx) {
      config.module.rules.push({
        test: /\.(ogg|mp3|wav|mpe?g)$/i,
        loader: 'file-loader',
        options: {
          name: '[path][name].[ext]'
        }
      })
    }
  }
}
 Editar o Hospedeiro e a Porta
Por predefinição, o hospedeiro do servidor de desenvolvimento da Nuxt é o localhost, o qual apenas pode ser acessado de dentro da máquina hospedeira. Para podermos ver a nossa aplicação noutro dispositivo temos de modificar o hospedeiro. Podemos modificar o nosso hospedeiro no nosso ficheiro nuxt.config.js.
O hospedeiro '0.0.0.0' é designado para dizer a Nuxt para resolver um endereço de hospedeiro, o qual é acessível a conexões fora da máquina hospedeira (por exemplo, rede local). Se ao hospedeiro for atribuído o valor de sequência de caracteres '0' (não 0, que é falso), ou '0.0.0.0' o nosso endereço de protocolo de internet local será atribuída à nossa aplicação da Nuxt:
export default {
  server: {
    host: '0' // predefinida como: localhost
  }
}
 Também podemos alterar o número da porta a partir da porta predefinida de 3000:
export default {
  server: {
    port: 8000 // predefinida como: 3000
  }
}
 '0' (não 0, que é falso), um número de porta aleatório será atribuído à nossa aplicação da Nuxt.Embora possamos modificar isto no ficheiro nuxt.config.js, não é aconselhável fazê-lo, porque pode causar-nos problemas ao hospedar o nosso sítio. É muito melhor modificar o hospedeiro e a porta diretamente no comando de execução do desenvolvimento:
HOST=0 PORT=8000 npm run dev
 ou criar um programa no nosso package.json:
"scripts": {
  "dev:host": "nuxt --hostname '0' --port 8000"
}
 Configuração Assíncrona
Embora seja melhor usar a configuração normal export default {}, podemos ter uma configuração assíncrona exportando uma função assíncrona que retorna o objeto de configuração:
import axios from 'axios'
export default async () => {
  const data = await axios.get('https://api.nuxtjs.dev/posts')
  return {
    head: {
      title: data.title
      //... o resto da configuração
    }
  }
}
 axios não pode ser utilizado no nuxt.config.js. Precisaremos importar o axios e configurá-lo novamente.Configurações Adicionais
nuxt.config.js tem mais opções de personalização e configuração! Consultar todas as chaves no glossário de configuração .
 
        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