#0.はじめに
Node.jsのパッケージ管理ツールであるnpmですが、通常はインターネットに接続している環境で動作するものです。
しかし、ローカル(イントラネット)の場合でインターネットに接続できない場合、npmでのパッケージ追加ができません。
このような場合でもローカルインストールできる方法をまとめてみました。
#1."npm pack"ではダメな理由
たとえば、forever(Node.js用のデーモンマネージャー)をインストールしたい場合、インターネットに接続できる環境で以下のコマンドを実行するとインストールができます。
npm install -g forever
これをパッケージ化するには以下のコマンドを使います。
npm pack forever
すると「forever-X.X.X.tgz」のようなファイルが生成されます。
これをインストールしたい環境(ローカル環境)へ持っていき
npm install -g forever-X.X.X.tgz
とすればインストール・・・できないのです。
依存関係でエラーが出てきてしまいます。
#依存関係にある全てのパッケージをpackしてしまえばインストール可能ですが・・・
よって別の方法を取りたいと思います。
#2.npmboxを使う
npmboxは依存するモジュールごとパッケージ化する便利なものです。
以下、手順です。
なお、前提として以下のようにします。
- インターネットに接続できる環境(これを「インターネット環境」)とインターネットに接続できない環境(これを「イントラネット環境」)の2つがある
- 「イントラネット環境」にforeverをインストールすることが目的
- 両環境ともnpmboxは未インストール
####2.1.インターネット環境にnpmboxをインストール
npm install -g npmbox
####2.2.npmboxを用いnpmboxとforeverをパッケージ化
npmbox npmbox forever
以下の2ファイルが作成されます。
npmbox.npmbox
forever.npmbox
####2.3.イントラネット環境にnpmboxをインストール
npmbox.npmboxを使ってnpmboxをインストールします。
ここではまだnpmbox自体がインストールされていないためnpmにてインストールします。
tar --no-same-owner --no-same-permissions -xvzf npmbox.npmbox
展開すると.npmbox.cacheというディレクトリが作成されるはずです。
展開された.npmbox.cacheを使ってnpmboxをインストールします。
npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox
これでnpmboxがインストールされました。
#途中エラーが出る場合はキャッシュのクリアを試してください
npm cache clean
####2.4.イントラネット環境にforeverをインストール
forever.npmboxを使ってnpmboxをインストールします。
npmboxがインストールされたので、npmbox(npmunbox)にてインストールします。
npmunbox -g forever.npmbox
#3.最後に
npmboxは環境構築時(インターネットに接続できる状態時)にインストールしておくことをおススメします。