Gestion de Dependencias
Wippy usa un sistema de dependencias basado en archivos de bloqueo. Los modulos se publican en el hub, se declaran como dependencias en tu codigo fuente y se resuelven en un archivo wippy.lock que rastrea las versiones exactas.
Archivos del Proyecto
wippy.lock
El archivo de bloqueo rastrea la estructura de directorios de tu proyecto y las dependencias fijadas:
directories:
modules: .wippy
src: ./src
modules:
- name: acme/http
version: v1.2.0
hash: 4ea816fe84ca58a1f0869e5ca6afa93d6ddd72fa09e1162d9e600a7fbf39f0a2
- name: acme/sql
version: v2.0.1
hash: b3f9c8e12a456d7890abcdef1234567890abcdef1234567890abcdef12345678
| Campo | Descripcion |
|---|---|
directories.modules |
Donde se almacenan los modulos descargados (por defecto: .wippy) |
directories.src |
Donde reside tu codigo fuente (por defecto: ./src) |
modules[].name |
Identificador del modulo en formato org/module |
modules[].version |
Version semantica fijada |
modules[].hash |
Hash de contenido para verificacion de integridad |
wippy.yaml
Metadatos del modulo para publicacion. Solo es necesario cuando publicas tu propio modulo:
organization: acme
module: http
version: 1.2.0
description: HTTP utilities for Wippy
license: MIT
repository: https://github.com/acme/wippy-http
keywords:
- http
- web
| Campo | Requerido | Descripcion |
|---|---|---|
organization |
Si | Minusculas, alfanumerico con guiones |
module |
Si | Minusculas, alfanumerico con guiones |
version |
No | Version semantica (se establece al publicar) |
description |
No | Descripcion del modulo |
license |
No | Identificador de licencia SPDX |
repository |
No | URL del repositorio fuente |
homepage |
No | Pagina principal del proyecto |
keywords |
No | Palabras clave para descubrimiento |
authors |
No | Lista de autores |
Declaracion de Dependencias
Agrega entradas ns.dependency en tu _index.yaml:
version: "1.0"
namespace: app
entries:
- name: dependency.http
kind: ns.dependency
component: acme/http
version: "^1.0.0"
- name: dependency.sql
kind: ns.dependency
component: acme/sql
version: ">=2.0.0"
Restricciones de Version
| Restriccion | Ejemplo | Coincide con |
|---|---|---|
| Exacta | 1.2.3 |
Solo 1.2.3 |
| Caret | ^1.2.0 |
>=1.2.0, <2.0.0 |
| Tilde | ~1.2.0 |
>=1.2.0, <1.3.0 |
| Rango | >=1.0.0 |
1.0.0 y superior |
| Comodin | * |
Cualquier version (elige la mas alta) |
| Combinada | >=1.0.0 <2.0.0 |
Entre 1.0.0 y 2.0.0 |
Flujo de Trabajo
Iniciar un Nuevo Proyecto
wippy init
Crea un wippy.lock con los directorios por defecto.
Agregar Dependencias
wippy add acme/http # Latest version
wippy add acme/http@1.2.3 # Exact version
wippy add acme/http@latest # Latest label
Esto actualiza el archivo de bloqueo. Luego instala:
wippy install
Resolver desde el Codigo Fuente
Si tu codigo fuente ya declara entradas ns.dependency:
wippy update
Esto escanea tu directorio fuente, resuelve todas las restricciones de dependencias, actualiza el archivo de bloqueo e instala los modulos.
Actualizar Dependencias
wippy update # Re-resolve all dependencies
wippy update acme/http # Update only acme/http
wippy update acme/http acme/sql # Update specific modules
Al actualizar modulos especificos, los demas modulos permanecen fijados en sus versiones actuales. Si la actualizacion requiere cambiar modulos que no son objetivo, se solicita confirmacion.
Instalar desde el Archivo de Bloqueo
wippy install # Install all from lock
wippy install --force # Bypass cache, re-download
Almacenamiento de Modulos
Los modulos descargados se almacenan en el directorio .wippy/vendor/:
project/
wippy.lock
src/
_index.yaml
.wippy/
vendor/
acme/
http-v1.2.0.wapp
sql-v2.0.1.wapp
Por defecto, los modulos se mantienen como archivos .wapp. Para extraerlos en directorios:
# wippy.lock
options:
unpack_modules: true
Con la extraccion habilitada:
.wippy/
vendor/
acme/
http/
wippy.yaml
src/
_index.yaml
...
Desarrollo Local con Reemplazos
Sustituye modulos del hub con directorios locales para desarrollo:
# wippy.lock
directories:
modules: .wippy
src: ./src
modules:
- name: acme/http
version: v1.2.0
hash: ...
replacements:
- from: acme/http
to: ../local-http
La ruta de reemplazo es relativa al archivo de bloqueo. Cuando un reemplazo esta activo, se usa el directorio local en lugar del modulo vendorizado. Los reemplazos se preservan durante las operaciones de wippy update.
Orden de Carga
Al iniciar, Wippy carga las entradas desde los directorios en este orden:
- Directorio fuente (
src) - Directorios de reemplazo
- Directorios de modulos vendorizados
Los modulos con reemplazos activos omiten su ruta de vendor.
Verificacion de Integridad
Cada modulo en el archivo de bloqueo tiene un hash de contenido. Durante la instalacion, los modulos descargados se verifican contra sus hashes esperados. Los modulos con discrepancias se rechazan y se vuelven a descargar desde el registro.
Ver Tambien
- CLI - Referencia de comandos
- Publicacion - Publicacion de modulos en el hub
- Estructura del Proyecto - Estructura del proyecto