どっかのチラシの裏

技術的な記事を書いたり書かなかったりします。

package-lock.jsonをgitに含めて良いか

今まで、学習のためでデプロイはしないからと特に気にしてなかったことを調べる機会があったため、メモついでに。

疑問

タイトル通りReactやVue.jsなど、Node.jsを触れていると大抵は見るpackage-lock.jsonをgitの管理下に置き、githubなどにpushして良いのかという点。

結論

先に結論から。含めた方がいいとのこと。それどころか、含めないとバージョン関連のエラーや不具合を引き起こす可能性があります。

package-lock.jsonの役割は実際にインストールしたパッケージのバージョンを厳密に固定し記録しておくこと。これがなければ、仮に別環境にパッケージを改めてインストールする場合、想定とは違うバージョンがインストールされる恐れがあります。これはチーム開発の場合や、本番環境へのインストール時に不具合を引き起こす元になりますよね。

なぜGitに含めて良いか迷ったのか

もともとRubyを学習している際にGemfile.lockという同一の役割を持ったファイルがあったので、似たような役割だと理解はしていましたが、中の記述に"integrity"という暗号化?された記述があったためGitHub等で公開してはいけないのでは?と怪しんだ次第。 また、拙い英語力で調べたnpmのドキュメントでは、これは「公開されない」というような記述があったため、さらに調査するに至りました。

この「公開されない」というのはどうやら、npmパッケージとして公開されないといった意味らしく、npm-shrinkwrap.jsonというものが、代わりにnpmパッケージの中に含めて公開できるという意味らしいです。

「Gitなどのリポジトリ」で「公開してはいけない」ではなく、「npmリポジトリ」に「公開されない」という意味だったんですね。

参考

ginpen.com

zenn.dev

docs.npmjs.com

qiita.com

engineering.mobalab.net