Zum Inhalt springen

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.

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
FeldBeschreibung
directories.modulesSpeicherort fur heruntergeladene Module (Standard: .wippy)
directories.srcSpeicherort Ihres Quellcodes (Standard: ./src)
modules[].nameModulbezeichner im Format org/module
modules[].versionFixierte semantische Version
modules[].hashInhalts-Hash zur Integritatsprufung

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
FeldErforderlichBeschreibung
organizationJaKleinbuchstaben, alphanumerisch mit Bindestrichen
moduleJaKleinbuchstaben, alphanumerisch mit Bindestrichen
versionNeinSemantische Version (wird beim Veroffentlichen gesetzt)
descriptionNeinModulbeschreibung
licenseNeinSPDX-Lizenzbezeichner
repositoryNeinURL des Quell-Repositorys
homepageNeinProjekt-Homepage
keywordsNeinSchlusselworter zur Auffindbarkeit
authorsNeinAutorenliste

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"
BeschrankungBeispielTrifft zu auf
Exakt1.2.3Nur 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.01.0.0 und hoher
Platzhalter*Jede Version (wahlt die hochste)
Kombiniert>=1.0.0 <2.0.0Zwischen 1.0.0 und 2.0.0
Terminal-Fenster
wippy init

Erstellt eine wippy.lock mit Standardverzeichnissen.

Terminal-Fenster
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:

Terminal-Fenster
wippy install

Wenn Ihr Quellcode bereits ns.dependency-Eintrage deklariert:

Terminal-Fenster
wippy update

Dies durchsucht Ihr Quellverzeichnis, lost alle Abhangigkeitsbeschrankungen auf, aktualisiert die Lock-Datei und installiert die Module.

Terminal-Fenster
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.

Terminal-Fenster
wippy install # Install all from lock
wippy install --refresh # Jedes Modul erneut herunterladen (--force und --repair sind Aliase)

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
...

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.

Beim Start ladt Wippy Eintrage aus Verzeichnissen in dieser Reihenfolge:

  1. Quellverzeichnis (src)
  2. Ersetzungsverzeichnisse
  3. Herstellergebundene Modulverzeichnisse

Module mit aktiven Ersetzungen uberspringen ihren Vendor-Pfad.

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.