La propriété render
Nuxt permet de personnaliser les options au runtime pour le render des pages
bundleRenderer
- 
Type: 
Object 
On peut utiliser cette option pour personnaliser le render pour le bundle de
Vue SSR. Cette option est ignorée lorsque l'on est en mode SPA.
export default {
  render: {
    bundleRenderer: {
      directives: {
        personnalise1(el, dir) {
          // quelque chose ...
        }
      }
    }
  }
}
 Pour en savoir davantage sur les options disponibles, on peut consulter l'API de Vue SSR . Il est recommandé de ne pas utiliser cette option car Nuxt s'occupe déjà de fournir les meilleures valeurs par défaut pour le rendu côté serveur et, une mauvaise configuration pourrait mener à des problèmes de SSR.
etag
- 
Type: 
Object- 
Par défaut: 
{ weak: true } 
 - 
Par défaut: 
 
Pour désactiver etag pour les pages, il faut définir etag: false.
Se référer à la documentation de etag pour voir les options disponibles.
On peut utiliser notre propre fonction de hash en définissant etag.hash:
import { murmurHash128 } from 'murmurhash-native'
export default {
  render: {
    etag: {
      hash: html => murmurHash128(html)
    }
  }
}
 Dans ce cas, nous utilisons murmurhash-native , qui est plus rapide pour des body HTML plus larges. À noter que l'option weak est ignorée lorsque l'on spécifie notre propre fonction de hachage.
compressor
- 
Type 
Object- 
Par défaut: 
{ threshold: 0 } 
 - 
Par défaut: 
 
