0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

npmのパッケージバージョンを固定する運用に切り替えた話

Last updated at Posted at 2025-05-22

npmのパッケージバージョンを固定する運用に切り替えた話

はじめに

npmの依存パッケージ管理について、これまで「package-lock.jsonを管理していれば十分」と考えていました。しかし、チーム開発や自動アップデートツール(dependabot等)の導入が進む中で、バージョンの不一致や意図しないアップデートによるトラブルが増えてきました。

そこで、パッケージのバージョンを完全に固定する運用へ切り替えたので、その背景と手順をまとめます。


背景・課題

  • package-lock.jsonのコンフリクトが頻発し、解消のたびにバージョンがずれることがあった
  • ^~でバージョン指定していると、lockファイルを消して再インストールした際に、意図しない新しいバージョンが入ることがあった
  • 結果として、「意図せず挙動が変わった」「最新バージョンのバグを踏んでしまう」といった問題が起きやすくなった

バージョン固定の方針

  • すべての依存パッケージを「完全一致」で管理する
  • package.jsonのバージョン表記も信頼できる状態にする
  • lockファイルを消しても、同じバージョンで再現できるようにする

実際の手順

1. 依存パッケージを最新化

npm update --save

これで、現状のバージョン範囲内で最新のものに揃えます。
--save をつけることで、package.jsonのバージョンが更新されます。
変わらないものは手動でpackage.jsonを修正しました。

2. lockファイルとnode_modulesを削除

rm -rf package-lock.json node_modules
npm cache clear --force

一度クリーンな状態にします。

3. .npmrcで「バージョン固定」設定

touch .npmrc

.npmrcに以下を記述します。

save-exact=true

これにより、npm install時にバージョンが完全一致で記録されるようになります。

4. パッケージを再インストール

npm i

これでpackage.jsonのバージョン指定がすべて「完全一致」になり、以降のインストールもブレなくなります。


注意点・補足

  • 既存の^~が残っている場合は、手動で修正が必要です
  • lockファイルを消す場合は、必ずバージョン指定を見直してください

参考リンク


まとめ

パッケージのバージョンを固定することで、

  • チーム全体で同じ環境を再現しやすくなる
  • 意図しないアップデートによるトラブルを防げる
    といったメリットがありました。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?