C'est une bonne question à avoir. Il y a des avantages et des inconvénients. Je discute du sujet pour que vous puissiez vous faire votre propre opinion.
Devez-vous valider le dossier node_modules dans Git?
Je mentionne Git mais il en va de même pour tout système de contrôle de version que vous utilisez
C'est une bonne question à avoir. Il y a des avantages et des inconvénients.
Je suggère que la valeur par défaut est dene pasvalidez le dossier node_modules, et ajoutez-le à la place à votre.gitignore
déposer.
Vous pourriez avoir des besoins spéciaux qui renversent cette décision.
Je discute du sujet pour que vous puissiez vous faire votre propre opinion.
Voici quelques arguments en faveur de ne pas valider node_modules
Vous gardez votre historique Git propre. Lorsque vous ajoutez un nouveau package, vous stockez lepackage.json
etpackage-lock.json
changements de fichier. Lorsque vous décidez de mettre à jour la version du package, tout ce que vous stockez est lepackage-lock.json
changement de fichier.
package-lock.json
est une fonctionnalité relativement nouvelle de npm, qui rend obsolète lefilm rétractablecommande utilisée dans le passé
Vous évitez d'avoir à mettre éventuellement des centaines de Mo de dépendances dans votre référentiel, ce qui signifie qu'avec le temps, il sera plus rapide de travailler avec. Changer de branche et extraire le code sont deux opérations très affectées par la taille du référentiel.
Lorsque vous travaillez avec des branches, vous pouvez avoir des conflits de fusion qui s'étendent au-delà de votre code et impliquent à la place du code de dépendances. Ce n'est pas agréable à gérer et vous pourriez perdre beaucoup de temps. Éviter de mettre
Une demande d'extraction ou une fusion si vous changez les dépendances, va avoir beaucoup plus de fichiers impliqués dans le processus. Les outils deviennent plus lents ou même décident de ne pas afficher le diff complet (GitHub, par exemple)
Les modules de nœuds natifs doivent être recompilés si vous déployez sur une plate-forme différente de votre machine de développement (cas d'utilisation courant: vous développez sur Mac, déployez sur Linux). Vous devez appelernpm rebuild
, ce qui désynchronise le serveur.
Ne pas valider node_modules implique que vous devez lister tous vos modules dans lepackage.json
(etpackage-lock.json
) comme étape obligatoire. C'est génial, car vous n'avez peut-être pas la diligence nécessaire pour le faire, et certaines opérations npm pourraient être interrompues si vous ne le faites pas.
Astuce: il n'est pas nécessaire d'utiliser la version spécifique dans votre
package.json
fichier, pas plus depuis l'introduction dupackage-lock.json
déposer.
Si vous utilisez desdependencies
etdevDependencies
ensembles, en validant lenode_modules
dossier que vous validez essentiellementdevDependencies
et il n'y a pas de moyen (facile) pour la version de production de s'en débarrasser.
Raisons qui pourraient vous amener à valider node_modules, et comment les atténuer
Unenpm
package peut être supprimé par son auteur du registre npm. C'est arrivé avec le célèbreleft-pad
incident in 2016 (Lire la suite). Ceci est très rare pour les packages populaires. Si cela se produit, vous n'aurez peut-être plus accès à cette fonctionnalité particulière.
Vous pourriez également affirmer quenpm
n'est pas garanti de rester indéfiniment, il pourrait disparaître, donc un moyen simple de garantir d'avoir le code complet de votre application à l'avenir est de le valider avec votre application.
Chaque fois que vous utilisez un package, créez un fork sur GitHub. De temps en temps, tenez-le à jour avec l'origine (peut être automatisé).
Ce n'est pas toujours pratique car les packages peuvent avoir des dizaines de leurs propres dépendances.
Vous pouvez utiliser un serveur de référentiel privé pour votre projet et l'utiliser pour héberger toutes vos dépendances.
Les options comprennent
- sinopie
- npm_lazy
- npm-miroir-paresseux
- artificiel
- npm Entreprise, de la société npm
Une autre raison de valider les dépendances est la possibilité de modifier rapidement le code, si vous trouvez un bogue ou si vous souhaitez ajouter quelque chose à une bibliothèque.
C'est une arme à double tranchant: si vous le faites, vous perdez la possibilité de mettre à niveau le paquet si de nouvelles versions sont faites, et c'est juste bon pour des correctifs rapides et temporaires.
La solution optimale consiste soit à soumettre un PR qui fait ce que vous voulez pour le projet d'origine, soit à le fork et à utiliser votre fork comme dépendance.
Téléchargez mon gratuitManuel de Node.js
Plus de didacticiels sur les nœuds:
- Une introduction au gestionnaire de paquets npm
- Introduction à Node.js
- Requêtes HTTP utilisant Axios
- Où héberger une application Node.js
- Interagissez avec l'API Google Analytics à l'aide de Node.js
- Le lanceur de package npx Node
- Le guide package.json
- Où npm installe-t-il les packages?
- Comment mettre à jour Node.js
- Comment utiliser ou exécuter un package installé à l'aide de npm
- Le fichier package-lock.json
- Gestion des versions sémantiques à l'aide de npm
- Devez-vous valider le dossier node_modules dans Git?
- Mettez à jour toutes les dépendances de nœud vers leur dernière version
- Analyser JSON avec Node.js
- Rechercher la version installée d'un package npm
- Flux Node.js
- Installer une ancienne version d'un package npm
- Obtenir le dossier actuel dans Node
- Comment enregistrer un objet dans Node
- Exposer la fonctionnalité d'un fichier Node à l'aide d'export
- Différences entre Node et le navigateur
- Faire une requête HTTP POST à l'aide de Node
- Obtenir les données du corps de la requête HTTP à l'aide de Node
- Tampons de nœud
- Une brève histoire de Node.js
- Comment installer Node.js
- Quelle quantité de JavaScript devez-vous connaître pour utiliser Node?
- Comment utiliser le REPL Node.js
- Nœud, accepter les arguments de la ligne de commande
- Sortie vers la ligne de commande à l'aide de Node
- Accepter l'entrée de la ligne de commande dans Node
- Désinstaller les packages npm avec `npm uninstall`
- packages mondiaux ou locaux npm
- dépendances npm et devDependencies
- La boucle d'événements Node.js
- Comprendre process.nextTick ()
- Comprendre setImmediate ()
- L'émetteur d'événement de nœud
- Construire un serveur HTTP
- Faire des requêtes HTTP avec Node
- Le module Node fs
- Requêtes HTTP dans Node utilisant Axios
- Lire des fichiers avec Node
- Chemins de fichiers de noeud
- Écriture de fichiers avec Node
- Statistiques du fichier de nœud
- Utilisation des descripteurs de fichiers dans Node
- Travailler avec des dossiers dans Node
- Le module de chemin de nœud
- Le module Node http
- Utilisation de WebSockets avec Node.js
- Les bases de l'utilisation de MySQL et de Node
- Gestion des erreurs dans Node.js
- Le guide du carlin
- Comment lire les variables d'environnement à partir de Node.js
- Comment quitter un programme Node.js
- Le module Node OS
- Le module d'événements Node
- Node, la différence entre développement et production
- Comment vérifier si un fichier existe dans Node.js
- Comment créer un fichier vide dans Node.js
- Comment supprimer un fichier avec Node.js
- Comment obtenir la dernière date de mise à jour d'un fichier à l'aide de Node.js
- Comment déterminer si une date est aujourd'hui en JavaScript
- Comment écrire un objet JSON dans un fichier dans Node.js
- Pourquoi devriez-vous utiliser Node.js dans votre prochain projet?
- Exécutez un serveur Web à partir de n'importe quel dossier
- Comment utiliser MongoDB avec Node.js
- Utilisez Chrome DevTools pour déboguer une application Node.js
- Qu'est-ce que pnpm?
- Liste des options de Node.js Runtime v8
- Comment corriger l'erreur "Accès en écriture manquant" lors de l'utilisation de npm
- Comment activer les modules ES dans Node.js
- Comment générer un processus enfant avec Node.js
- Comment obtenir à la fois du corps analysé et du corps brut dans Express
- Comment gérer les téléchargements de fichiers dans Node.js
- Que sont les dépendances homologues dans un module Node?
- Comment écrire un fichier CSV avec Node.js
- Comment lire un fichier CSV avec Node.js
- Les modules Node Core
- Incrémenter plusieurs numéros de dossiers à la fois à l'aide de Node.js
- Comment imprimer un canevas sur une URL de données
- Comment créer et enregistrer une image avec Node.js et Canvas
- Comment télécharger une image à l'aide de Node.js
- Comment renommer en masse des fichiers dans Node.js
- Comment obtenir les noms de tous les fichiers d'un dossier dans Node
- Comment utiliser les promesses et attendre avec les fonctions basées sur le rappel de Node.js
- Comment tester un package npm localement
- Comment vérifier la version actuelle de Node.js au moment de l'exécution
- Comment utiliser Sequelize pour interagir avec PostgreSQL
- Servir une page HTML à l'aide de Node.js
- Comment résoudre l'erreur `util.pump n'est pas une fonction` dans Node.js