|
| 1 | +# SEMVER |
| 2 | + |
| 3 | +Respetamos el estándar [Versionado Semántico 2.0.0](https://semver.org/lang/es/). |
| 4 | + |
| 5 | +En resumen, [SemVer](https://semver.org/) es un sistema de versiones de tres componentes `X.Y.Z` |
| 6 | +que nombraremos así: `[ Breaking ] . [ Feature ] . [ Fix ]`, donde: |
| 7 | + |
| 8 | +- `Breaking`: Rompe la compatibilidad de código con versiones anteriores. |
| 9 | +- `Feature`: Agrega una nueva característica que es compatible con lo anterior. |
| 10 | +- `Fix`: Incluye algún cambio (generalmente correcciones) que no agregan nueva funcionalidad. |
| 11 | + |
| 12 | +## Composer |
| 13 | + |
| 14 | +[Composer](https://getcomposer.org/) es un gestor de dependencias en proyectos para PHP. |
| 15 | +Este gestor usa las [reglas](https://getcomposer.org/doc/articles/versions.md) |
| 16 | +de versionado semántico para instalar y actualizar paquetes. |
| 17 | + |
| 18 | +Te recomendamos instalar dependencias de librerías (no frameworks) con *Caret Version Range*. |
| 19 | +Por ejemplo: `"vendor/package": "^2.5"`. |
| 20 | + |
| 21 | +Esto significa que: |
| 22 | + |
| 23 | +- no debe actualizar a versiones `3.x.x` |
| 24 | +- no debe utilizar ninguna versión menor a `2.5.0` |
| 25 | + |
| 26 | +## Versiones 0.x.y no rompe compatibilidad |
| 27 | + |
| 28 | +Las versiones que inician con cero, por ejemplo `0.y.z`, no se ajustan a las reglas de versionado. |
| 29 | +Se considera que estas versiones son previas a la madurez del proyecto y por lo tanto |
| 30 | +introducen cambios sin previo aviso. |
| 31 | + |
| 32 | +Sin embargo, nos apegaremos a `[ 0 ] . [ Breaking ] . [ Feature || Fix ]`. Lo que significa que `0.3.0` |
| 33 | +no es compatible con `0.2.15` pero `0.3.4` sí es compatible con `0.3.0`. |
| 34 | + |
| 35 | +## `@internal` no rompe compatibilidad |
| 36 | + |
| 37 | +Si la librería contiene elementos marcados como `@internal` significa que no deben ser utilizados |
| 38 | +por tu código. Son partes de código internos de la librería. |
| 39 | +Por lo tanto, no se consideran breaking changes. |
| 40 | + |
| 41 | +Cuando un elemento es `@internal`, dicho elemento: |
| 42 | + |
| 43 | +- no debe ser una entrada (parámetro) |
| 44 | +- no debe ser una salida (retorno) |
| 45 | +- no debe exponer exponer funcionalidades en los objetos públicos (rasgos) |
0 commit comments