「npmに公開していないローカルフォルダにあるモジュール」を使ったプロジェクトを開発する際にnpm link
を使う方法とdependencies
を使ってモジュールをローカルに指定する方法があるので2つを比較してみました。
1. 「npm linkを使う」方法
概要
-
node_modules
以下にモジュールへのエイリアス(ショートカット)を貼ります。
メリット
- エイリアスを貼るだけなので、モジュールの更新との同期がすぐできる。
- モジュール側をどこのフォルダに配置しても問題ない。
デメリット
- 初回のみだが、開発中のメンバー全員に、インストール手順を知らせなければならない。(※ もしかしたらnpm scriptsのinstallにコマンド書けばいいかも・・・?)
使用手順
1. モジュール側のプロジェクト(package.json)があるフォルダで、以下のコマンドを実行します。
$ npm link
2. モジュールを使用するプロジェクトが(package.json)あるフォルダで以下のコマンドを実行します。
$ npm link (モジュールのpackage名)
▲ mylibはエイリアス
2. 「dependenciesにローカルフォルダを指定する」方法
概要
-
node_modules
以下にモジュールを直接インストールします。
メリット
-
npm install
だけでモジュールをインストールできる。
デメリット
- モジュールの更新時に再度
npm install
が必要
使用手順
1. モジュールを使用するプロジェクトの「package.json」ファイルを編集し、dependencies
にモジュールへのパスを指定します(file:
でローカルにあるファイルを指定できます)。
{
"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
▲ mylibは通常のパッケージと同様にインストールされる。
まとめ
どちらを使うかは、モジュールの更新頻度や大きさによって変わると思います。モジュールが未成熟で頻繁に更新がかかっていたり、モジュールが大きくnpm install
にコストがかかるのであればnpm link
を使うと良いでしょう。モジュールすでに成熟してて更新がそこまでかからなかったり、モジュールが小さくnpm install
にコストが少ないのであれば、dependencies
に指定するほうが無難だと思います。