

npm5.6.0でnode_moduleをインストールする際にデフォルトですとpackage.json内のライブラリのバージョンの先頭に^がつくと思います。^の意味は分かるのですがpackage-
lock.jsonを開発者で共有した場合は^の意味はなくなるのでしょうか？またlockファイルを共有せずpackage.jsonから^の記述を削除した場合と違いはあるのでしょうか？

例

[code]

    "clean-css": "^4.1.9",
    
[/code]


CC BY-SA 4.0
2018-02-07T10:01:45.077
41539
2019-09-07T16:50:43.757
2019-09-07T16:50:43.757
32986
15083
question
npm
npmでのnode_moduleの管理方法について


package-lock.json ということで、アプリを開発しているのだと理解しました。

package.json に記述するのは、「利用するライブラリのバージョンに関する制約」です。 package-lock.json
には、「package.json の制約に基づいて実際にインストールしたライブラリのバージョン」が記述されています。

アプリを開発していると、その最初のライブラリインストールのときに比べて、より新しいライブラリがリリースされることがあると思います。なので、そういった場合には
`npm update` を実行して、利用ライブラリをアップデートすることになります。
<https://docs.npmjs.com/cli/update.html>

さて、基本的に、アプリにおいては最新のライブラリを使った方がベターだと考えられますが、しかし新しすぎると、 breaking change
にかち合って、アプリが壊れてしまうかもしれません。

なので、 package.json
には、基本的に「最低限このバージョン以上で、しかしメジャーバージョンアップはまたがないで、何かいい感じにインストールしておきたい」といったような制約を与えることになります。
`^` は具体的にそれを実現する制約記述です。

これによって、上記 `npm update` 時に、「何かいい感じに利用ライブラリを更新して、それでもって package-lock.json
を更新する」ができるようになります。


CC BY-SA 4.0
2019-09-07T16:30:48.363
57921
2019-09-07T16:30:48.363
754
41539
answer