npm installでのmodulesのバージョン指定でのハマり
npm install
コマンドを叩いて package.json
で管理されている modules
達をインストールします。
typescript
を使っているのですが、バージョン2.4~
に上げてしまうとrxjs
との互換性がまだできていなくエラーになってしまいます。
ローカル環境での typescript
は 2.3.4
で使っているのですが、CircleCi上で npm install
された時に 2.4.1
になってしまっていてエラーがどしゃーっと出てしまっていました。
ずっとなんでだろうと思っていたのですが、package.json
でのバージョン固定をしていなかったのが原因でした。
typescript : ^2.3.4
となっていました。
^2.3.4
の 前に付いている ^
。キャレット表記というらしいです。
一番左側にある、ゼロでないバージョニングは変えない (それ以下があがることは許容)
例えば
^1.2.3 = 1.2.3 <= version < 2.0.0 ^0.2.3 = 0.2.3 <= version < 0.3.0 ^0.0.3 = 0.0.3 <= version < 0.0.4
となってしまうので、 2.4.1
にバージョンが上がってしまっていたのでした。
対応としては ^
を外してしまうか shrinkwrap
を使って、npm-shrinkwrap.json
で記述されるバージョンで管理する方法があるみたいです。
補足
npm-shrinkwrap
はnpm@5
になってから package-lock.json
が生成されるようになり、不要となります。