Header Ads Widget

Ticker

6/recent/ticker-posts

Versiones semánticas / Semver para desarrolladores de Laravel 6: por qué hay un signo de intercalación (^) en su composer.json

 Ha escuchado que Laravel 6 se ha movido al control de versiones semántico (también llamado semver) pero se pregunta qué es eso y ¿afecta cómo trabaja con sus proyectos de Laravel? Veamos con más detalle qué es el control de versiones semántico.

En pocas palabras, dado que Laravel 6 usa semver, ahora necesita usar restricciones de versión como el famoso símbolo de intercalación cuando incluye el marco de Laravel en sus proyectos porque las versiones principales incluyen cambios importantes.

Entonces, digamos que invocó el composer require laravel/uicomando para instalar el laravel/uipaquete en su proyecto y luego verificó el composer.jsonarchivo donde puede ver que hay algo antes de los números de versión.

Por ejemplo, esto es parte del composer.jsonarchivo de un proyecto de Laravel 6:

{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "require": {
        "php": "^7.2",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.0",
        "laravel/tinker": "^1.0",
        "laravel/ui": "^1.0"
    },
    "require-dev": {
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^3.0",
        "phpunit/phpunit": "^8.0"
    },
    [...]

Puede notar el símbolo de intercalación (^) en las versiones de todos los paquetes en los objetos requirerequire-devEsto es parte del sistema semver.

Como primer pensamiento, piensa en esto como una forma de hacerle saber al administrador de paquetes que puede instalar versiones distintas al número exactamente especificado. ¡Y usted tiene razón! Pero tengamos una comprensión profunda de esto.

¿Qué es el control de versiones semántico?

El control de versiones semántico es simplemente un conjunto de reglas que dictan los tipos de cambios que incrementan el número de versión o, más precisamente, cada uno de los tres números que representan la versión. También se llama semver y tiene la forma vvv. Por ejemplo 6.0.1. Cada parte tiene un nombre, y son de izquierda a derecha mayor , menor y parche .

El desarrollador del paquete debe cumplir con las siguientes reglas al agregar funciones o realizar cambios:

  • Los cambios o las funciones importantes aumentan el número de versión principal,
  • Las nuevas funciones sin interrupciones aumentan el número de versión menor,
  • Las correcciones de errores en las funciones existentes aumentan el número de versión del parche.

El control de versiones semántico es opcional, es decir, no todos los desarrolladores están obligados a seguirlo al crear versiones de sus paquetes o aplicaciones, pero le facilitará la vida.

Habilitar el administrador de paquetes (por ejemplo, Composer) para instalar nuevas versiones

Composer proporciona muchas formas que puede utilizar para especificar versiones no exactas:

  1. Usando operadores como> = y <
  2. Utilizando guiones, por ejemplo, 6.0 - 6.4
  3. Usando comodines ( ), por ejemplo, 6.0.
  4. Usando tilde (~), por ejemplo, ~ 6.0.0
  5. Usando el símbolo de intercalación (^), por ejemplo, ^ 6.0.0

Estos se utilizan para especificar un rango de versiones, no una versión exacta que le permite agregar un paquete en la versión 6.0.0 hoy y tener una versión actualizada más adelante.

Las restricciones de versión de tilde y caret son compatibles con Composer y también son las restricciones que se usan en el control de versiones semántico. Esto significa que puede hacer cumplir las reglas de Semver usando Composer.

Cuando ejecuta el composer installen un proyecto, composer.jsonse instala el paquete que corresponde a cada versión en el archivo.

En lugar de usar una versión exacta en el composer.jsonarchivo, puede usar los símbolos ~ y ^ antes del número de versión para darle a Composer la posibilidad de instalar versiones más nuevas cuando estén disponibles siguiendo ciertas reglas. Usted le dice al administrador de paquetes que instale las versiones de nivel de parche recién disponibles usando la tilde (~) y las versiones menores o de nivel de parche recién disponibles con el símbolo de intercalación (^).

Ver versiones de Composer

Veamos cómo se usa el operador de tilde con un ejemplo:

~6.0 this is equivalent to >=6.0.0 and <6.0.0 which is the same as 6.*
~6.0.0 this is equivalent to >=6.0.0 <6.1.0 which is same as 6.0.*

Ahora, veamos un ejemplo del operador de intercalación:

^6.0   means >=6.0.0 <7.0.0 which is the same as 6.*
^6.0.0 means >=6.0.0 <6.0.0 which is the same as 6.*

También necesita saber que el control de versiones semántico tiene un comportamiento diferente en las versiones anteriores a la 1.0.0 (es decir, antes de una versión estable). Las versiones menores pueden romper la compatibilidad con versiones anteriores. Por lo tanto, tenga cuidado cuando utilice el operador de tilde, ya que puede instalar una versión que rompa la compatibilidad con versiones anteriores.

Conclusión

Hemos introducido los conceptos básicos del sistema de control de versiones semántico utilizado en Laravel 6 y hemos visto ejemplos de cómo funciona y cómo permite a Composer instalar versiones más nuevas de las dependencias cuando están disponibles usando los símbolos tilde y caret.

Publicar un comentario

0 Comentarios