9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

npm link を使い、複数の JavaScript モジュールを並行で開発する

Last updated at Posted at 2017-08-31

JavaScirpt を使ったアプリケーションの開発において、
依存関係のある復数のモジュールを並行で開発する状況はよくあると思います。
そのような状況の手助けをしてくれるコマンドが npm link です。

モジュール(A, B)を並行開発中に、B が A を必要としている状況があるとします。

A を少し変更するたびに npm publish したり、A のコードを B/node_modules/A 以下にコピーするのは辛いので npm link でリンクを作成し解決します。

まずは、A のディレクトリに移動し npm link を実行します。

cat package.json | jq '{name}'    # Aのモジュール名を確認(この例では"A")
> { "name": "A" }

npm link
> /usr/local/lib/node_modules/A -> ~/workspace/A

これにより ~/workspace/A/usr/local/lib/node_modules/A にリンクされます。

次に、B のディレクトリに移動し npm link A を実行します。

npm link A
> ~/workspace/B/node_modules/A -> /usr/local/lib/node_modules/A

これで ~/workspace/A~/workspace/B/node_modules/A にリンクされます。

これで A と B を並行で開発できます。

コマンドパス

また、 ~/workspace/A/package.json に { "bin": "./cli.js" } といった記述(コマンドラインツールのパス等)がある場合は、こちらも一緒にリンクが作成されます。

~/workspace/A/cli.js~/workspace/B/node_modules/.bin/cli.js にリンクされます。

また 環境変数 PATH に ./node_modules/.bin を追加しておくと、./node_modules/.bin/cli とすべきところを cli xxx で直接呼び出す事が可能になります(グローバルインストールされているかのように振る舞わせる事が可能になります)。

export PATH="./node_modules/.bin:$PATH"

PATH の追加設定は npm link の使用に限らず、常に設定しておくと幸せになれます。

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?