パッケージを最新の状態に保つための優れたNode.jsワークフロー?


8

私は最近、Node.jsでプロジェクトの開発を始めました。もちろん、現在使用しているパッケージは、新しく開始して最新バージョンを使用しているため、かなり最新の状態ですが、ほとんどのNode.jsパッケージのバージョン回転率がかなり高く、多くの場合、特定の機能は非推奨または削除されました。もちろん、セキュリティの脆弱性は修正されます。

ほとんどのパッケージはセマンティックバージョニング構文を使用して指定されている^1.2.3ため(変更を壊さないように、特定のメジャーバージョン番号を使用)、現在のメジャーバージョン以外の重要な更新は失われます。

依存関係を合理的に最新の状態に保つための賢明な方法は何ですか?たとえば、依存関係の更新を毎週ワークフローにチェックして、遅れをとらないようにする必要がありますか?そして、この理由から、必然的に新しいメジャーバージョンに更新する場合は、依存関係を最小限にして、重大な変更に対処する手間を最小限に抑えることをお勧めしますか?


1.パッケージの更新を認識します。2。更新で行われた変更を評価します。3。変更が有用であり、プロジェクトに関連しているかどうかを判断します。ある場合は、4。パッケージを新しいバージョンにアップグレードします。
Robert Harvey

@ロバートハーベイ。私の単純なノードプロジェクトでは、約10個の主要なパッケージを直接使用し、場合によっては100個の間接的に使用します。あなたのアプローチはスケーリングしません。これは、より簡単で自動化された方法があるかどうかを確認するのに適した質問です。
user949300

1
@ Jez、npm-check-updatesまたはnpm outdatedコマンドを見ましたか?私自身も使ったことはありませんが、最初のように見えます。
user949300

GitHubを使用している場合は、新しいバージョンの依存関係に対してテストを実行するGreenkeeperのようなものを試すことをお勧めします。
Whymarrh

回答:


6

これは、月次リリースのプロジェクトで現在使用しているワークフローです。

  • リリース後、依存関係を確認し、わずかな変更とパッチの更新のみがある依存関係を更新します。npmはセマンティックバージョニングに従っているため、パッケージの作成者が問題なく機能した場合でも、システムが壊れることはありません。
  • スモークテストを実行し、依存関係が壊れている場合は、開発用のタスクを作成してその依存関係を更新します。それはチケットかもしれないし、それはあなたのスプリントのためのタスクかもしれない、など。最初の試みからのフィードバックは役に立ちます。
  • 大きな変更がある依存関係を更新するタスクをスケジュールします。
  • 依存関係を最新バージョンに固定します。

目的は、自動更新をまったく行わないことです。彼らはあなたが予期しない方法であなたのシステムを壊すかもしれません、そしてあなたが他の変更をしているときに非常にありそうです、それは問題が何であるかを理解する助けにはなりません。

依存関係の更新は意識的なプロセスである必要があり、依存関係のいずれかがシステムを壊した場合は、どちらに注意する必要があります。

壊れて気付かれないマイナーアップデートは、開発またはテストのスプリントに含まれる可能性があります。これは、リリース後に実行するためです。稼働する前に、問題を検出して対応するためにできるだけ多くの時間をかけたいからです。

このプロセスは.NET + Nuget依存関係プロジェクトで実際に使用していますが、Nodeおよびnpm / bower、Rails +バンドルなどにほとんど適用されます。

最後に、依存関係をフリーズ/フリーズ解除するのに役立つ素敵なコマンドを利用でき、リポジトリに追加することもできます。を参照してくださいnpm shrinkwrap


0

私は別の方法を使用して別のソリューションを使用していますhttps://uptodatenpm.comこれは、プロジェクトの依存関係の新しいバージョンの情報を週刊ニュースレターで送信するため、更新するdepを決定できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.