You are browsing Nuxt 2 docs. Go to Nuxt 3 docs, or learn more about Nuxt 2 Long Term Support.

Page traduite Le contenu de cette page peut être déprécié.

nuxt.config

Par défaut, Nuxt est configuré de sorte à pouvoir couvrir la plupart des cas. Cette configuration peut être écrasée grâce au fichier nuxt.config.js.

nuxt.config.js

alias

Cette option vous permet de définir des alias qui seront disponibles dans votre JavaScript et CSS.

nuxt.config.js
import { resolve } from 'path'

export default {
  alias: {
    'style': resolve(__dirname, './assets/style')
  }
}

build

Cette option permet de configurer différents paramètres lors de l'étape de build, cela inclus les loaders, les noms de fichiers, la configuration Webpack ainsi que la transpilation.

nuxt.config.js
export default {
  build: {
    /*
     ** On peut personnaliser la configuration de Webpack ici
     */
    extend(config, ctx) {}
  }
}

css

Cette option permet de définir les fichiers CSS, les modules et les librairies que l'on veut inclure globalement (sur chaque page).

nuxt.config.js
export default {
  css: ['~/assets/css/main.css', '~/assets/css/animations.scss']
}

On peut omettre l'extension pour les fichiers CSS/SCSS/Postcss/Less/Stylus/... listés dans le tableau css du fichier nuxt.config.js.

nuxt.config.js
export default {
  css: ['~/assets/css/main', '~/assets/css/animations']
}

En omettant l'extension, cela nous permet de ne pas avoir à renommer le fichier si jamais on décide de le passer du CSS au SASS.

dev

