kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

npmの運用はどうするのがいいか考えてみる

npmを利用してライブラリを利用する機会が増えてきました。

www.npmjs.com

ライブラリ名でインストールすれば便利な機能が使えちゃうので、よく理解せずに使っている感じがあります。

インストールすると、node_modulesにファイルがものすごい数でインストールされていますね。

便利便利。。。と思っていたら、色々と考える必要が出てきて困っています。

バージョン管理に含めるかどうか

現在gitでバージョン管理をしており、WindowsでSourcetreeのGUIを使っています。

さきほども書いたとおりものすごい数のファイルがダウンロードされるため、バージョン管理に含めるとかなり遅くなりました。

リリースにも影響が出たりと、運用を考える必要が出てきました。

最近のSourcetreeが遅すぎるのが一番の問題かもしれませんが、無料で使えるツールに文句を言っても仕方がないです。 普通に使う限りは、gitをGUIで使えて便利なので、重宝していますが別のツールを検討しないと仕事にならない状態です。

というわけで、世の中の運用を調べてみました。

package.jsonだけ管理

package.jsonにnpmでインストールする内容が記述されているため、これだけを管理するのが主流みたいです。

.gitignoreに「node_modules」ディレクトリを記述するみたいです。

環境によってインストールされるのが違う場合もあるみたいです。

確かにpackage.jsonだけの管理にできれば大量のファイルはバージョン管理に含めなくて良くなるため、かなりの改善にはつながるはずですね。

本当はpackage.jsonだけの管理にしたいけど、バージョンが変わって動作しなくなることを懸念しているため、舵をきれない状態です。 package.jsonにバージョンまで書けばいい。とのことだが、リポジトリが消えたりしたら、復旧できるのか心配でソースをすべてバージョン管理に含めたい衝動にかられます。

別のリポジトリとして、管理してしまったほうが安全かな。現実案な気がします

本番リリースはどうする

本番サーバーは複数台での運用のため、リリース方針にも影響が出そうです。

一応、rsyncでのデプロイしているため、npmを先に実行する必要ありそうです。

「npm update」でいいのかな。

空の状態からリリースになると時間かかりそうですね。

npm updateがどれくらい時間がかかるのか気になりますが、これが現実的かな。

困った時が変え時

遅すぎて仕事にならないため、管理方法から変えていきます。

package.jsonのみ管理するのはかなりしっくりきているため、早めに対処したいです。