質問: 質問1 --- `devDependencies`としてインストールしたnpmライブラリであれば、気軽にアップデートしても大丈夫でしょうか? `devDependencies`としてインストールしているライブラリAが依存しているライブラリBに、`dependencies`としてインストールしているライブラリCも依存しているとした場合、ライブラリAをアップデートすることで、ライブラリーBもアップデートされ、それによって、ライブラリCとライブラリBの互換性が合わなくなり、ライブラリCが動かなくなるのような理解であっていますでしょうか? そんなことはなく、その辺りは、npmがうまいこと、依存関係を解決してくれるのでしょうか?_ 質問2 --- npmの依存ライブラリーを安全に更新する為には、何を前提として理解している必要があったり、何に気をつけたり、何をすれば良いのでしょうか? 現状、自分の中では、「依存ライブラリーを迂闊にアップデートするのは怖い」といった感じで、何を理解しなければいけないかがわかっていない状態です。。。 質問3 --- どのくらいの頻度で依存しているライブラリーはアップデートするのが良いのでしょうか? 質問4 --- 「うちの開発現場では、このような頻度で、このような仕組みや体制でライブラリーのアアップデートを行なっているよ!」のような、情報提供がもし可能であれば、合わせてお願いしたいですm(_ _)m
回答: こんにちは、murabitoさん ご質問、拝見しました。 自分の見解になりますが、順にお答えしたいと思います。 質問1 利用されているnpmが`devDependencies`確実に、開発環境のみで利用されているライブラリであると認識できている場合は、一旦アップデートしてみる。という方針でよいと思います。 ソースコードで直接利用されないのであれば、開発段階で不具合に気づくと思うためです。 入れ子の`dependencies`については、確実な知識を持ち合わせておらず、お答えが難しいです。申し訳ありません。 質問2 丁寧にやる場合は、ひとつひとつ以下の作業をする必要があると思います。 * アップデートが必要なライブラリのRelease Noteを見に行く * Release Noteがない場合は、現在利用しているnpmとアップデート後のnpmのdiffを見比べる で、行う必要があると思います。 きちんとやるには、本当に大量にあるので、なかなか気の遠くなる作業ですよね。。。 個人的には、FrontendもDepOpsみたいな役割が必要な時期が来ている気がします。 質問3 本来であれば、最新を常に追従するのが、最もよろしいと思います。 GitHubを利用されているようであれば、Dependabotが無料で利用できるようになりましたので、利用されているリポジトリに設定すれば、PRを自動的に作ってくれますので、それをもとに追従するなどの方法があると思います。 質問4 自分が経験したパターンだと、 * ご質問でもあったように「セキュリティアラート」がきっかけのアップデート * 利用したい機能が実装されたバージョンへのアップデート * 上記にも繋がりますが、メジャーバージョンアップされたタイミングでのアップデート 質問3で回答したようなタイミングで追い続けると、全然コードが書けなくなるので、現実的ではないのかなというのが、正直なところです。(DependabotがPR作ってくれるので、diffを確認するなどはやりやすいとは思います。) 以上、私見になりますが、参考になれば幸いです。