npm_lazyを使ってみた - A lazy local cache for npm
CastoやSTORYBOARDSでnode.js周りのアプリケーションのデプロイをする際にnpm installされる際、稀にnpm自体が重くなっていたりすることもあるので、ローカルにnpmのキャッシュサーバ的なものを立てられないかと調べていたらお手軽にできるものを見つけたので試してみた。
これを立ちあげた上で、
$ npm install --registry http://(npm_lazyを立ちあげたアドレス指定)
とnpmコマンドを実行する際にregistryを指定することで、npm_lazy
を経由してnpmコマンドを実行することができます。
npm_lazy
自体は、npmを丸ごとキャッシュする訳ではなく、必要とされたライブラリ毎にキャッシュを行うのでキャッシュ期限内のものが手元にあればそれを返し、無ければnpm本体を参照して新たに特定ディレクトリ下にファイルキャッシュを生成するといったプロキシ的な動き方をしてくれるので、特別にキャッシュ用にDBを用意したりする必要もなく気軽に利用できます。
今回、CastoやSTORYBOARDS の場合、VPS配下のLinuxコンテナでそれぞれアプリケーションが動いているので別コンテナにいるmanageサーバと呼んでいるコンテナで npm_lazy
を動かしています。
この様な構成で動かすときは npm_lazy
の設定を少し変更する必要があるので、設定を修正してそこを参照して稼働させます。
まずは設定用のファイルを出力。
$ npm_lazy --init > ~/npm_lazy.config.js
出力したconfigファイル中の
// external url to npm_lazy, no trailing / externalUrl: 'http://10.0.***.***:10080',
// bind port and host port: 10080, host: '10.0.***.***',
辺りを適宜環境に併せて修正した上で npm_lazy
を立ちあげます。立ち上げる際に --config
を指定して上で修正した設定ファイルを読み込み。
$ npm_lazy --config ~/npm_lazy.config.js
立ちあげた上で、*1
$ npm install --registry http://10.0.***.***:10080/
とすることで、CastoやSTORYBOARDSのアプリケーションコンテナからも手元で立ちあげた npm_lazy
を参照できる様になります。
*1:実際はこれだけだとアレなので、supervisorで立ちあげて永続化しています