Synopsis
npm link (in package dir)npm link <pkg>alias: npm ln
Description
Package linking は 2 段階のプロセスである。
最初に、パッケージフォルダ内の npm link
は、npmlink
コマンドを実行したパッケージにリンクするシンボリックリンクをグローバルフォルダ {prefix}/lib/node_modules/<package>
内に作成します。 npm link
はグローバル接頭辞を使用していることに注意してください (値は npm prefix -g
を参照)。
次に、他の場所で npm link package-name
がグローバルにインストールされた package-name
から現在のフォルダの node_modules/
へのシンボリックリンクを作成します。
package-name
はディレクトリ名ではなく、package.json
から取ったものであることに注意してください。
パッケージ名には、オプションでスコープを前置することができます。
npm publish
の tarball を作成する際、リンクされたパッケージはシンボリックリンクを解決して現在の状態に “スナップショット” されます。
たとえば:
cd ~/projects/node-redis # パッケージ ディレクトリに入るnpm link # グローバルリンクを作成cd ~/projects/node-bloggy # どこか別のパッケージ ディレクトリに入る。npm link redis # パッケージをリンクインストール
これで ~/projects/node-redis への変更が ~/projects/node-bloggy/node_modules/node-redis/ に反映されるようになります。
また、2 つのステップを 1 つにまとめてショートカットすることもできます。 たとえば、上記のユースケースをより短い方法で行うには:
cd ~/projects/node-bloggy # メインプロジェクトのディレクトリに入るnpm link ../node-redis # 依存先のディレクトリをリンク
2 行目は、次のようにするのと同じです:
(cd ../node-redis; npm link)npm link redis
つまり、最初にグローバルリンクを作成し、次にプロジェクトの node_modules
フォルダに globalinstallation ターゲットをリンクします。
この場合、パッケージ名 redis
ではなく、ディレクトリ名 node-redis
を参照していることに注意してください。
リンク先のパッケージにスコープ (scope
参照) がある場合、リンクコマンドにはそのスコープを含めなければなりません (たとえば
npm link @myorg/privatepackage
See Also
- npm developers
- package.json
- npm install
- npm folders
- npm config
- npmrc