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.
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.
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).
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.
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).
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.
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.
export default {
publicRuntimeConfig: {
baseURL: process.env.BASE_URL || 'https://nuxtjs.org'
}
}
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)
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.
<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.*
<template>
<p>Votre url est: {{ $config.baseURL}}</p>
</template>
$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.
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
}
}
head
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.
export default {
loading: {
color: '#fff'
}
}
modules
Cette option permet d'ajouter des modules Nuxt au projet.
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()).
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.
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.
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.
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.
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.
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.
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.
node_modules .nuxt dist
Et maintenant ?
Clément Ollivier
Daniel Roe
Alex Hirzel
Ajeet Chaulagain
René Eschke
Sébastien Chopin
Nico Devs
Muhammad
Nazaré da Piedade
Naoki Hamada
Tom
Yann Aufray
Anthony Chu
Nuzhat Minhaz
Lucas Portet
Richard Schloss
Xanzhu
bpy
Antony Konstantinidis
Hibariya
Jose Seabra
Eze
Florian LEFEBVRE
Lucas
Julien SEIXAS
Hugo
Sylvain Marroufin
Spencer Cooley
Piotr Zatorski
Vladimir Semenov
Harry Allen
kazuya kawaguchi
Unai Mengual
Hyunseung Lee
Alexandre Chopin
pooya parsa
Nick Medrano
Mosaab Emam
Iljs Путлер Капут
Heitor Ramon Ribeiro
Nero
Yoon Han
Ikko Ashimine
FamCodings
Ayouli
F. Hinkelmann
felipesuri
Christophe Carvalho Vilas-Boas
Leoš Literák
Trizotti
Marcello Bachechi
Rodolphe
Thomas Underwood
Shek Evgeniy
Lukasz Formela
Hugo Torzuoli