質問: "jquery": "^3.3.1" 例えばですが、このようにキャレットを用いてバージョンを記述するということについて、皆さんの意見をおうかがいしたいです。 このような書き方はひょっとして危険なのでしょうか。 というのも、例えば yarn upgrade した時に、jqeuryのバージョンが3.3.1から3.4.1に引き上げられたことによって、アプリケーションでバグが起きたとします。 gitではnode_modulesはignoreしてます。 となると、何が原因でバグが起きたのか分からない...。 っていうことになりませんか。 でもそれは、 yarn lock を見れば良いのかな...。 少し面倒ですが、キャレットは用いずにバージョンは記述して、バージョンを上げてみたいときは、 yarn add jquery@3.4.1 とかで明示的に上げていく方が、状況の管理はしやすいのかなとか思いました。 よろしければ、皆さんの意見をお聞かせください。
回答: Node.jsの場合、下手にバージョンを固定すると、別な問題を招きます。 `node_modules`には**同じライブラリの違うバージョンを複数入れられる**という特性があるため、たとえば`"jquery": "3.3.1"`と固定した状態でjQueryに依存する別なライブラリを入れると、そちらの方でjQuery 3.4が追加で入ってしまう、というような事態となることがあります。 特定の演算を行う関数のライブラリであれば、複数あっても容量を食うだけで大した問題にはならないのですが、「ブラウザDOMと絡む」ライブラリや、「ルーティングなどのように、インスタンスが1つでないと困る」ライブラリが複数インストールされてしまうと、正常に動作しないということも考えられます。