Open1

package.json・package.lock.json / npm install・npm ciについて

アモアモ

package.json

アプリケーションが依存するnpmモジュールを管理できる。

モジュールをインストールした時に、"maplibre": "^1.1.1"のように「^(キャレット)」がつくことがある。これはメジャーバージョン(バージョンの3桁のうち1番左の桁の数字)だけを固定する意味となる。そのため後にv1.2.1のようにメジャーバージョンにアップデートがあればそちらがインストールされてしまう。

では、それを回避するために「^(キャレット)」は使わないnpm install maplibre --save-exact などもあるが、それだと解決できない問題がある。
それは依存するモジュールが依存するモジュール(孫依存モジュール)までは管理できないこと。
孫依存モジュールのバージョンがアップデートされたりすることで、依存するモジュールでバグが起きる事がありそう?
そこで必要となるのがpackage.lock.jsonである。

package.lock.json

node_modulesに実際にインストールされたモジュールの情報が管理されている。
package.lock.jsonは最初にnpm installしたときの依存バージョンを記録してくれ、また孫依存モジュールのバージョンまで固定してくれるので、同じバージョンでインストールをすることができる。
なのでgithubにはpackage.lock.jsonをあげる必要があるし、このファイルは削除してはいけない。

npm install

package.jsonのモジュール依存関係を解決してをインストールする。
package.lock.jsonが書き換わることがある。

npm ci

package.lock.jsonを元にモジュールをインストールする。
package.lock.jsonの内容は変わらない。
CI実行時やgit clone直後の動作確認で使用する。