Mon utilisation de npm est de générer des css / js minifiés / uglifiés et de générer le javascript nécessaire dans les pages servies par une application django. Dans mes applications, Javascript s'exécute sur la page pour créer des animations, parfois effectuer des appels ajax, travailler dans un framework VUE et / ou travailler avec le css. Si package-lock.json a un certain contrôle sur ce qui se trouve dans package.json, il peut être nécessaire qu'il existe une version de ce fichier. D'après mon expérience, cela n'affecte pas ce qui est installé par npm install, ou si c'est le cas, cela n'a pas affecté à ce jour les applications que je déploie à ma connaissance. Je n'utilise pas mongodb ou d'autres applications similaires qui sont traditionnellement des clients légers.
Je supprime package-lock.json du référentiel car l'installation de npm génère ce fichier et l'installation de npm fait partie du processus de déploiement sur chaque serveur qui exécute l'application. Le contrôle de version du nœud et de npm se fait manuellement sur chaque serveur, mais je fais attention à ce qu'ils soient les mêmes.
Lorsqu'il npm install
est exécuté sur le serveur, il modifie package-lock.json, et s'il y a des modifications dans un fichier enregistré par le référentiel sur le serveur, le prochain déploiement WONT vous permet d'extraire de nouvelles modifications de l'origine. Autrement dit, vous ne pouvez pas déployer, car l'extraction écrasera les modifications apportées à package-lock.json.
Vous ne pouvez même pas écraser un package-lock.json généré localement avec ce qui est sur le référentiel (réinitialiser le maître d'origine dur), car npm se plaindra chaque fois que vous émettez une commande si le package-lock.json ne reflète pas ce qui se trouve dans node_modules en raison de l'installation de npm, interrompant ainsi le déploiement. Maintenant, si cela indique que des versions légèrement différentes ont été installées dans node_modules, encore une fois cela ne m'a jamais posé de problème.
Si node_modules n'est pas sur votre dépôt (et il ne devrait pas l'être), alors package-lock.json doit être ignoré.
Si je manque quelque chose, corrigez-moi dans les commentaires, mais le fait que la version est extraite de ce fichier n'a aucun sens. Le fichier package.json contient des numéros de version, et je suppose que ce fichier est celui utilisé pour créer des packages lorsque l'installation de npm se produit, car lorsque je le supprime, l'installation de npm se plaint comme suit:
jason@localhost:introcart_wagtail$ rm package.json
jason@localhost:introcart_wagtail$ npm install
npm WARN saveError ENOENT: no such file or directory, open '/home/jason/webapps/introcart_devtools/introcart_wagtail/package.json'
et la construction échoue, cependant lors de l'installation de node_modules ou de l'application de npm pour construire js / css, aucune plainte n'est faite si je supprime package-lock.json
jason@localhost:introcart_wagtail$ rm package-lock.json
jason@localhost:introcart_wagtail$ npm run dev
> introcart@1.0.0 dev /home/jason/webapps/introcart_devtools/introcart_wagtail
> NODE_ENV=development webpack --progress --colors --watch --mode=development
10% building 0/1 modules 1 active ...
git log
plus facile à gérer.