package.jsonのtilde(~)とcaret(^)の違いは何ですか?

最新の安定版の nodenpm にアップグレードした後、npm install moment -save を試してみました。これは、package.jsonの中のエントリを、キャレット ^ のプレフィックスで保存します。以前はチルド ~ のプレフィックスでした。

1.なぜnpmでこのような変更がなされたのですか? 2.チルダ ~ とキャレット ^ の違いは何ですか? 3.3. 他と比べて何が優れていますか?

ソリューション

NPM docs](https://docs.npmjs.com/files/package.json)をご覧ください

~version 「バージョンとほぼ同等」 semverを参照してください。~1.2.3は1.2.3から ^version 次のメジャーバージョンに更新されます。 semverを参照してください。^2.3.4 は 3.0.0 までのリリースを使用します。 以下のコメントを参照してください。

解説 (20)

~ はメジャー番号とマイナー番号を修正します。これは、依存関係にあるバグフィックスを受け入れる準備ができているが、互換性のない変更をしたくない場合に使用します。

^ はメジャー番号のみを修正します。依存関係を注意深く観察していて、マイナーリリースで互換性がなくなった場合にすぐにコードを変更する準備ができている場合に使用します。

なお、^は古いnpmのバージョンではnot supportedとなっており、注意して使用する必要があります。

というわけで、^は良いデフォルトですが、完璧ではありません。自分にとって最も便利なsemver演算子を慎重に選んで設定することをお勧めします。

解説 (4)

~ : 適度に 閉じる ことができます。


   ~1.1.5: 1.1.0 
解説 (2)