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を実行します。