日々精進

新しく学んだことを書き留めていきます

npm installは新しいパッケージをインストールする時以外は使わない方が良い

npm installを実行すると、package-locl.jsonが更新されることがある。 そのため、パッケージのバージョンが知らない間に変わっていて画面が崩れるという不具合が起きてしまった。 普段はnpm ciでパッケージをインストールし、パッケージのバージョンアップや新しいパッケージをインストールする時だけnpm installを使った方が良さそう。

ちなみに、package.jsonの中で"axios": "0.18.0"のようにバージョンを固定していても package-lock.jsonの中では依存パッケージの依存パッケージのバージョンは"^1.0.0"のようになっている。例は以下。

    "axios": {
      "version": "0.18.0",
      "resolved": "http://10.51.67.86:8081/repository/npm-proxy/axios/-/axios-0.18.0.tgz",
      "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
      "requires": {
        "follow-redirects": "^1.3.0",
        "is-buffer": "^1.1.5"
      }
    },

だけど、このfollow-redirects等のパッケージのバージョンがnpm installの度に変わるかというとそうではなく、以下のように別の箇所に実際にインストールする バージョンが指定されている。

    "follow-redirects": {
      "version": "1.7.0",
      "resolved": "http://10.51.67.86:8081/repository/npm-proxy/follow-redirects/-/follow-redirects-1.7.0.tgz",
      "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
      "requires": {
        "debug": "^3.2.6"
      }
    },

このようになっている理由は以下で説明されている。

github.com

参考: qiita.com

docs.npmjs.com