Abhangigkeitsverwaltung
Wippy verwendet ein Lock-Datei-basiertes Abhangigkeitssystem. Module werden im Hub veroffentlicht, als Abhangigkeiten in Ihrem Quellcode deklariert und in einer wippy.lock-Datei aufgelost, die exakte Versionen verfolgt.
Projektdateien
wippy.lock
Die Lock-Datei verfolgt die Verzeichnisstruktur Ihres Projekts und die fixierten Abhangigkeiten:
directories:
modules: .wippy
src: ./src
modules:
- name: acme/http
version: v1.2.0
hash: 4ea816fe84ca58a1f0869e5ca6afa93d6ddd72fa09e1162d9e600a7fbf39f0a2
- name: acme/sql
version: v2.0.1
hash: b3f9c8e12a456d7890abcdef1234567890abcdef1234567890abcdef12345678
| Feld | Beschreibung |
|---|---|
directories.modules |
Speicherort fur heruntergeladene Module (Standard: .wippy) |
directories.src |
Speicherort Ihres Quellcodes (Standard: ./src) |
modules[].name |
Modulbezeichner im Format org/module |
modules[].version |
Fixierte semantische Version |
modules[].hash |
Inhalts-Hash zur Integritatsprufung |
wippy.yaml
Modul-Metadaten fur die Veroffentlichung. Nur erforderlich, wenn Sie ein eigenes Modul veroffentlichen:
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
| Feld | Erforderlich | Beschreibung |
|---|---|---|
organization |
Ja | Kleinbuchstaben, alphanumerisch mit Bindestrichen |
module |
Ja | Kleinbuchstaben, alphanumerisch mit Bindestrichen |
version |
Nein | Semantische Version (wird beim Veroffentlichen gesetzt) |
description |
Nein | Modulbeschreibung |
license |
Nein | SPDX-Lizenzbezeichner |
repository |
Nein | URL des Quell-Repositorys |
homepage |
Nein | Projekt-Homepage |
keywords |
Nein | Schlusselworter zur Auffindbarkeit |
authors |
Nein | Autorenliste |
Abhangigkeiten deklarieren
Fugen Sie ns.dependency-Eintrage in Ihrer _index.yaml hinzu:
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"
Versionsbeschrankungen
| Beschrankung | Beispiel | Trifft zu auf |
|---|---|---|
| Exakt | 1.2.3 |
Nur 1.2.3 |
| Caret | ^1.2.0 |
>=1.2.0, <2.0.0 |
| Tilde | ~1.2.0 |
>=1.2.0, <1.3.0 |
| Bereich | >=1.0.0 |
1.0.0 und hoher |
| Platzhalter | * |
Jede Version (wahlt die hochste) |
| Kombiniert | >=1.0.0 <2.0.0 |
Zwischen 1.0.0 und 2.0.0 |
Arbeitsablauf
Neues Projekt starten
wippy init
Erstellt eine wippy.lock mit Standardverzeichnissen.
Abhangigkeiten hinzufugen
wippy add acme/http # Latest version
wippy add acme/http@1.2.3 # Exact version
wippy add acme/http@latest # Latest label
Dies aktualisiert die Lock-Datei. Dann installieren:
wippy install
Aus dem Quellcode auflosen
Wenn Ihr Quellcode bereits ns.dependency-Eintrage deklariert:
wippy update
Dies durchsucht Ihr Quellverzeichnis, lost alle Abhangigkeitsbeschrankungen auf, aktualisiert die Lock-Datei und installiert die Module.
Abhangigkeiten aktualisieren
wippy update # Re-resolve all dependencies
wippy update acme/http # Update only acme/http
wippy update acme/http acme/sql # Update specific modules
Beim Aktualisieren bestimmter Module bleiben andere Module auf ihren aktuellen Versionen fixiert. Falls die Aktualisierung Anderungen an nicht ausgewahlten Modulen erfordert, werden Sie zur Bestatigung aufgefordert.
Aus der Lock-Datei installieren
wippy install # Install all from lock
wippy install --force # Bypass cache, re-download
Modulspeicher
Heruntergeladene Module werden im Verzeichnis .wippy/vendor/ gespeichert:
project/
wippy.lock
src/
_index.yaml
.wippy/
vendor/
acme/
http-v1.2.0.wapp
sql-v2.0.1.wapp
Standardmassig werden Module als .wapp-Dateien aufbewahrt. Um sie in Verzeichnisse zu entpacken:
# wippy.lock
options:
unpack_modules: true
Mit aktiviertem Entpacken:
.wippy/
vendor/
acme/
http/
wippy.yaml
src/
_index.yaml
...
Lokale Entwicklung mit Ersetzungen
Uberschreiben Sie Hub-Module mit lokalen Verzeichnissen fur die Entwicklung:
# wippy.lock
directories:
modules: .wippy
src: ./src
modules:
- name: acme/http
version: v1.2.0
hash: ...
replacements:
- from: acme/http
to: ../local-http
Der Ersetzungspfad ist relativ zur Lock-Datei. Wenn eine Ersetzung aktiv ist, wird das lokale Verzeichnis anstelle des herstellergebundenen Moduls verwendet. Ersetzungen bleiben uber wippy update-Operationen hinweg erhalten.
Ladereihenfolge
Beim Start ladt Wippy Eintrage aus Verzeichnissen in dieser Reihenfolge:
- Quellverzeichnis (
src) - Ersetzungsverzeichnisse
- Herstellergebundene Modulverzeichnisse
Module mit aktiven Ersetzungen uberspringen ihren Vendor-Pfad.
Integritatsprufung
Jedes Modul in der Lock-Datei hat einen Inhalts-Hash. Wahrend der Installation werden heruntergeladene Module anhand ihrer erwarteten Hashes uberpruft. Module mit abweichenden Hashes werden abgelehnt und erneut aus der Registry heruntergeladen.
Siehe auch
- CLI - Befehlsreferenz
- Veroffentlichung - Module im Hub veroffentlichen
- Projektstruktur - Projektaufbau