Lorsque l'on fournit un objet, le middleware de compression sera utilisé (avec les options adéquates).
Si l'on souhaite utiliser notre propre middleware de compression, on peut le désigner directement (ex: otherComp({ myOptions: 'exemple' })).
Pour désactiver la compression, on utilise compressor: false.
fallback
- 
Type 
Object- 
Par défaut: 
{ dist: {}, static: { skipUnknown: true } }- 
la clé 
distest utilisé pour les routes correspondant au publicPath (ie:/_nuxt/*) - 
la clé 
staticest utilisé pour les routes correspondant à/* 
 - 
la clé 
 
 - 
Par défaut: 
 
Options pour le middleware de serve-placeholder .
Si on souhaite désactiver un des deux voire les deux, il suffit de passer une valeur false.
export default {
  render: {
    fallback: {
      static: {
        // Avoid sending 404 for these extensions
        handlers: {
          '.js': false
        }
      }
    }
  }
}
 http2
- 
Type 
Object- 
Par défaut: 
{ push: false, pushAssets: null } 
 - 
Par défaut: 
 
Active les headers push en HTTP2.
On peut surveiller les liens que l'on pousse en utilisant la fonction pushAssets.
Exemple:
pushAssets: (req, res, publicPath, preloadFiles) =>
  preloadFiles
    .filter(f => f.asType === 'script' && f.file === 'runtime.js')
    .map(f => `<${publicPath}${f.file}>; rel=preload; as=${f.asType}`)
 On peut aussi ajouter nos propres ressources au tableau. En utilisant req et res on peut décider quels liens seront poussés en fonction des entêtes de la requête, par exemple en utilisant le cookie contenant le numéro de version de notre application.
Les ressources seront reliées entre elles par un , et passées en tant qu'un seul entête Link.
asyncScripts
- 
Type: 
Boolean- 
Default: 
false 
 - 
Default: 
 
Ajoutez un
asyncattribut à<script>tags pour Nuxt bundles, leur permettant d'être récupérés en parallèle de l'analyse (available with2.14.8+). More information .
injectScripts
- 
Type: 
Boolean- 
Par défaut: 
true 
 - 
Par défaut: 
 
Ajoute le
<script>pour les bundles de Nuxt, il faut le définir àfalsepour render du HTML pur, sans JS (disponible depuis la version2.8.0).
resourceHints
- 
Type: 
Boolean- 
Par défaut: 
true 
 - 
Par défaut: 
 
Ajoute des liens
prefetchetpreloadpour un chargement de page initial plus rapide.
On pourrait souhaiter désactiver cette option seulement si l'on possède beaucoup de pages et de routes.
ssr
- 
Type: 
Boolean- 
Par défaut: 
trueen mode universel etfalseen mode SPA 
 - 
Par défaut: 
 
Active le render SSR
Si non fournie, cette option est automatiquement définie en fonction de la valeur de mode. Elle peut être utile pour dynamiquement activer/désactiver le SSR lors du runtime après que les builds des images soient finis (avec Docker par exemple).
crossorigin
- 
Type: 
String - 
Par défaut: 
undefined 
Permet de personnaliser l'attribut
crossorigindans les balises<link rel="stylesheet">et<script>générées dans le HTML.
Plus d'informations: attributs des paramètres CORS .
ssrLog
- 
Type: 
Boolean|String- 
Par défaut: 
trueen mode développement etfalseen production 
 - 
Par défaut: 
 
Transmet les logs du serveur au navigateur pour un meilleur débogage (disponible uniquement en développement).
Pour réduire (rendu visuel) les logs, on peut utiliser la valeur 'collapsed'.
static
- 
Type: 
Object- 
Par défaut: 
{} 
 - 
Par défaut: 
 
Permet de personnaliser le comportement du répertoire
static/
Se référer à la documentation de serve-static pour voir les options disponibles.
En plus de celles-ci, nous avons introduit une option prefix qui est à true par défaut. Cela a pour but d'ajouter la base du routeur à nos ressources statiques.
Exemple:
- 
Ressource: 
favicon.ico - 
Base du routeur: 
/t - 
Avec 
prefix: true(par défaut):/t/favicon.ico - 
Avec 
prefix: false:/favicon.ico 
Mise en garde:
Certaines ré-écritures d'URL peuvent ne pas respecter le préfixe.
dist
- 
Type: 
Object- 
Par défaut: 
{ maxAge: '1y', index: false } 
 - 
Par défaut: 
 
Options utilisées pour les fichiers distribués. Applicable seulement en production.
Se référer à la documentation de serve-static pour voir les options disponibles.
csp
- 
Type: 
BooleanouObject- 
Par défaut: 
false 
 - 
Par défaut: 
 
On peut utiliser ceci pour configurer le Content-Security-Policy afin de charger des ressources externes.
Pré-requis:
Ces paramètres CSP sont effectifs seulement quand on utilise Nuxt avec target: 'server' pour servir notre application SSR. Les Policies définies dans csp.policies sont ajoutées à la réponse de l'entête HTTP Content-Security-Policy.
Mise à jour des paramètres:
Ces paramètres sont lus directement par le serveur Nuxt à partir du fichier nuxt.config.js. Cela veut dire que des changements à ces paramètres prendront effet lorsque le serveur sera relancé. Il n'y a pas besoin de re-build l'application pour mettre à jour les paramètres CSP.
Méta-balises HTML:
Dans l'objectif d'ajouter <meta http-equiv="Content-Security-Policy"/>  au head, on aura besoin de passer csp.addMeta à true. À noter que cette fonctionnalité est indépendante de la configuration des csp.policies:
- 
cela ajoute seulement un 
script-srctype policy - 
le 
script-srcpolicy contient seulement les hashs des balises<script>qui ont été inline. 
Lorsque csp.addMeta est à true, la liste complète des policies définies est toujours ajoutée à l'entête de réponse HTTP.
À noter que les hashs CSP ne seront pas ajoutés en tant que <meta> si la policy script-src contient 'unsafe-inline'. Cela est dû au fait que le navigateur ignore 'unsafe-inline' si des hashs sont présents. Il faut passer l'option unsafeInlineCompatibility à true si on veut que les hashs et 'unsafe-inline' soient compatibles avec CSPv1. Dans ce cas, la balise <meta> ne contiendra toujours que les hashs des des balises <script> inline, et les policies définies dans csp.policies seront utilisées dans l'entête de réponse HTTP.
export default {
  render: {
    csp: true
  }
}
// OU
export default {
  render: {
    csp: {
      hashAlgorithm: 'sha256',
      policies: {
        'script-src': [
          'https://www.google-analytics.com',
          'https://name.example.com'
        ],
        'report-uri': ['https://report.example.com/report-csp-violations']
      },
      addMeta: true
    }
  }
}
// OU
/*
  L'exemple suivant permet à Google Analytics, LogRocket.io, et Sentry.io
  de permettre des logs ainsi qu'un tracking analytique.
  Plus d'informations sont disponibles sur cet article de Sentry.io
  afin de comprendre quel lien de tracking nous devrions utiliser.
  https://blog.sentry.io/2018/09/04/how-sentry-captures-csp-violations
*/
const PRIMARY_HOSTS = `loc.example-website.com`
export default {
  render: {
    csp: {
      reportOnly: true,
      hashAlgorithm: 'sha256',
      policies: {
        'default-src': ["'self'"],
        'img-src': ['https:', '*.google-analytics.com'],
        'worker-src': ["'self'", `blob:`, PRIMARY_HOSTS, '*.logrocket.io'],
        'style-src': ["'self'", "'unsafe-inline'", PRIMARY_HOSTS],
        'script-src': [
          "'self'",
          "'unsafe-inline'",
          PRIMARY_HOSTS,
          'sentry.io',
          '*.sentry-cdn.com',
          '*.google-analytics.com',
          '*.logrocket.io'
        ],
        'connect-src': [PRIMARY_HOSTS, 'sentry.io', '*.google-analytics.com'],
        'form-action': ["'self'"],
        'frame-ancestors': ["'none'"],
        'object-src': ["'none'"],
        'base-uri': [PRIMARY_HOSTS],
        'report-uri': [
          `https://sentry.io/api/<project>/security/?sentry_key=<key>`
        ]
      }
    }
  }
}
 
 
        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