- Principaux critères de comparaison : multiplateforme, configuration initiale, source des versions de Node, usage quotidien
Node Version Manager (NVM)
- Avec 75,2k étoiles sur GitHub, c’est la solution la plus populaire pour gérer les versions de Node
- Arrivé très tôt, il a gagné une forte popularité dans la communauté
- Il ne prend pas totalement en charge Windows et fonctionne via GitBash, Cygwin, WSL, etc.
- Il existe un paquet distinct pour Windows,
nvm-windows, mais ce n’est pas NVM lui-même
- Il ne prend en charge que les shells POSIX (
bash, zsh), ce qui exclut les utilisateurs de Fish et autres
- L’installation se fait via une commande simple
- Il peut déterminer la version de Node.js à utiliser via le fichier
.nvmrc
- La commande
nvm use ne définit la version de Node.js que pour le shell courant ; la version reste donc la même même après avoir quitté le dossier du projet
- Cela oblige à toujours garder en tête la version de Node.js du shell courant et celle requise par le projet
- C’est mieux que de gérer manuellement toutes les versions de Node.js, mais on est encore loin d’une intégration parfaite
N
- Gestionnaire de versions de Node.js populaire avec 18,5k étoiles sur GitHub
- Il n’est pas multiplateforme et présente encore plus de limitations que NVM
- Il ne fonctionne pas dans les shells natifs Windows, Git for Windows Bash ni avec la DLL Cygwin
- Il peut être installé directement via NPM ou Brew, ou en téléchargeant un script
sh
- Il peut détecter directement la version de Node à partir de la section
"engines" de package.json
- Pour utiliser la bonne version de Node.js selon les projets, il faut la suivre soi-même
- Il gère une version « globale » de Node.js ; après fermeture du shell, la version de Node utilisée dans le dernier projet reste active
Fast Node Manager (FNM)
- Gestionnaire de versions de Node écrit en Rust, avec 15,2k étoiles sur GitHub
- C’est le premier gestionnaire de versions de Node multiplateforme de la liste
- Il fonctionne sur Windows sans installation d’autres paquets
- Le processus d’installation est clair et intuitif
- Il gère les versions de Node.js par shell et utilise une version « par défaut » lorsqu’aucune version n’est définie pour le projet
- Il propose un changement automatique de version de Node.js selon le dossier, mais cela nécessite une configuration
- Pour que le basculement automatique fonctionne correctement, les versions de Node.js requises doivent être installées à l’avance
- Il ne peut détecter la version de Node qu’à partir des fichiers
.node-version ou .nvmrc
Volta
- Avec 10k étoiles sur GitHub, c’est une étoile montante parmi les gestionnaires de versions
- Il est écrit en Rust et est multiplateforme
- Le processus d’installation est fluide sur les systèmes de type Unix
- Aucun fichier supplémentaire n’est nécessaire pour définir la version de Node.js
- Il récupère directement la configuration depuis
package.json
- La section
"engines" se trouve juste à côté de la configuration Volta, ce qui facilite la synchronisation des versions
- Il peut gérer une toolchain complète, et pas seulement la version de Node.js : il peut aussi basculer dynamiquement la version de Yarn
- À chaque exécution d’une commande d’installation, il garantit que les versions de Node.js et de Yarn correspondent à celles déclarées
PNPM
- Souvent considéré comme une alternative à NPM ou Yarn, mais il peut aussi gérer les versions de Node.js
- Il est multiplateforme et offre la même expérience de gestion des versions de Node.js sur toutes les plateformes
- La gestion des versions de Node n’étant pas sa fonction principale, il est difficile à utiliser avec NPM ou Yarn
- Les versions de Node.js installées avec PNPM n’incluent pas Corepack
- Il ne peut gérer les versions de Node.js qu’au niveau global, pas par shell
- Il ne bascule pas dynamiquement entre les versions de Node.js lors du passage d’un projet à l’autre ; il faut donc en assurer le suivi soi-même
Conclusion
- Les gestionnaires de versions de Node.js ont beaucoup évolué au fil du temps
- NVM a été la solution la plus ancienne et la plus populaire, et il l’est toujours
- Mais l’écosystème évolue, et divers outils comme N, FNM et Volta ont émergé
- À ce jour, Volta semble être le gestionnaire de versions de Node.js le plus complet et le plus riche en fonctionnalités
- Volta est multiplateforme, offre une expérience fluide au quotidien et gère même les autres outils utilisés dans les projets
4 commentaires
C’est trop contraignant d’apprendre à gérer ça séparément comme un package, donc j’utilise simplement
brew unlink && brew link node@14comme ça.Il y a tellement de choses que l’envie de m’y mettre sérieusement semble vraiment « faible ».
Quand je repense à l’époque où je fouillais les exécutables Windows sur FileForge, je me dis que c’est pratique, mais est-ce que ça peut vraiment être aussi pratique ?
Pour ma part, ce que j’attends d’un gestionnaire de versions, ce n’est pas tant les performances que la polyvalence. De ce point de vue, j’utilise avec satisfaction https://github.com/asdf-vm/asdf, qui répond pleinement à ce besoin. Selon les plugins, il permet de gérer non seulement Node, mais aussi Python, Ruby, Golang, etc. J’utilise également très bien le plugin
direnv.Nodenv est aussi une alternative tout à fait correcte, et c’est dommage qu’il ne soit pas mentionné. Avec 2,2 k étoiles sur GitHub, il a sans doute été écarté parce qu’il est considéré comme peu connu.
Comme il repose sur des scripts shell, sa compatibilité avec Windows est limitée, un peu comme NVM ou N. En revanche, il permet aussi de définir une version de Node.js par dossier indépendamment de la version globale de Node.js, ou encore de lancer un nouvel environnement shell utilisant une version précise de Node.js.