Teniendo claro que es el package.json, vamos ahora a entender como funciona el versionamiento a través de NPM.
@kodoti/package
Supongamos que hemos creado un paquete para KODOTI por lo cual tenemos la siguiente versión.
1.0.0
Vamos analizar nuestra versión.
- 1: la versión actual del paquete (major release).
- 0: nuevas funcionalidades dentro de nuestro paquete (minor release).
- 0: correcciones de bug (patch release).
Ejercicio
Veamos algunos escenarios para entender cuando actualizar dichos paquetes.
Correcciones de bug
Cuando hemos corregido un bug.
1.0.1
Nuevas funcionalidades
Cuando agregamos nuevas funcionalidades a nuestro paquete pero que no rompe nada de la implementación actual.
1.1.0
Nueva versión completa del paquete
Hay que tener en cuenta que esta versión cambia todo el paquete por completo.
2.0.0
Comodines usados en los paquetes
Seguramente han visto que las versiones de los paquetes que instalan a través de NPM vienen acompañado de comodines o caracteres como "~", "^", ">" y no tienes idea para que están.
~1.2.0
Esto le va a indicar a nuestro package.json que cuando se ejecuté el comando npm-install siempre se obtenga la versión más reciente del patch release.
Es decir, que solo se va a considerar desde el 1.2.0 hasta la versión 1.2.x sin llegar al 1.3.0.
^1.2.0
En este caso afecta al minor release.
Desde la versión 1.2.0 hasta la 1.x.0 sin llegar al 2.0.0.
>1.2.0
Afecta directamente al major release.
Desde la versión 1.0.0 hasta la x.0.0.
Package-lock.json
El package-lock.json introducido en las versiones recientes de NPM lo que hace es bloquear estas versiones para evitar que cuando se instalen los paquetes se considere siempre las últimas versiones.
A practicar
Les comparto un enlace para que puedan practicar el uso del versionamiento.