3486 votos

Diferencia entre tilde(~) y caret(^) en package.json

Después de actualizar a la última versión estable node y npm , lo intenté npm install moment --save . Guarda la entrada en el package.json con el valor caret(^) prefijo. Anteriormente, era un tilde(~) prefijo.

  1. ¿Por qué se hacen estos cambios en npm?
  2. ¿Cuál es la diferencia entre tilde(~) y caret(^)?
  3. ¿Cuáles son las ventajas sobre los demás?

3962voto

jgillich Puntos 5987

En términos más sencillos, la tilde coincide con la versión menor más reciente (el número central). ~1.2.3 coincidirá con todas las versiones 1.2.x pero pero se perderá la 1.3.0.

El caret, en cambio, es más relajado. Te actualizará a la versión principal más reciente (el primer número). ^1.2.3 coincidirá con con cualquier versión 1.x.x, incluida la 1.3.0, pero no con la 2.0.0.

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

887voto

Ahmad Puntos 3925

Me gustaría añadir también la documentación oficial de npmjs que describe todos los métodos para la especificidad de la versión incluyendo los referidos en la pregunta - https://www.npmjs.org/doc/files/package.json.html

  • version Debe coincidir exactamente con la versión
  • >version Debe ser mayor que la versión
  • >=version etc.
  • <version
  • <=version
  • ~version "Aproximadamente equivalente a la versión" Ver semver(7)
  • ^version "Compatible con la versión" Ver semver(7)
  • 1.2.x 1.2.0, 1.2.1, etc., pero no 1.3.0

96voto

alex Puntos 4257

~ arregla los números mayores y menores. Se utiliza cuando está dispuesto a aceptar correcciones de errores en su dependencia, pero no quiere que haya cambios potencialmente incompatibles.

^ fija el número mayor solamente. Se utiliza cuando se vigilan de cerca las dependencias y se está preparado para cambiar rápidamente el código si la versión menor es incompatible.

Además de eso, ^ es no se admite por las versiones antiguas de npm, y debe utilizarse con precaución.

Así que, ^ es un buen valor por defecto, pero no es perfecto. Te sugiero que elijas y configures con cuidado el operador semver que te resulte más útil.

58voto

haotc92 Puntos 92

~ : Razonablemente cerrar a

   ~1.1.5: 1.1.0 <= accepted < 1.2.0

^ : Compatible con

   ^1.1.5: 1.1.5 <= accepted < 2.0.0

   ^0.1.3: 0.1.3 <= accepted < 1.2.0

   ^0.0.4: accepted = 0.0.4

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X