こんにちは。

node.js の npm をモジュールインストール時に使います。
あまり使いこなしているということはないのですが
package.json については理解しています。

最近のバージョンでは、
package-lock.json
も付属するようになっているのですが、
この、package-lock.json の役割がわかりません。

バージョンを固定化する、みたいに書かれているページをいくつか見ましたが
モジュールのバージョンは、package.json にも書かれているので
package-lock.json がなくてもモジュールのバージョンは正しくインストールされるのではないでしょうか?

package-lock.json と package.json との違い、
package-lock.json がなぜ必要だったのか、なくて困る場面
などを、教えて欲しいです。

あるいは分かりやすい解説などがありましたらリンクを教えてください。

よろしくお願いします。