package-lock.jsonについて知りたくても聞けなかったこと - Qiita
簡単にまとめると・・・
package.jsonだけでは、node_modulesを完璧に再現できるとは限らない(勝手に違うバージョンのライブラリがインストールされてしまう可能性)package-lock.jsonはバージョン情報をすべて正確に記録するpackage-lock.json に書き込まれたバージョンのパッケージがインストールされるもっと分かりやすい解説↓
package.jsonでキャレットやチルダで指定すると、インストールする時期によって違うバージョンになる可能性があります。 それを防ぐのがpackage-lock.jsonの役割です。 package-lock.jsonはnpm installを実行したときに自動生成され、特定のバージョンを指定します。 npm install時にpackage-lock.jsonが存在する場合はその内容をみて各ライブラリがインストールされます。 package-lock.jsonをバージョン管理することによりチーム全体で同じバージョンのライブラリがインストールされます。
下記より引用
package-lock.jsonってなに??|mamiya|note
package-lock.jsonの必要性がより分かる記事が下記