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. 感じたこと
昔は^
と~
の違いが分からなかったけど、今は一気にわかる。よかったね。