Cette option permet de définir le mode development ou production de Nuxt (utile lorsque l'on veut utiliser Nuxt de façon programmatique).

nuxt.config.js
export default {
  dev: process.env.NODE_ENV !== 'production'
}

env

Cette option permet de définir des variables d'environment qui seront disponibles côté client mais aussi serveur.

nuxt.config.js
export default {
  env: {
    baseUrl: process.env.BASE_URL
  }
}

runtimeConfig

La configuration d'exécution a une prise en charge intégrée de dotenv pour une meilleure sécurité et un développement plus rapide. La configuration d'exécution est ajoutée au payload Nuxt, il n'est donc pas nécessaire de reconstruire afin de mettre à jour la configuration d'exécution lorsque vous travaillez en développement ou avec un rendu côté serveur ou des applications côté client uniquement. (Pour les sites statiques, vous devrez toujours régénérer votre site pour voir les changements.)

.env support

Si vous avez un fichier .env dans le répertoire racine de votre projet, il sera automatiquement chargé dans process.env et accessible dans votre nuxt.config/serverMiddleware et tout autre fichier qu'ils importent.

Vous pouvez personnaliser le chemin en utilisant --dotenv <file> ou désactiver complètement avec --dotenv false. Par exemple, vous pouvez spécifier un fichier ".env" différent dans les environnements de production, de transfert ou de développement.

publicRuntimeConfig

  • doit contenir toutes les variables env qui sont publiques car elles seront exposées sur le frontend. Cela pourrait inclure une référence à votre URL publique par exemple.
  • est disponible en utilisant $config à la fois sur le serveur et le client.
nuxt.config.js
export default {
  publicRuntimeConfig: {
    baseURL: process.env.BASE_URL || 'https://v2.nuxt.com'
  }
}

privateRuntimeConfig

  • doit contenir toutes les variables d'environnement qui sont privées et qui ne doivent pas être exposées sur le frontend. Cela pourrait inclure une référence à vos jetons secrets API par exemple.
  • n'est disponible que sur le serveur utilisant le même $config (il remplace publicRuntimeConfig)
nuxt.config.js
export default {
  privateRuntimeConfig: {
    apiSecret: process.env.API_SECRET
  }
}

Utilisation de vos valeurs de configuration:

Vous pouvez ensuite accéder à ces valeurs n'importe où en utilisant le contexte dans vos pages, magasin, composants et plugins en utilisant this.$config ou context.$config.

pages/index.vue
<script>
  asyncData ({ $config: { baseURL } }) {
    const posts = await fetch(`${baseURL}/posts`)
      .then(res => res.json())
  }
</script>

Dans vos modèles, vous pouvez accéder à vos runtimeConfigs directement en utilisant $config.*

pages/index.vue
<template>
  <p>Votre url est: {{ $config.baseURL}}</p>
</template>
Votre configuration privée peut être exposée si vous utilisez $config en dehors d'un contexte de serveur uniquement (par exemple, si vous utilisez $config dans fetch, asyncData ou directement dans votre modèle).

generate

Cette option permet de définir les paramètres pour chaque route dynamique de l'application, ces derniers seront transformés en fichiers HTML par Nuxt.

nuxt.config.js
export default {
  generate: {
    dir: 'gh_pages', // gh_pages/ au lieu de dist/
    subFolders: false // les fichiers HTML sont générés en fonction du chemin de la route
  }
}
nuxt.config.js
export default {
    head: {
    title: 'mon titre',
    meta: [
      { charset: 'utf-8' },
            .....
        ]
    }
}

Cette option permet de définir toutes les balises méta par défaut pour l'application.

loading

Cette option permet de personnaliser le composant de chargement que Nuxt utilise par défaut.

nuxt.config.js
export default {
  loading: {
    color: '#fff'
  }
}

modules

Cette option permet d'ajouter des modules Nuxt au projet.

nuxt.config.js
export default {
  modules: ['@nuxtjs/axios']
}

modulesDir

Cette propriété est utilisée pour définir les répertoires des modules afin de déterminer le chemin de résolution. Par ex: le resolveLoading, nodeExternals et postcss de Webpack. Le chemin de la configuration est relatif par rapport à options.rootDir (par défaut: process.cwd()).

nuxt.config.js
export default {
  modulesDir: ['../../node_modules']
}

Adapter cet emplacement peut être nécessaire si le projet est organisé en tant que workspace Yarn avec un mono-repo.

plugins

Cette option permet de définir les plugins JavaScript qui devraient s'exécuter avant l'instanciation de l'application Vue.js principale.

nuxt.config.js
export default {
  plugins: ['~/plugins/url-helpers.js']
}

router

Avec l'option router, on peut écraser la configuration de Nuxt par défaut pour le routeur de Vue.js.

nuxt.config.js
export default {
  router: {
    linkExactActiveClass: 'text-primary'
  }
}

server

Cette option permet de configurer des variables de connexion pour l'instance du serveur de l'application Nuxt.

nuxt.config.js
import path from 'path'
import fs from 'fs'

export default {
  server: {
    https: {
      key: fs.readFileSync(path.resolve(__dirname, 'server.key')),
      cert: fs.readFileSync(path.resolve(__dirname, 'server.crt'))
    }
  }
}

srcDir

Cette option permet de définir le répertoire source de l'application Nuxt.

nuxt.config.js
export default {
  srcDir: 'client/'
}

Exemple de la structure du projet de l'application Nuxt avec le répertoire client:

**-| app/
---| node_modules/
---| nuxt.config.js
---| package.json
---| client/
------| assets/
------| components/
------| layouts/
------| middleware/
------| pages/
------| plugins/
------| static/
------| store/**

dir

Cette option permet de définir des noms personnalisés pour les répertoires de l'application Nuxt.

nuxt.config.js
export default {
  pages: 'views' // Nuxt va chercher les pages dans le répertoire views/ et non pages/
}

pageTransition

Cette option permet de définir les propriétés par défaut pour les transitions de page.

nuxt.config.js
export default {
  pageTransition: 'page'
}

Autres fichiers de configuration

Outre le fichier nuxt.config.js, il peut y avoir d'autres fichiers de configuration à la racine du projet, tels que .eslintrc , prettier.config.json ou .gitignore . Ces derniers sont utilisés pour configurer des outils tels que le linter, le formateur de code ou votre repository Git, ils sont donc décorrélés du fichier nuxt.config.js.

.gitignore

Dans le fichier .gitignore, il faudra ajouter les entrées qui suivent afin qu'elles soient ignorées du système de contrôle de version. node_modules où tous les modules sont installés. Le répertoire nuxt qui est créé lorsque l'on lance les commandes dev ou build. Le répertoire dist qui est créé lorsque l'on lance la commande generate.

.gitignore
node_modules .nuxt dist

Et maintenant ?