JavaScript
npm

特定のモジュールと強く依存するプロジェクトの開発を行うときのtips(「npm link」と「dependenciesにローカルフォルダを指定する」方法の比較 )

More than 1 year has passed since last update.

「npmに公開していないローカルフォルダにあるモジュール」を使ったプロジェクトを開発する際にnpm linkを使う方法とdependenciesを使ってモジュールをローカルに指定する方法があるので2つを比較してみました。

1. 「npm linkを使う」方法

概要

  • node_modules以下にモジュールへのエイリアス(ショートカット)を貼ります。

メリット

  • エイリアスを貼るだけなので、モジュールの更新との同期がすぐできる。
  • モジュール側をどこのフォルダに配置しても問題ない。

デメリット

  • 初回のみだが、開発中のメンバー全員に、インストール手順を知らせなければならない。(※ もしかしたらnpm scriptsのinstallにコマンド書けばいいかも・・・?)

使用手順

1. モジュール側のプロジェクト(package.json)があるフォルダで、以下のコマンドを実行します。

$ npm link

2. モジュールを使用するプロジェクトが(package.json)あるフォルダで以下のコマンドを実行します。

$ npm link (モジュールのpackage名)

npm-use-link.png

▲ mylibはエイリアス

2. 「dependenciesにローカルフォルダを指定する」方法

概要

  • node_modules以下にモジュールを直接インストールします。

メリット

  • npm installだけでモジュールをインストールできる。

デメリット

  • モジュールの更新時に再度npm installが必要

使用手順

1. モジュールを使用するプロジェクトの「package.json」ファイルを編集し、dependenciesにモジュールへのパスを指定します(file:でローカルにあるファイルを指定できます)。

package.json
{
  "name": "app-use-dependencies",
  "version": "0.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "nyamogera <nyamogera@gmail.com> (nyamogera.net)",
  "license": "MIT",
  "dependencies":{
    "mylib":"file:../mylib"
  }
}

2. 上記編集後、npm installコマンドを実行します。

$ npm install 

npm-dependencies.png

▲ mylibは通常のパッケージと同様にインストールされる。

まとめ

どちらを使うかは、モジュールの更新頻度や大きさによって変わると思います。モジュールが未成熟で頻繁に更新がかかっていたり、モジュールが大きくnpm installにコストがかかるのであればnpm linkを使うと良いでしょう。モジュールすでに成熟してて更新がそこまでかからなかったり、モジュールが小さくnpm installにコストが少ないのであれば、dependenciesに指定するほうが無難だと思います。

参考にした記事