Comment mettre à jour vers la version 11
Pour effectuer la mise à jour vers la version 11, exécutez la commande suivante :
Bon à savoir : Si vous utilisez TypeScript, assurez-vous également de mettre à jour
@types/react
et@types/react-dom
vers leurs versions correspondantes.
Webpack 5
Webpack 5 est maintenant la configuration par défaut pour toutes les applications Next.js. Si vous n'aviez pas de configuration webpack personnalisée, votre application utilise déjà webpack 5. Si vous avez une configuration webpack personnalisée, vous pouvez consulter la documentation webpack 5 de Next.js pour obtenir des conseils de mise à jour.
Nettoyage de distDir
désormais activé par défaut
Le répertoire de sortie de construction (par défaut .next
) est maintenant vidé par défaut, à l'exception des caches Next.js. Vous pouvez vous référer au RFC sur le nettoyage de distDir
pour plus d'informations.
Si votre application dépendait de ce comportement auparavant, vous pouvez désactiver ce nouveau comportement par défaut en ajoutant le flag cleanDistDir: false
dans next.config.js
.
PORT
est maintenant supporté pour next dev
et next start
Next.js 11 prend en charge la variable d'environnement PORT
pour définir le port sur lequel l'application s'exécute. L'utilisation de -p
/--port
est toujours recommandée, mais si vous étiez empêché d'utiliser -p
d'une manière ou d'une autre, vous pouvez maintenant utiliser PORT
comme alternative :
Exemple :
Personnalisation de next.config.js
pour importer des images
Next.js 11 prend en charge l'importation d'images statiques avec next/image
. Cette nouvelle fonctionnalité repose sur la capacité à traiter les imports d'images. Si vous aviez précédemment ajouté les packages next-images
ou next-optimized-images
, vous pouvez soit passer à la nouvelle prise en charge intégrée utilisant next/image
, soit désactiver la fonctionnalité :
Supprimer super.componentDidCatch()
de pages/_app.js
La méthode componentDidCatch
du composant next/app
a été dépréciée dans Next.js 9 car elle n'est plus nécessaire et est depuis devenue une opération sans effet. Dans Next.js 11, elle a été supprimée.
Si votre pages/_app.js
a une méthode componentDidCatch
personnalisée, vous pouvez supprimer super.componentDidCatch
car elle n'est plus nécessaire.
Supprimer Container
de pages/_app.js
Cette exportation a été dépréciée dans Next.js 9 car elle n'est plus nécessaire et est depuis devenue une opération sans effet avec un avertissement pendant le développement. Dans Next.js 11, elle a été supprimée.
Si votre pages/_app.js
importe Container
depuis next/app
, vous pouvez le supprimer car il a été retiré. Apprenez-en plus dans la documentation.
Supprimer l'utilisation de props.url
dans les composants de page
Cette propriété a été dépréciée dans Next.js 4 et affichait depuis un avertissement pendant le développement. Avec l'introduction de getStaticProps
/ getServerSideProps
, ces méthodes interdisaient déjà l'utilisation de props.url
. Dans Next.js 11, elle a été complètement supprimée.
Vous pouvez en apprendre plus dans la documentation.
Supprimer la propriété unsized
sur next/image
La propriété unsized
sur next/image
a été dépréciée dans Next.js 10.0.1. Vous pouvez utiliser layout="fill"
à la place. Dans Next.js 11, unsized
a été supprimée.
Supprimer la propriété modules
sur next/dynamic
Les options modules
et render
pour next/dynamic
ont été dépréciées dans Next.js 9.5. Cela a été fait pour rapprocher l'API next/dynamic
de React.lazy
. Dans Next.js 11, les options modules
et render
ont été supprimées.
Cette option n'a pas été mentionnée dans la documentation depuis Next.js 8, il est donc peu probable que votre application l'utilise.
Si votre application utilise modules
et render
, vous pouvez vous référer à la documentation.
Supprimer Head.rewind
Head.rewind
était une opération sans effet depuis Next.js 9.5. Dans Next.js 11, elle a été supprimée. Vous pouvez supprimer en toute sécurité votre utilisation de Head.rewind
.
Locales Moment.js exclues par défaut
Moment.js inclut des traductions pour de nombreuses locales par défaut. Next.js exclut maintenant automatiquement ces locales par défaut pour optimiser la taille du bundle pour les applications utilisant Moment.js.
Pour charger une locale spécifique, utilisez cet extrait de code :
Vous pouvez désactiver ce nouveau comportement par défaut en ajoutant excludeDefaultMomentLocales: false
à next.config.js
si vous ne souhaitez pas ce nouveau comportement. Notez qu'il est fortement recommandé de ne pas désactiver cette nouvelle optimisation car elle réduit considérablement la taille de Moment.js.
Mettre à jour l'utilisation de router.events
Si vous accédez à router.events
pendant le rendu, sachez que dans Next.js 11, router.events
n'est plus fourni pendant le pré-rendu. Assurez-vous d'accéder à router.events
dans useEffect
:
Si votre application utilise router.router.events
, qui était une propriété interne non publique, assurez-vous d'utiliser router.events
à la place.
React 16 vers 17
React 17 a introduit une nouvelle Transformation JSX qui apporte une fonctionnalité de longue date de Next.js à l'écosystème React élargi : ne pas avoir à import React from 'react'
lors de l'utilisation de JSX. Lors de l'utilisation de React 17, Next.js utilisera automatiquement la nouvelle transformation. Cette transformation ne rend pas la variable React
globale, ce qui était un effet secondaire involontaire de l'implémentation précédente de Next.js. Un codemod est disponible pour corriger automatiquement les cas où vous avez accidentellement utilisé React
sans l'importer.
La plupart des applications utilisent déjà la dernière version de React. Avec Next.js 11, la version minimale de React a été mise à jour vers 17.0.2.
Pour effectuer la mise à jour, vous pouvez exécuter la commande suivante :
Ou en utilisant yarn
: