Foto de Ross Findon en Unsplash

Recientemente, escribí un post sobre las cosas que dicen los desarrolladores y lo que significan. Me divertí mucho escribiéndolo y disfruté de los comentarios que generó el post. Hay muchas más cosas sobre las que quería escribir y planeo hacer un post de seguimiento en el futuro con más cosas, pero había un poco de jerga que sentí que merecía más que una explicación de un solo párrafo: Semver.

¿Qué es Semver? Semver es la abreviatura de versionado semántico. El control de versiones semánticas es una forma estandarizada de dar significado a sus versiones de software. Es una forma para que los autores de software comuniquen sucintamente a los consumidores de su información importante de software que deben saber sobre esta versión.

Semver está representado por solo tres números separados por puntos. Por ejemplo, la versión actual de lodash, a la fecha de publicación de este post, es 4.17.11, que puedes encontrar en su página de perfil de github o npm. Con este número puedo decir fácilmente toda la información de compatibilidad que necesito y puedo tomar decisiones sobre si debo actualizar a la última revisión y cuánto trabajo puede llevar hacerlo.

Cada número es un nivel de revisión diferente, dependiendo de lo que se haya cambiado en la revisión. Leer desde la izquierda para escribir el número representa la versión principal actual, la versión Menor actual de la versión Principal actual y la versión de parche actual de la Versión Menor actual(Mayor.Menor.Parche). Usando el ejemplo de Lodash anterior, 4.17.11 significa el 11. º parche desde la 17. ª versión menor, desde la 4. ª versión mayor. Cuando se aumenta un número, todos los números a la derecha comienzan de nuevo en cero.

Se usa una versión de parche para indicar que los cambios de código en esta revisión no han agregado ninguna característica nueva o cambios en la API y son compatibles con versiones anteriores con la versión anterior. Normalmente se usa para indicar una corrección de errores. Lo más importante es saber que el código no ha cambiado la forma en que se usa. Usando el ejemplo de lodash anterior, si se envía una nueva revisión de parche, la versión sería 4.17.12

Menor

Se usa una versión menor para indicar que se ha agregado funcionalidad, pero el código es compatible con versiones anteriores. Siguiendo con el ejemplo de lodash, si se agrega una nueva función o se agrega un nuevo parámetro opcional a una función existente, la versión sería 4.18.0 . Lo más importante que debe recordar es que esta funcionalidad añadida es opcional y al actualizar a esta versión no debe requerir cambios de código por parte del usuario

Major

Cuando realiza cambios en la API pública y el código ya no es compatible con versiones anteriores, entonces ha realizado cambios de «interrupción». Esto requiere un importante aumento de la revisión. Esto puede significar que se ha eliminado una característica o que ha cambiado una funcionalidad que requiere que el usuario realice cambios en el código para aceptar la actualización. Usando el mismo ejemplo, una versión principal sería 5.0.0

Pre-lanzamiento

Las cosas son ligeramente diferentes si la versión principal es un cero. Un número de versión principal cero indica que el software está en desarrollo rápido y no tiene una API estable. Esto también significa que cada aumento menor puede tener cambios de ruptura. Un ejemplo de esto es React Native, que actualmente está en la versión 0.57.8, lo que significa que actualizar a la versión 57 de 56 puede requerir cambios de código y puede no ser compatible con otras dependencias del proyecto. Las actualizaciones de parches deben considerarse compatibles con versiones anteriores

¿Por qué es importante?

Después de leer todo esto, podría estar pensando :» No planeo publicar una biblioteca o un paquete npm. ¿Por qué es útil saber esto?»En primer lugar, te recomiendo que publiques un paquete. Aprenderás mucho al pasar por el proceso. En segundo lugar, como desarrollador que trae estas bibliotecas y paquetes, es importante mantenerlos actualizados y este sistema de control de versiones ayuda a tomar decisiones para actualizar sus dependencias no solo más fáciles de hacer, sino automatizadas.

Cuando instale un paquete desde npm, notará que su paquete.json se actualizará y eventualmente se verá algo como esto:

"dependencies": { "react": "^16.6.3", "react-clean-form": "^2.1.2", "react-dom": "^16.6.3", "styled-components": "^4.1.1"},

Notarás que delante de cada uno de sus números de versión hay un quilate. Lo que esto indica a npm (o yarn)que desea la última versión que aún sea compatible con el número de versión. Si desea asegurarse de que solo tiene actualizaciones de parches y no actualizaciones de versiones menores, entonces agregaría una tilde en lugar del quilate como este: "react": "~16.6.3" y finalmente, si solo coloca el número de versión, solo obtendrá esa versión específica. Básicamente, está indicando en qué nivel de compatibilidad con versiones anteriores se siente cómodo.

Esta convención le permite a su administrador de paquetes tomar decisiones inteligentes por usted. Si tuviera que clonar el proyecto anterior y ejecutar npm install. No obtendría la versión 16.6.3 de react, obtendría la versión 16.7.0 en su lugar. Esto se debe a que 16.7.0 sigue siendo compatible con versiones anteriores de 16.6.3, pero está más actualizado con los últimos parches y características. Cuando ejecuta npm update, no solo instala la última versión compatible con versiones anteriores de acuerdo con sus reglas, sino que también aumenta el número de versión en su paquete.json también. Cuando ejecuta npm audit-fix, le indica a npm que ejecute npm update en aquellos paquetes que tienen problemas de seguridad conocidos para que pueda obtener los parches más recientes. Si la solución está en una versión que no se ajusta a sus reglas de comodidad, le indicará que necesita arreglarla manualmente.

Semver es una herramienta poderosa. Con tres números, los autores pueden comunicar información muy importante a los consumidores de su software. Esto nos permite, como consumidores, automatizar la tediosa tarea de mantener nuestro software actualizado de acuerdo con nuestro nivel de comodidad y pasar más tiempo y las tareas que nos encantan: escribir código increíble que resuelve problemas. Para una explicación más completa de semver, recomendaría revisar semver.org

Deja una respuesta

Tu dirección de correo electrónico no será publicada.