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