Open1

package.jsonのversionの書き方

TkmyztTkmyzt

package.jsonとpackage-lock.jsonの役割
package-lock.jsonはGitHubへコミットするケースが多い、なぜか?
package.jsonとpackage-lock.jsonがあるリポジトリなどをクローンしてnpm installするとpackage-lock.jsonを利用してnpm installされパッケージがinstallされる。package.jsonではアバウトなバージョニングを記述している場合も多く詳細に動作するバージョンをインストールしてもらいたい場合に有効になるためコミットされている。

package.json, package-lock.jsonのあるリポジトリをクローンして、package.json側のバージョンを書き換えてみるとpackage-lock.jsonを参照するとはいうものの、package.jsonに従ったバージョンがinstallされ、package-lock.jsonのversionが書き換えられる。ということが起こったのでpackage-lock.jsonがある場合にpackage.jsonが参照されていないわけではなさそうだ。

バージョンの表記
セマンティックバージョニング

記法が非常にややこしい。
どちらも目的は後方互換性のないメジャーバージョンを変更させない上でのバージョン設定だ

^1.2.3(キャレット) : 0ではない一番左の数字を固定し、それ以降のバージョン変更を許可するなので、1を固定し、マイナーとパッチは変えていい。つまり2.0.0未満までok
~1.2.3(チルダ) : マイナーが書いてある場合はマイナーを固定し、パッチは自由。なので1.3.0未満になりキャレットよりさらに慎重。