メインコンテンツに移動
バージョン: 9.x

pnpm link

エイリアス: ln

現在のローカルパッケージをシステム全体、または別の場所にアクセスできるようにします。

pnpm link <dir>
pnpm link --global
pnpm link --global <pkg>

オプション

--dir , -C

  • デフォルト:現在の作業ディレクトリ
  • タイプ:パス文字列

リンク先を

に変更します。

フォルダーからこのコマンドを実行したパッケージのnode_modules、または--dirオプションで指定したnode_modulesにパッケージをリンクします。

たとえば、~/projects/foo内にいてpnpm link --dir ../barを実行すると、foobar/node_modules/fooにリンクされます。

このコマンドを実行した場所、または--dirオプションで指定した場所のパッケージをグローバルのnode_modulesにリンクし、pnpm link --global で別のパッケージから参照できるようにします。パッケージにbinフィールドがある場合、パッケージのバイナリもシステム全体で利用可能になります。

グローバルな node_modules の指定パッケージ (<pkg>) を、コマンドを実行したパッケージの node_modules または --dir オプションで指定したパッケージの node_modules にリンクする

pnpm link <dir><dir> からのパッケージを、コマンドを実行したパッケージの node_modules にリンクします。pnpm link --dir <dir> は現在の作業ディレクトリからパッケージを <dir> にリンクします。

# The current directory is foo
pnpm link ../bar

- foo
- node_modules
- bar -> ../../bar
- bar

# The current directory is bar
pnpm link --dir ../foo

- foo
- node_modules
- bar -> ../../bar
- bar

ユースケース

インストール済のパッケージをローカルバージョンに置き換える

foo パッケージを使用するプロジェクトがあるとします。foo に変更を加えて、それらをプロジェクトでテストしたいとします。このシナリオでは、pnpm link を使用して foo のローカルバージョンをプロジェクトにリンクできます。その間、package.json は変更されません。

cd ~/projects/foo
pnpm install # install dependencies of foo
pnpm link --global # link foo globally
cd ~/projects/my-project
pnpm link --global foo # link foo to my-project

グローバルな node_modules フォルダーを使用せずに、ディレクトリから別のディレクトリにパッケージをリンクすることもできます。

cd ~/projects/foo
pnpm install # install dependencies of foo
cd ~/projects/my-project
pnpm link ~/projects/foo # link foo to my-project

バイナリをグローバルに追加する

CLI ツールなどのバイナリがあるパッケージを開発している場合は、pnpm link --global を使用してバイナリをシステム全体で利用できるようにできます。これは pnpm install -g foo を使用するのと同じですが、レジストリからダウンロードする代わりに foo のローカルバージョンを使用します。

バイナリは、パッケージの package.jsonbin フィールドがある場合にのみ使用できることに注意してください。

cd ~/projects/foo
pnpm install # install dependencies of foo
pnpm link --global # link foo globally

pnpm link を使用すると、リンクされたパッケージはソースコードからシンボリックリンクされます。リンクされたパッケージのソースコードを変更できますが、変更はプロジェクトに反映されます。このメソッドでは、pnpm はリンクされたパッケージの依存関係をインストールしません。ソースコードで依存関係を手動でインストールする必要があります。これは、リンクされたパッケージに特定のパッケージマネージャーを使用する必要がある場合、たとえば、リンクされたパッケージに npm を使用したいがプロジェクトに pnpm を使用したい場合に役立ちます。

dependenciesfile: プロトコルを使用すると、リンクされたパッケージはプロジェクトの node_modules にハードリンクされます。リンクされたパッケージのソースコードを変更できますが、変更はプロジェクトに反映されます。このメソッドでは、pnpm はリンクされたパッケージの依存関係もインストールし、リンクされたパッケージの node_modules を上書きします。

情報

ピア依存関係を扱うときは、file: プロトコルを使用することをお勧めします。ピア依存関係をプロジェクトの依存関係からより適切に解決し、リンクされた依存関係で確実にメインプロジェクトに指定された依存関係のバージョンが使用されるため、より一貫性のある想定通りの動作が実現します。

機能pnpm linkfile: プロトコル
シンボリックリンク/ハードリンクシンボリックリンクハードリンク
ソースコード変更を反映するはいはい
リンクされたパッケージの依存関係をインストールするいいえ (手動インストールが必要)はい (リンクされたパッケージの node_modules を上書き)
依存関係に別のパッケージマネージャーを使用する可能(例:リンクされた pkg に npm を使用)いいえ、pnpm を使用します