kei0425tan’s blog

技術的なことを主に

nodejsで自作別リポジトリ(gitlab/github)をモジュール化して利用するには?

プログラムを作っていて、この機能をあのプログラムでも利用したいなぁ。。。といったことはよくあるかと思います。

そういうときには、コピペしてしまうと整合性が取れなくなってあとで困ることになります。
なので、うまくgitのリポジトリで取り込めないかといろいろ調べてみたのですが、npmはちゃんと対応していました。

npm package.json 日本語版 取扱説明書
こちらに依存性のGit URL参照に記述がありました。

まとめると以下の手順になります。

モジュール側の設定

package.jsonの編集

今まであんまり意識していませんでしたが、以下の項目が大切になります。

  • name

→ パッケージ名になります。ここで記述した名前を指定してrequireで読み込みます。

  • private

→ trueを指定しておくと、npmに間違えて登録したりしません。

  • main

→ requireで実行するソースを指定します。
最後(じゃなくてもいいけど)に「module.exports = ほげほげ」を記述します。
利用するプログラムでは、xxx = require(yyyy)とすることにより、モジュールで記述したほげほげをxxxで参照できます。

  • version

→ バージョンを記述しておかないとわかりにくいでしょう。

gitlab/githubにpush

普通にpushして他からcloneできるようにしておきましょう。

利用側の設定

npm install
% npm install git+ssh://git@gitlab.com:ユーザ名/リポジトリ名.git --save

これだけです。
gitlabのsshに記述してある

git@gitlab.com:ユーザ名/リポジトリ名.git

をgit+ssh://の後ろにそのまま指定すればよいです。

githubの場合はもう少し簡単で以下でOKです。

% npm install git://github.com/ユーザ名/リポジトリ名.git --save

もちろん、gitlabと同様に指定しても問題ありません。

モジュール側を修正する場合

ファイルを修正後、package.jsonのversionを変更します。
その後、利用側で、「npm install パッケージ名」を実行します。

おわりに

モジュールする場合、共通部分を抜き出して行うのが正しい方法かとは思います。
しかし、簡単な処理の場合は全体をモジュール化して読み込んでしまうのもありかと思います。