JSでライブラリを作って、そのライブラリを使うプロジェクトがあった時に、使う側がpackage.jsonのdepedenciesに依存を追加して、npm installしてbrowserifyとかでrequireしたりしています。(browserifyでのmoduleの依存解決について興味のある方は”Browserify dependencies in depth!“をご参照ください)

gitのsubmoduleなんか使うよりはnpm installだけで済むので快適なのですが、絶賛開発中にライブラリ側を更新する度に、使っている側のプロジェクトのnode_modules以下の該当ディレクトリを削除してnpm installし直したりするのは面倒ですよねー

そこでnpm linkを使うと良い感じになりますたのでメモ。意外と記事が少なかったのでまとめておきます。


npm link使い方

1. ライブラリのディレクトリで”npm link”を実行
実行するとモジュールのsymbolic link(紐付け)が完了します。今回の例では自作のライブラリをyour_common_moduleとしています

your_common_module xxx$ npm link
/Users/xxx/.nodebrew/node/v0.11.12/lib/node_modules/your_common_module -> /Users/xxx/your_common_module

2. 使う側のプロジェクトで”npm link your_common_module”を実行
使う側のプロジェクト直下で下記コマンドを実行。linkを辿る様子が出力されます。

your_project xxx$ npm link your_common_module
/Users/xxx/your_project/node_modules/your_common_module -> /Users/xxx/.nodebrew/node/v0.11.12/lib/node_modules/your_common_module -> /Users/xxx/your_common_module

これで紐付け完了!これまで使う側がbrowserifyなどで node_modules/your_common_module 以下を見に行っていたところが、1で登録したライブラリ自身のディレクトリを見に行くようになります。
(ちなみに、この例ではnodeのv0.11.12を使っていますが、iojsの古いバージョンではerrorで動かなかった…)


linkの確認

使う側が紐付けを行っているか確認するためには”npm ls your_common_module”で確認できます。

your_project xxx$ npm ls your_common_module
└── your_common_module@0.0.1 -> /Users/xxx/your_common_module

linkの削除

linkを消すためには、npm unlinkを使います。

your_project xxx$ npm unlink your_common_module
unbuild your_common_module@0.0.1

めでたしめでたし。もうnpm installを繰り返す必要はありませんね!


Categories: JS

Related Posts

JS

webviewでのスクロールの謎

jQueryでscrollイベントに何か処理を挟むには大体以下のようにすると思います。 しかし、iOSのwebview内ではscrollイベントが正しく呼ばれないことが判明…!

JS

Mithril.js ソースコードリーディング前編〜Virtual DOMの実装を理解する 〜

前回はBackbone.jsの社内コードリーディング会でした。今回はVirtualDOMの軽量ライブラリとして少しずつ人気が出てきている気がするMithril.jsに関して行いますので、リーディング時のメモです。 Mithril https://lhorie.github.io/mithril/ ソースコード(執筆時点v0.2.0 2015/07/18) https://github.com/lhorie/mithril.js/blob/master/mithril.js Virtual DOMの実装は約300行でそこが今回のソースコードリーディングのメインとなります。 今回はそのbuild()周りを見てきます。バージョンは現時点で最新のv0.2.0です。 ビール片手にリーディングしつつ、確認程度にメモを見ていただければ。

JS

YeomanでBackbone + requireJS

前回の記事の続きで、AMDモジュールであるrequireJSに加えてMVCフレームワークのbackboneもYeomanで準備してもらいたいということで以下のgeneratorを使ってみました。 https://github.com/yeoman/generator-backbone まず任意のディレクトリで npm install -g generator-backbone その後、以下を実行(requirejsの選択を忘れずに) yo backbone bower listを実行してみてdependencyモジュールがまだインストールされていないので、bower installを実行 その後gruntで問題なく動作することを確認。 試しに以下のコマンドでmodelのjsファイルを作成してみる。 yo backbone:model Test すると、app/scripts/models/Test.jsにmodelの雛形ができあがる。 あとはviewなども同様に作成し、main.jsからAMDで書き始めればOKそう。