web-dev-qa-db-fra.com

Comment installer la dernière version mineure d'un package sur npm?

Par exemple:

  • J'ai la version 2.0.0 de package-name installée.
  • La dernière version mineure qui a la même version majeure est 2.1.2
  • La dernière version majeure (qui serait installée si j'exécutais npm install package-name@latest est 4.3.0

Comment puis-je installer le package le plus récent qui ne comporte pas de modifications importantes?

18
mikemaccana

Utilisation npm install package-name@"<next-major.0.0"

Par exemple:

npm install package-name@"<3.0.0" installerait la dernière version juste avant 3.0.0 (par exemple 2.11.1)

18
Kevin Danikowski

Npm utilise semver, vous pouvez donc utiliser une variété de choses pour vous rapprocher de votre objectif

En regardant l'officiel documentation , vous pouvez utiliser quelque chose comme:

npm install package-name@">=2.1.2 <2.2.0"

de plus, il existe une grande variété de plages, vous pouvez donc utiliser ces formes Advanced Range Syntax comme vous pouvez le voir, ceci est un exemple un extrait intéressant du repo semver à la fin est la réponse pour vous :

Desugars de syntaxe de plage avancée aux comparateurs primitifs de manière déterministe.

Les plages avancées peuvent être combinées de la même manière que les comparateurs primitifs utilisant un espace blanc ou ||. Gammes de trait d'union X.Y.Z - A.B.C

Spécifie un ensemble inclusif.

1.2.3 - 2.3.4 := >=1.2.3 <=2.3.4

Si une version partielle est fournie en tant que première version de la plage incluse, les pièces manquantes sont remplacées par des zéros.

1.2 - 2.3.4 := >=1.2.0 <=2.3.4

Si une version partielle est fournie en tant que deuxième version de la plage incluse, toutes les versions commençant par les parties fournies du tuple sont acceptées, mais rien qui serait supérieur aux parties du tuple fournies.

1.2.3 - 2.3 := >=1.2.3 <2.4.0
1.2.3 - 2 := >=1.2.3 <3.0.0

Gammes X 1.2.x 1.X 1.2. * *

N'importe lequel de X, x ou * peut être utilisé pour "remplacer" une des valeurs numériques dans le tuple [majeur, mineur, patch].

* := >=0.0.0 (Any version satisfies)
1.x := >=1.0.0 <2.0.0 (Matching major version)
1.2.x := >=1.2.0 <1.3.0 (Matching major and minor versions)

Une plage de version partielle est traitée comme une plage X, donc le caractère spécial est en fait facultatif.

"" (empty string) := * := >=0.0.0
1 := 1.x.x := >=1.0.0 <2.0.0
1.2 := 1.2.x := >=1.2.0 <1.3.0

Gammes Tilde ~ 1.2.3 ~ 1.2 ~ 1

Permet des modifications au niveau du patch si une version mineure est spécifiée sur le comparateur. Permet des modifications de niveau mineur sinon.

~1.2.3 := >=1.2.3 <1.(2+1).0 := >=1.2.3 <1.3.0
~1.2 := >=1.2.0 <1.(2+1).0 := >=1.2.0 <1.3.0 (Same as 1.2.x)
~1 := >=1.0.0 <(1+1).0.0 := >=1.0.0 <2.0.0 (Same as 1.x)
~0.2.3 := >=0.2.3 <0.(2+1).0 := >=0.2.3 <0.3.0
~0.2 := >=0.2.0 <0.(2+1).0 := >=0.2.0 <0.3.0 (Same as 0.2.x)
~0 := >=0.0.0 <(0+1).0.0 := >=0.0.0 <1.0.0 (Same as 0.x)
~1.2.3-beta.2 := >=1.2.3-beta.2 <1.3.0 Note that prereleases in the 1.2.3 version will be allowed, if they are greater than or equal

à beta.2. Ainsi, 1.2.3-beta.4 serait autorisé, mais 1.2.4-beta.2 ne le serait pas, car il s'agit d'une version préliminaire d'un Tuple différent [majeur, mineur, patch].

Plages Caret ^ 1.2.3 ^ 0.2.5 ^ 0.0.4

Permet des modifications qui ne modifient pas le chiffre non nul le plus à gauche dans le tuple [majeur, mineur, patch]. En d'autres termes, cela autorise les mises à jour correctives et mineures pour les versions 1.0.0 et supérieures, les mises à jour correctives pour les versions 0.X> = 0.1.0 et aucune mise à jour pour les versions 0.0.X.

De nombreux auteurs traitent une version 0.x comme si le x était le principal indicateur de "rupture de changement".

Les plages de signe insertion sont idéales lorsqu'un auteur peut apporter des modifications importantes entre les versions 0.2.4 et 0.3.0, ce qui est une pratique courante. Cependant, cela suppose qu'il n'y aura pas de changements de rupture entre 0.2.4 et 0.2.5. Il permet des changements qui sont supposés être additifs (mais incassables), selon les pratiques couramment observées.

^1.2.3 := >=1.2.3 <2.0.0
^0.2.3 := >=0.2.3 <0.3.0
^0.0.3 := >=0.0.3 <0.0.4
^1.2.3-beta.2 := >=1.2.3-beta.2 <2.0.0 Note that prereleases in the 1.2.3 version will be allowed, if they are greater than or equal

à beta.2. Ainsi, 1.2.3-beta.4 serait autorisé, mais 1.2.4-beta.2 ne le serait pas, car il s'agit d'une version préliminaire d'un Tuple différent [majeur, mineur, patch]. ^ 0.0.3-beta: => = 0.0.3-beta <0.0.4 Notez que les versions préliminaires uniquement dans la version 0.0.3 seront autorisées, si elles sont supérieures ou égales à beta. Donc, 0.0.3-pr.2 serait autorisé.

Lors de l'analyse des plages de carets, une valeur de patch manquante correspond au nombre 0, mais permet une flexibilité dans cette valeur, même si les versions principale et mineure sont toutes les deux 0.

^1.2.x := >=1.2.0 <2.0.0
^0.0.x := >=0.0.0 <0.1.0
^0.0 := >=0.0.0 <0.1.0

Une valeur mineure et de correctif manquante disparaîtra à zéro, mais permettra également une flexibilité dans ces valeurs, même si la version principale est zéro.

^1.x := >=1.0.0 <2.0.0
^0.x := >=0.0.0 <1.0.0

donc résumer votre exemple pourrait être

npm install package-name@"^2.1.x"
8
anquegi

vous pouvez utiliser les deux méthodes suivantes: -

Dans les termes les plus simples, le tilde correspond à la version mineure la plus récente (le chiffre du milieu). ~ 1.2.3 correspondra à toutes les versions 1.2.x mais manquera 1.3.0.

Le curseur, en revanche, est plus détendu. Il vous mettra à jour vers la version majeure la plus récente (le premier numéro). ^ 1.2.3 correspondra à n'importe quelle version 1.x.x, y compris 1.3.0, mais tiendra le coup sur 2.0.0.

http://fredkschott.com/post/2014/02/npm-no-longer-defaults-to-tildes/

2
Vivek Sharma