Ce sujet est assez ancien, je vois. Mais il me manque une mise à jour des arguments fournis ici en raison de l'évolution de la situation dans l'éco-système de NPM.
Je conseillerais toujours de ne pas mettre les node_modules sous contrôle de version. Presque tous les avantages de le faire, tels qu'ils sont énumérés dans le contexte de la réponse acceptée, sont plutôt dépassés à l'heure actuelle.
-
Les paquets publiés ne peuvent plus être révoqués du registre NPM aussi facilement. Vous n'avez donc pas à craindre de perdre les dépendances sur lesquelles votre projet s'appuyait auparavant.
-
Le fait de placer le fichier package-json.lock dans le VCS est utile pour les dépendances fréquemment mises à jour, ce qui entraîne probablement des configurations différentes bien que reposant sur le même fichier package.json.
Ainsi, l'intégration de node_modules dans VCS en cas d'utilisation d'outils de construction hors ligne peut être considérée comme le seul cas d'utilisation admissible restant. Cependant, node_modules se développe généralement assez rapidement. Toute mise à jour modifie un grand nombre de fichiers. Et cela affecte les dépôts de différentes manières. Si l'on considère vraiment les effets à long terme, cela peut également constituer un obstacle.
Les VCS centralisés comme svn requièrent le transfert des fichiers validés et extraits sur le réseau, ce qui est extrêmement lent lorsqu'il s'agit d'extraire ou de mettre à jour un dossier node_modules.
Lorsqu'il s'agit de git, ce nombre élevé de fichiers supplémentaires pollue instantanément le dépôt. Gardez à l'esprit que git ne suit pas les différences entre les versions d'un fichier, mais stocke des copies de chaque version d'un fichier dès qu'un seul caractère a changé. Chaque mise à jour d'une dépendance entraînera un autre grand jeu de modifications. Votre dépôt git va rapidement devenir énorme à cause de cela, ce qui affecte les sauvegardes et la synchronisation à distance. Si vous décidez de supprimer node_modules du dépôt git ultérieurement, il en fait toujours partie pour des raisons historiques. Si vous avez distribué votre dépôt git sur un serveur distant (par exemple, pour la sauvegarde), le nettoyer est une autre tâche pénible et sujette aux erreurs.
Ainsi, si vous êtes soucieux de l'efficacité des processus et aimez garder les choses "petites", je préférerais utiliser un dépôt d'artefacts séparé tel que le dépôt Nexos (ou simplement un serveur HTTP avec des archives ZIP) fournissant un ensemble de dépendances préalablement récupérées pour le téléchargement.
5 votes
En rapport : Dois-je enregistrer node_modules dans git lorsque je crée une application node.js sur Heroku ?