package.jsonのtilde(~)とcaret(^)の違いは何ですか?
最新の安定版の node
と npm
にアップグレードした後、npm install moment -save
を試してみました。これは、package.json
の中のエントリを、キャレット ^
のプレフィックスで保存します。以前はチルド ~
のプレフィックスでした。
1.なぜnpm
でこのような変更がなされたのですか?
2.チルダ ~
とキャレット ^
の違いは何ですか?
3.3. 他と比べて何が優れていますか?
3102
3
NPM docs](https://docs.npmjs.com/files/package.json)をご覧ください。
~
はメジャー番号とマイナー番号を修正します。これは、依存関係にあるバグフィックスを受け入れる準備ができているが、互換性のない変更をしたくない場合に使用します。^
はメジャー番号のみを修正します。依存関係を注意深く観察していて、マイナーリリースで互換性がなくなった場合にすぐにコードを変更する準備ができている場合に使用します。なお、
^
は古いnpmのバージョンではnot supportedとなっており、注意して使用する必要があります。というわけで、
^
は良いデフォルトですが、完璧ではありません。自分にとって最も便利なsemver演算子を慎重に選んで設定することをお勧めします。~
: 適度に 閉じる ことができます。