Lerna で pnpm を使用する
Lerna は pnpm
ワークスペース で使用することで、pnpm
と Lerna の両方のメリットを最大限に活用できます。
pnpm
ワークスペースで使用する場合、Lerna は以下の動作をします。
pnpm-workspace.yaml
を使用してパッケージの場所を解決します (https://pnpm.dokyumento.jp/workspaces)package.json
の"workspaces"
を無視します。bootstrap
、link
、およびadd
コマンドの使用をブロックします。代わりに、pnpm
コマンドを直接使用して依存関係を管理する必要があります (https://pnpm.dokyumento.jp/cli/install)。- パッケージの依存関係に ワークスペースプロトコル を適用します。
lerna version
実行中は、依存関係は通常どおり更新されますが、workspace:
プレフィックスが存在する場合は保持されます。- ワークスペースエイリアス が使用されている場合、エイリアスはバンプするバージョン番号を指定しないため、
lerna version
は依存関係のバージョンをバンプしません。
はじめに
pnpm と Lerna を設定するには
-
まだインストールされていない場合は、
pnpm
をインストールします: https://pnpm.dokyumento.jp/installation。 -
ルートにある
node_modules/
フォルダが存在する場合は削除します。ワークスペースをまだ使用していない場合は、lerna clean
を実行してすべてのパッケージのnode_modules/
フォルダを削除します。 -
lerna.json
に"npmClient": "pnpm"
を設定します。 -
プロジェクトのルートに
pnpm-workspace.yaml
ファイルを作成します。npm または yarn ワークスペースを既に使用している場合は、package.json
の "workspaces" プロパティをpnpm-workspace.yaml
に移動します。ワークスペースをまだ使用していなかった場合は、lerna.json
の "packages" プロパティをpnpm-workspace.yaml
に移動します。例えばpackage.json{
"workspaces": ["packages/*"]
}と
lerna.json{
"packages": ["packages/*"]
}は、次のようになります。
pnpm-workspace.yamlpackages:
- "packages/*" -
(オプション) 既存の lockfile から
pnpm-lock.yaml
ファイルを生成するには、pnpm import
を実行します。サポートされている lockfile ソースについては、https://pnpm.dokyumento.jp/cli/import を参照してください。 -
pnpm install
を実行します。