依存関係管理
依存関係管理
Section titled “依存関係管理”Wippyはロックファイルベースの依存関係システムを使用します。モジュールはハブに公開され、ソース内で依存関係として宣言され、正確なバージョンを追跡する wippy.lock ファイルに解決されます。
プロジェクトファイル
Section titled “プロジェクトファイル”wippy.lock
Section titled “wippy.lock”ロックファイルはプロジェクトのディレクトリレイアウトと固定された依存関係を追跡します:
directories: modules: .wippy src: ./srcmodules: - name: acme/http version: v1.2.0 hash: 4ea816fe84ca58a1f0869e5ca6afa93d6ddd72fa09e1162d9e600a7fbf39f0a2 - name: acme/sql version: v2.0.1 hash: b3f9c8e12a456d7890abcdef1234567890abcdef1234567890abcdef12345678| フィールド | 説明 |
|---|---|
directories.modules | ダウンロードしたモジュールの保存先 (デフォルト: .wippy) |
directories.src | ソースコードの場所 (デフォルト: ./src) |
modules[].name | org/module 形式のモジュール識別子 |
modules[].version | 固定されたセマンティックバージョン |
modules[].hash | 整合性検証のためのコンテンツハッシュ |
wippy.yaml
Section titled “wippy.yaml”公開用のモジュールメタデータ。自分のモジュールを公開する場合にのみ必要です:
organization: acmemodule: httpversion: 1.2.0description: HTTP utilities for Wippylicense: MITrepository: https://github.com/acme/wippy-httpkeywords: - http - web| フィールド | 必須 | 説明 |
|---|---|---|
organization | はい | 小文字、英数字とハイフン |
module | はい | 小文字、英数字とハイフン |
version | いいえ | セマンティックバージョン (公開時に設定) |
description | いいえ | モジュールの説明 |
license | いいえ | SPDXライセンス識別子 |
repository | いいえ | ソースリポジトリURL |
homepage | いいえ | プロジェクトホームページ |
keywords | いいえ | 検索用キーワード |
authors | いいえ | 著者リスト |
依存関係の宣言
Section titled “依存関係の宣言”_index.yaml に ns.dependency エントリを追加します:
version: "1.0"namespace: appentries: - 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"バージョン制約
Section titled “バージョン制約”| 制約 | 例 | マッチ |
|---|---|---|
| 完全一致 | 1.2.3 | 1.2.3のみ |
| キャレット | ^1.2.0 | >=1.2.0, <2.0.0 |
| チルダ | ~1.2.0 | >=1.2.0, <1.3.0 |
| 範囲 | >=1.0.0 | 1.0.0以上 |
| ワイルドカード | * | 任意のバージョン (最新を選択) |
| 複合 | >=1.0.0 <2.0.0 | 1.0.0から2.0.0の間 |
ワークフロー
Section titled “ワークフロー”新規プロジェクトの開始
Section titled “新規プロジェクトの開始”wippy initデフォルトのディレクトリで wippy.lock を作成します。
依存関係の追加
Section titled “依存関係の追加”wippy add acme/http # Latest versionwippy add acme/http@1.2.3 # Exact versionwippy add acme/http@latest # Latest labelこれによりロックファイルが更新されます。次にインストールします:
wippy installソースからの解決
Section titled “ソースからの解決”ソースに ns.dependency エントリが既に宣言されている場合:
wippy updateこれはソースディレクトリをスキャンし、すべての依存関係の制約を解決し、ロックファイルを更新し、モジュールをインストールします。
依存関係の更新
Section titled “依存関係の更新”wippy update # Re-resolve all dependencieswippy update acme/http # Update only acme/httpwippy update acme/http acme/sql # Update specific modules特定のモジュールを更新する場合、他のモジュールは現在のバージョンに固定されたままです。更新により対象外のモジュールの変更が必要になる場合、確認が求められます。
ロックファイルからのインストール
Section titled “ロックファイルからのインストール”wippy install # Install all from lockwippy install --refresh # すべてのモジュールを再取得(--force と --repair はエイリアス)モジュールストレージ
Section titled “モジュールストレージ”ダウンロードしたモジュールは .wippy/vendor/ ディレクトリに保存されます:
project/ wippy.lock src/ _index.yaml .wippy/ vendor/ acme/ http-v1.2.0.wapp sql-v2.0.1.wappデフォルトでは、モジュールは .wapp ファイルとして保持されます。ディレクトリに展開するには:
# wippy.lockoptions: unpack_modules: true展開を有効にした場合:
.wippy/ vendor/ acme/ http/ wippy.yaml src/ _index.yaml ...リプレースメントによるローカル開発
Section titled “リプレースメントによるローカル開発”開発時にハブモジュールをローカルディレクトリで上書きします:
# wippy.lockdirectories: modules: .wippy src: ./srcmodules: - name: acme/http version: v1.2.0 hash: ...replacements: - from: acme/http to: ../local-httpリプレースメントパスはロックファイルからの相対パスです。リプレースメントが有効な場合、ベンダーモジュールの代わりにローカルディレクトリが使用されます。リプレースメントは wippy update 操作後も保持されます。
起動時に、Wippyは以下の順序でディレクトリからエントリをロードします:
- ソースディレクトリ (
src) - リプレースメントディレクトリ
- ベンダーモジュールディレクトリ
アクティブなリプレースメントがあるモジュールはベンダーパスをスキップします。
ロックファイル内の各モジュールにはコンテンツハッシュがあります。インストール中、ダウンロードされたモジュールは期待されるハッシュと照合して検証されます。不一致のモジュールは拒否され、レジストリから再ダウンロードされます。