パッケージマネージャー
YaoXiangに組み込まれたパッケージマネージャーで、完全な依存関係管理機能を提供します。
概要
YaoXiang Package Manager (YPM) は宣言型依存関係管理を採用しています:
yaoxiang.tomlでプロジェクトの依存関係を宣言するyaoxiang.lockで正確なバージョンをロックし、ビルドの再現性を確保- 依存関係は
vendorディレクトリにダウンロードされる
クイックスタート
# 新規プロジェクト作成
yaoxiang init my-project
cd my-project
# 依存関係追加
yaoxiang add http
yaoxiang add json
# 依存関係インストール
yaoxiang install
# プロジェクト実行
yaoxiang run src/main.yxプロジェクト構造
my-project/
├── yaoxiang.toml # プロジェクトマニフェスト
├── yaoxiang.lock # 依存関係ロックファイル
├── vendor/ # 依存関係ストレージ
└── src/
└── main.yxinit
新規プロジェクトを初期化します。
使い方
yaoxiang init <name>パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
name | string | プロジェクト名 |
説明
現在のディレクトリまたは指定されたパスに新しい YaoXiang プロジェクトを作成します。
作成されるファイル
yaoxiang.toml- プロジェクトマニフェストyaoxiang.lock- 依存関係ロックファイルsrc/main.yx- エントリーポイント.gitignore- Git 除外設定
例
# 現在のディレクトリにプロジェクトを作成
yaoxiang init my-project
# 出力
# ✨ プロジェクト作成完了:my-project
# my-project/yaoxiang.toml
# my-project/yaoxiang.lock
# my-project/src/main.yx
# my-project/.gitignoreadd
プロジェクトに依存関係を追加します。
使い方
yaoxiang add <name> [version]
yaoxiang add <name> --devパラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
name | string | パッケージ名 |
version | string | バージョン番号(省略可、デフォルト *) |
オプション
| オプション | 説明 |
|---|---|
--dev, -D | 開発依存関係として追加 |
説明
依存関係をプロジェクトの yaoxiang.toml ファイルに追加し、yaoxiang.lock を更新します。
バージョン仕様
| 仕様 | 説明 | 例 |
|---|---|---|
* | 任意のバージョン | http = "*" |
1.0.0 | 正確一致 | http = "1.0.0" |
>=1.0.0 | 最低バージョン | http = ">1.0.0" |
~1.0.0 | 互換バージョン | http = "~1.0.0" |
^1.0.0 | caret バージョン | http = "^1.0.0" |
依存関係のソース
Registry(デフォルト)
yaoxiang add http
yaoxiang add http 1.0.0Git リポジトリ
# マニフェストに以下の設定が生成されます
# http = { version = "1.0.0", git = "https://github.com/example/http" }ローカルパス
# マニフェストに以下の設定が生成されます
# mylib = { version = "0.1.0", path = "./mylib" }例
# 最新バージョンを追加
yaoxiang add http
# バージョンを指定して追加
yaoxiang add http 1.0.0
# バージョン範囲を追加
yaoxiang add json ">=2.0.0"
# 開発依存関係を追加
yaoxiang add test-utils --dev
yaoxiang add benchmark -Drm
プロジェクトから依存関係を削除します。
使い方
yaoxiang rm <name>
yaoxiang rm <name> --devパラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
name | string | パッケージ名 |
オプション
| オプション | 説明 |
|---|---|
--dev, -D | 開発依存関係を削除 |
説明
プロジェクトの yaoxiang.toml から指定された依存関係を削除し、yaoxiang.lock を更新します。
例
# ランタイム依存関係を削除
yaoxiang rm http
# 開発依存関係を削除
yaoxiang rm test-utils --devinstall
プロジェクトの依存関係をインストールします。
使い方
yaoxiang install説明
yaoxiang.toml から依存関係の宣言を読み取り、以下の操作を実行します:
- 依存関係のバージョンを解決
- バージョン競合を検出
- 依存関係を
vendorディレクトリにダウンロード yaoxiang.lockを生成/更新
動作
- 依存関係がない場合は、メッセージを表示して終了
vendorディレクトリが既に存在する場合は、チェックしてキャッシュを再利用- バージョン競合が検出された場合は、エラーメッセージを表示して終了
例
# すべての依存関係をインストール
yaoxiang install
# 出力
# 📦 依存関係を解決中...
# http (1.0.0) [インストール済み]
# json (2.0.0) [キャッシュ済み]
# ✅ 依存関係がインストールされ、ロックファイルが更新されましたロックファイルの更新
install コマンドは yaoxiang.lock を更新します:
# yaoxiang.lock
[package]
version = 1
[package.http]
version = "1.0.0"
source = "registry"
[package.json]
version = "2.0.0"
source = "registry"update
プロジェクトの依存関係を更新します。
使い方
yaoxiang update
yaoxiang update <name>パラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
name | string | パッケージ名(省略可) |
説明
全量更新
パラメータなしで実行すると、すべての依存関係を更新します:
- 現在のロックされたバージョンをクリア
vendorディレクトリ内の古いバージョンをクリーンアップ- すべての依存関係を再ダウンロード
yaoxiang.lockを更新
单一更新
パラメータ付きで実行すると、指定された依存関係のみを更新します:
vendorから古いバージョンを削除- 新しいバージョンを再ダウンロード
yaoxiang.lockの該当エントリを更新- 他の依存関係は影響を受けない
例
# すべての依存関係を更新
yaoxiang update
# 出力
# 📦 依存関係を更新中...
# http (1.0.0 → 1.1.0)
# json (2.0.0 → 2.1.0)
# ✅ 2件の依存関係が更新され、ロックファイルが更新されました
# 単一の依存関係を更新
yaoxiang update http
# 出力
# ✅ http が更新されました (1.0.0 → 1.1.0)list
プロジェクトの依存関係を一覧表示します。
使い方
yaoxiang list説明
プロジェクト内のすべての依存関係を表示します:
- ランタイム依存関係(
[dependencies]から) - 開発依存関係(
[dev-dependencies]から) - 各依存関係のバージョンとソース
例
yaoxiang list
# 出力
# 📦 プロジェクト依存関係
#
# ランタイム依存関係:
# http 1.0.0 registry
# json 2.0.0 registry
#
# 開発依存関係:
# test-utils 0.5.0 registry設定ファイル
yaoxiang.toml
プロジェクトのメタデータと依存関係を宣言するプロジェクトマニフェストファイルです。
[package]
name = "my-project"
version = "0.1.0"
description = "プロジェクト説明"
authors = ["作者 <email@example.com>"]
license = "MIT"
[dependencies]
http = "1.0.0"
json = "*"
[dev-dependencies]
test-utils = "0.5.0"yaoxiang.lock
パッケージマネージャーによって自動的に生成される依存関係ロックファイルです。
# YaoXiang パッケージマネージャーによって自動的に生成
[package]
version = 1
[package.http]
version = "1.0.0"
source = "registry"コアコンセプト
ランタイム依存関係 vs 開発依存関係
- ランタイム依存関係(
[dependencies]):プロジェクトの実行時に必要なパッケージ - 開発依存関係(
[dev-dependencies]):開発・テスト時のみ必要なパッケージ
依存関係のソース
| タイプ | 設定例 | 説明 |
|---|---|---|
| Registry | http = "1.0.0" | リモートパッケージリポジトリから取得 |
| Git | { version = "1.0.0", git = "https://..." } | Gitリポジトリから取得 |
| Path | { version = "0.1.0", path = "./lib" } | ローカルパスから取得 |
ロックファイル
yaoxiang.lock はパッケージマネージャーによって自動的に生成されます。必ずバージョン管理システムにコミットしてください:
- チームメンバーが完全に同じ依存関係バージョンを使用する必要がある
- CIビルドの再現性を確保する
- 「自分の環境では動く」問題を防ぐ
vendor ディレクトリ
依存関係のダウンロード後は vendor ディレクトリに保存されます:
yaoxiang installとyaoxiang updateによって自動的に管理される- 削除後に
installを再実行して再構築可能 .gitignoreに追加することを推奨(チームメンバーごとに独立管理)
よくある質問
Q: 依存関係のバージョン競合が発生した場合は?
YPM は依存関係のバージョン競合を検出してエラーとします。解決策:
- 依存関係のバージョン要件を調整する
- 依存関係の作者が修正するのを待つ
- 競合する依存関係の削除を検討する
Q: プライベートパッケージを使用する方法は?
プライベートパッケージには、Git ソースを使用できます:
# Git URL 経由で追加
# yaoxiang.toml を手動で編集
[dependencies]
private-pkg = { version = "1.0.0", git = "https://github.com/org/private-pkg" }Q: vendor ディレクトリを削除しても大丈夫ですか?
大丈夫です。削除後に yaoxiang install を実行すると、すべての依存関係が再ダウンロードされます。
Q: 特定のパッケージの情報を確認する方法は?
yaoxiang list を使用してすべての依存関係を確認するか、yaoxiang.toml を確認してください。
