1. 問題
よく使うnpm package「notrealmodule 10.0.0」に新機能が追加されたので早速アップデートしたい。
でもアプリに不具合が起きるかもしれないので怖い。
package.jsonにどう書けばいいんだろ?そもそも10.0.0とは何?
2. 環境
npm packageを使用する環境すべて。
3. 解決
^をつけて、minor visionまでのみアップデートされるようにする。
"dependencies": {
"notrealmodule": "^10.0.0",
}
10.0.0はsemver方式と言って、順番にmajor、minor、patchを意味する。
4. 詳細
4.1 semverとは
Sementic versioningの略。
Javascriptエコシステムで推奨されているnpm package version 管理方式。
major:変更点が多い場合。APIの互換性を持たない変更。
minor:些細な機能追加。APIの互換性を保ちつつ機能性をAPIに追加した場合。
patch:バグ修正。APIに影響なし。
しかしすべてのnpm packageがsemverを守っているわけではない。
例:typescript
4.2 version範囲の指定方法
package.jsonにpackageのversion更新範囲を指定することができる。
version範囲の表記方法には代表的に以下のようなものがある。
version:正確に一致。
>verison:versionより大きい。
^version:patchとminorアップデート。
~version:patchアップデート。
5. 関連知識
npm packageを一括更新してみましょう(npm outdated、npm update)
6. まとめ
npm packageはsemverでversion管理をする。
package.jsonで^や~などでpackageのアップデート範囲の指定ができる。
7. 参考
About semantic versioning
Semantic Versioning 2.0.0
package.json
Downloading and installing Node.js and npm
About semantic versioning
node-semver
8. 感じたこと
昔は^と~の違いが分からなかったけど、今は一気にわかる。よかったね。