Skip to content

Bun のパッケージマネージャーは npm の "workspaces" をサポートしています。これにより、コードベースを同じリポジトリに存在する複数の個別の「パッケージ」に分割でき、互いに依存し、(可能な場合)node_modules ディレクトリを共有できます。

ワークスペースを実験するには、このサンプルプロジェクト をクローンしてください。


ルートの package.json には "dependencies""devDependencies" などを含めないでください。各パッケージは自己完結型であり、独自の依存関係を宣言する必要があります。同様に、ルートパッケージを誤って npm に公開しないように "private": true を宣言するのが一般的です。

json
{
  "name": "my-monorepo",
  "private": true,
  "workspaces": ["packages/*"]
}

すべてのパッケージを packages ディレクトリに配置するのが一般的です。package.json の "workspaces" フィールドはグロブパターンをサポートしているため、packages/* を使用して packages の各サブディレクトリを個別の パッケージ(ワークスペースとも呼ばれる)として指定できます。

txt
.
├── package.json
├── node_modules
└── packages
    ├── stuff-a
    │   └── package.json
    └── stuff-b
        └── package.json

ワークスペース間の依存関係を追加するには、"workspace:*" 構文を使用します。ここでは stuff-astuff-b の依存関係として追加しています。

json
{
  "name": "stuff-b",
  "dependencies": {
    "stuff-a": "workspace:*"
  }
}

追加されたら、プロジェクトルートから bun install を実行して、すべてのワークスペースの依存関係をインストールします。

sh
bun install

特定のワークスペースに npm 依存関係を追加するには、適切なディレクトリに cd で移動し、通常どおり bun add コマンドを実行します。Bun はあなたがワークスペースにいることを検出し、必要に応じて依存関係をホイスティングします。

sh
cd packages/stuff-a
bun add zod

Bun のパッケージマネージャーの完全なドキュメントについては、ドキュメント > パッケージマネージャー を参照してください。

Bun by www.bunjs.com.cn 編集