Quand utiliser "--force" et "--legacy-peer-deps" avec npm ?
Le gestionnaire de paquets NPM fournit de nombreuses fonctionnalités pour gérer le fonctionnement de votre projet. Le système de dépendances permet notamment d'indiquer aux utilisateurs les librairies dont votre projet a besoin pour fonctionner. Ce système de dépendances possède différentes catégories, dont les "peerDependencies". Ce sont des dépendances pour lesquelles vous indiquez que votre code est compatible. Ne pas les installer peut provoquer des dysfonctionnements dans votre code, mais il peut y avoir des conflits. NPM fournit des options pour vous aider à gérer ces conflits.
Ces conflits ont été gérés différemment par NPM au fur et à mesure des versions. Avant la version 3, NPM installait toutes les librairies du groupe "peerDependencies" par défaut. Cela occasionnait beaucoup de conflits et d'erreurs. De la version 3 à la version 6, NPM n'installait plus ces dépendances, c'était à l'utilisateur de le faire. La version 7 revient au comportement d'origine, mais le code interne de NPM a été retravaillé, il y a moins de conflits et d'erreurs. L'installation des dépendances ne s'arrête qu'en cas de conflit. En parallèle, des options ont été ajoutées afin d'aider l'utilisateur en cas de conflit.
L'option "--legacy-peer-deps" indique à NPM d'adopter le même comportement que dans les versions 3 à 6, c’est-à-dire de ne pas installer les dépendances. C'est ensuite à vous d'installer les dépendances une à une. Cela peut vous permettre d'utiliser la librairie en installant uniquement ce dont vous avez besoin, et en n'installant pas les dépendances provoquant un conflit.
npm install --legacy-peer-deps
L'option "--force" force l'installation des dépendances en ignorant les erreurs. Ce sera ensuite à vous de résoudre les problèmes dans votre projet. Vous pourrez ensuite paramétrer votre projet ou changer les versions des dépendances de manière à pouvoir résoudre le conflit.
npm install --force