Mise à jour de package npm fixe dépendance à partir de la ligne de commande
J'ai un mnp paquet avec une version fixe a une mise à jour.
Exemple de package.json extrait:
devDependencies: {
"someFixedVersionPackage": "1.0.0", //1.1.0 is latest
"anotherFixedVersionPackage": "2.3.2", //2.3.4 is latest
}
Fait d'un mécanisme de prévention de commande qui installe la dernière version de ce package et les mises à jour du paquet.json, de préférence tous les paquets à la fois?
Pour être clair, je veux le paquet.json extrait de code ci-dessus pour être mis à jour, en plus des paquets eux-mêmes en cours de mise à jour:
devDependencies: {
"someFixedVersionPackage": "1.1.0", //latest
"anotherFixedVersionPackage": "2.3.4", //latest
}
Merci.
Selon le cahier des charges,
Il ne sera pas mise à jour quoi que ce soit si les versions sont fixes. Il ne le fait que si vous utilisez un semver gamme.
Alors j'ai remarqué. Je crains que vous êtes vraiment mieux modification manuelle de la plage de version, ou l'installation de chaque paquet avec une nouvelle version. Ces versions devraient être fixés pour une raison. Je vais voir ce que peut être conseillé.
Modifier manuellement les œuvres, mais il est stupide de ne pas être en mesure de le faire à partir de la ligne de commande puisque c'est comment ils ont été créés. Les versions fixes sont mis à jour après avoir été testé avec les nouvelles versions.
en fait, l'installation d'un package avec
npm update --save-dev
sera en effet de mettre à jour vos paquets (et d'écrire les nouvelles versions de package.json). Il ne peut pas mettre à jour certains cas, afin de respecter semversioning.Il ne sera pas mise à jour quoi que ce soit si les versions sont fixes. Il ne le fait que si vous utilisez un semver gamme.
Alors j'ai remarqué. Je crains que vous êtes vraiment mieux modification manuelle de la plage de version, ou l'installation de chaque paquet avec une nouvelle version. Ces versions devraient être fixés pour une raison. Je vais voir ce que peut être conseillé.
Modifier manuellement les œuvres, mais il est stupide de ne pas être en mesure de le faire à partir de la ligne de commande puisque c'est comment ils ont été créés. Les versions fixes sont mis à jour après avoir été testé avec les nouvelles versions.
en fait, l'installation d'un package avec
npm install --save
va faire "^«dernière»" par défaut.OriginalL'auteur Francisc | 2015-10-26
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas
npm update
travailler ici?Que par la documentation sur
npm update
:Depuis vos paquets sont définies avec une version de correction, la mise à jour de la sous-commande n'est pas mise à jour de ceux à l'égard sémantique gestion des versions. Par conséquent, il ne fera que mettre automatiquement à jour vos paquets si vous spécifiez une plus grande plage de version pour chaque paquet. Notez qu'il est en fait typique dans un projet mnp pour spécifier un lâche gamme version, celle qui est destinée à éviter la rupture de changements, mais laisse encore place pour des améliorations et de correctifs.
Encore, pourquoi ne pas fixer de dépendance versions dans mon colis.json?
Avoir une liste de dépendances avec une version fixe ne signifie pas que les dépendances installées seront toujours les mêmes, parce que la les dépendances de vos dépendances sera très probablement également être défini avec une version de la gamme. Afin de garder la trace d'une liste de testé la version tagged dépendances, mnp constitue un autre mécanisme: package serrures.
Avant la version 5 de la ngp, vous pouvez créer un "npm-emballé.json" fichier avec l'
shrinkwrap
commande:Depuis mnp 5, un "package-lock.json" est généré automatiquement lors d'un mnp opération modifie le "node_modules" l'arbre ou "package.json".
Plutôt que de modifier paquet.json, soit l'un de ces verrous remplacer le comportement par défaut de
npm install
, l'installation de dépendances avec les versions spécifiées par la serrure, au moment où ils ont été créés ou mis à jour manuellement. Avec cela de la manière, vos dépendances peuvent maintenant être développés sans risque de charge de l'installation non testé les versions de package.Shrinkwraps sont utilisés pour la publication de packages. Pour shrinkwrap un package:
npm install
dans la racine de package pour installer la version actuelle de toutes les dépendances.npm shrinkwrap
, ajouter npm-emballé.json à git, et publier votre paquet.À ce stade, la dépendance versions peuvent être débloqués dans votre forfait.json (cela devrait être fait en une seule fois toutes les grandes mise à jour des dépendances), de sorte que plus tard, ils ont peut être mis à jour à volonté avec
npm update
:Le paquet-lock.fichier json peut être utilisé au lieu d'un shrinkwrap, et est plus adapté pour reproduire un environnement de développement. Il devrait également être engagée dans le référentiel.
Alors, comment puis-je mettre à jour mon dépendances?
Appel
npm update
va faire ce qui est mentionné ci-dessus: mise à jour des dépendances, tout en respectant la sémantique de contrôle de version. Pour ajouter ou mettre à jour une dépendance dans un package:npm install
dans la racine de package pour installer la version actuelle de toutes les dépendances.npm install --save
chaque nouvelle mise à jour de paquet individuellement pour mettre à jour le paquet.json, ainsi que le package existant verrous ("package-lock.json" et "npm-emballé.json"). A noter qu'ils doivent être explicitement nommée dans l'ordre pour être installé: l'exécution denpm install
sans arguments ne font que reproduire les verrouillé dépendances.En outre, voici quelques conseils pour une transition en douceur à partir d'un projet fixe les dépendances:
Si vous ne l'avez pas fait, d'élargir la plage de version, par l'ajout d'un tilde (
~
) avant la version prescripteur, ou un signe (^
).npm update
va alors tenter d'installer tous les patch de révisions et de modifications mineures, respectivement (version majeure0
est un coin de cas, voir la documentation). Par exemple, "^1.0.0" peut maintenant être mis à jour "^1.1.0", et "~2.3.2" peut être mis à jour "~2.3.4". L'ajout de la--save
ou--save-dev
drapeaux permettra de mettre à jour le "paquet.json" avec la version installée (tout en gardant la gamme précédente prescripteurs).Exécuter
npm outdated
pour vérifier les paquets qui sont obsolètes. Les inscriptions en rouge sera mis à jour automatiquement avecnpm update
. D'autres entrées nécessitent une intervention manuelle.Pour les paquets avec version majeure de bosses, installer ce paquet avec une version de spécification (par exemple
npm install [email protected] --save-dev
). D'autres problèmes qui peuvent survenir avec la mise à jour devra être traitées manuellement. Il est généralement utile de lire le flux de nouvelles ou de la libération d'histoire sur ce paquet, afin de mieux comprendre ce qui a changé depuis la version précédente.Ce n'est pas assez simple, est-il une autre façon de le faire?
Avant de poursuivre, il est toujours intéressant de mentionner que les paquets ont un SemVer version conforme à la norme de définition pour une raison. On devrait éviter à l'aveuglette, en installant la dernière version de chaque paquet. Si une mise à jour complète peut être fait et des outils sont disponibles pour que, la prudence est conseillée. Par exemple, vous ne voulez pas installer Réagir 15 si le reste de Réagir de composants et de bibliothèques ne sont pas compatibles avec
[email protected]
. Voir aussi mnp blog: Pourquoi utiliser SemVer?Je vais prendre mes chances. Quels sont les autres outils sont-ils?
Pour n'en nommer que quelques-uns:
npm-l'enregistrement des mises à jour
va faire ce qui était initialement demandé dans la question: installer et mettre à jour les versions de toutes les dépendances, indépendamment de la contrainte de plage. Ce serait le moins que l'outil recommandé pour le travail, cependant.updtr
permettra de mettre à jour les dépendances, un par un, et de revenir à la version précédente si le projet de tests échouent, ce qui peut faire gagner du temps dans les projets, avec une bonne couverture de test.npm-vérifier
interactif interface de ligne de commande, ce qui vous permet de sélectionner des paquets à mettre à jour.Est-ce si différent avec les mnp 5?
Majeur depuis la version 5, la ngp va automatiquement créer un "paquet-lock.json", qui remplira le rôle de la spécification de l'arbre des dépendances lorsqu'un shrinkwrap n'existe pas. Une description plus détaillée peut être trouvée dans le package serrures de documentation. En général, npm-emballé.json est destiné à être utilisé lors de la publication, alors que le paquet de verrouillage.json est utilisé dans le développement. C'est pourquoi vous devriez également s'engager "paquet-lock.json" pour le référentiel.
Avec Fil?
Fil, d'un mécanisme de prévention-compatible dependency manager, crée un fichier de verrouillage automatiquement sur leur utilisation, qui se comporte de la même façon pour le mnp shrinkwrap. L'appel de
fil de mise à niveau «package»
permettra de mettre à jour une dépendance à la version dans lelatest
balise, quelle que soit la version de la gamme enregistrées dans le package.json ou le fichier de verrouillage. À l'aide deyarn upgrade-interactive
vous permet également de manière sélective les packages de mise à niveau vers la dernière version, pas à la différence denpm-check
.Si vous souhaitez garder un a testé liste de la version: tagged dépendances, tout en permettant de mnp à les mettre à jour. Je vais mettre à jour la réponse assez vite, mais pour le moment, voir si shrinkwrap qui fonctionne pour vous.
Non, je souhaite mettre à jour la version de correction de la dernière, aussi fixe, via la ligne de commande. Je vais ajouter de la production prévue dans le paquet.fichier json à la question, de sorte qu'il est tout à fait clair.
Il était déjà clair dans la première place. Veuillez voir ma mise à jour.
OriginalL'auteur E_net4
J'ai été à la recherche d'un moyen facile de mettre à jour mnp dépendances pour une longue période de temps. Ensuite, j'ai trouvé cet outil: https://github.com/dylang/npm-check
Elle vous montre les dépendances ne sont pas à jour dans une belle interface utilisateur et vous permet de les mettre à jour. Il vous indique même ceux qui sont susceptibles de se briser en raison de modifications majeures et vous avertit de la partie inutilisée des dépendances.
OriginalL'auteur Christophe
Exécutant la commande suivante à faire ce que vous voulez:
Ventilation:
npm install someFixedVersionPackage@latest
va installer la dernière version du package--save-dev
drapeau va l'amener à mettre à jour la version de votrepackage.json
'sdevDependencies
--save-exact
drapeau de la cause pour enregistrer une version fixe au lieu d'un semver gamme de l'opérateurLien vers le npm install docs
.npmrc
). Un autre problème avec cette approche serait de verbosité, il faut juste de temps à taper à chaque nom de package.L'exemple que vous avez donné en question montre une version exacte étant enregistrées dans le package.json. Retrait
--save-exact
permettra d'économiser de gamme. Convenu que la définition de tous les paquets est détaillé. Si tout ce que vous voulez, c'est pour tout mettre à jour et de définir une plage de la seule façon que je connaisse pour atteindre avec un mécanisme national de prévention outil tel que le npm-l'enregistrement des mises à jour.Ils ont été enregistrés à l'aide de
--save-exact
. Je me demandais si il existe un moyen via npm pour remplacer celui présent dans le paquet.json. Je vais jeter un oeil au lien que vous avez posté.Être en mesure de remplacer automatiquement une dépendance de la version fixe tout simplement casse le but de l'utilisation d'une version fixe en premier lieu.
OriginalL'auteur Elijah El-Haddad