メインコンテンツにスキップ

Lerna で pnpm を使用する

Lerna は pnpm ワークスペース で使用することで、pnpm と Lerna の両方のメリットを最大限に活用できます。

pnpm ワークスペースで使用する場合、Lerna は以下の動作をします。

  • pnpm-workspace.yaml を使用してパッケージの場所を解決します (https://pnpm.dokyumento.jp/workspaces)
  • package.json"workspaces" を無視します。
  • bootstraplink、および add コマンドの使用をブロックします。代わりに、pnpm コマンドを直接使用して依存関係を管理する必要があります (https://pnpm.dokyumento.jp/cli/install)。
  • パッケージの依存関係に ワークスペースプロトコル を適用します。
    • lerna version 実行中は、依存関係は通常どおり更新されますが、workspace: プレフィックスが存在する場合は保持されます。
    • ワークスペースエイリアス が使用されている場合、エイリアスはバンプするバージョン番号を指定しないため、lerna version は依存関係のバージョンをバンプしません。

はじめに

pnpm と Lerna を設定するには

  1. まだインストールされていない場合は、pnpm をインストールします: https://pnpm.dokyumento.jp/installation

  2. ルートにある node_modules/ フォルダが存在する場合は削除します。ワークスペースをまだ使用していない場合は、lerna clean を実行してすべてのパッケージの node_modules/ フォルダを削除します。

  3. lerna.json"npmClient": "pnpm" を設定します。

  4. プロジェクトのルートに 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.yaml
    packages:
    - "packages/*"
  5. (オプション) 既存の lockfile から pnpm-lock.yaml ファイルを生成するには、pnpm import を実行します。サポートされている lockfile ソースについては、https://pnpm.dokyumento.jp/cli/import を参照してください。

  6. pnpm install を実行します。