c8 vs nyc: CIにはどちらのNodeカバレッジツールか
c8は計装なしでネイティブなV8カバレッジを読み取り、nyc(istanbul)は精密で設定可能なレポートのためにコードを計装します。
c8はNode組み込みのV8カバレッジを使い、ソースを計装せずにレポートするため高速でESMに優しいです。nycはコードを計装して詳細で高度に設定可能なカバレッジを得るistanbulのCLIで、長年のNode標準です。
| c8 | nyc | |
|---|---|---|
| 方式 | ネイティブなV8カバレッジ | istanbulの計装 |
| 速度 | 高速(計装なし) | より遅い |
| ESMサポート | シームレス | 動作する(設定) |
| 精度/設定 | 良好、ノブは少なめ | 非常に精密、設定可能 |
| 成熟度 | モダン | 確立された標準 |
CIでは
c8はより速く摩擦の少ない選択です。build時の計装なしにV8自身のカバレッジデータを読み取り、ESMをシームレスに扱うため、カバレッジ時間を削減します。nycはソースを計装して非常に精密で設定可能な行/ブランチのレポートを得て、多くのセットアップと統合します。速度とESMが重要ならc8、きめ細かいistanbulのレポートと設定が必要ならnycです。
CIでのカバレッジ
リグレッションをgateするためにカバレッジのthresholdを設定し、レポートをカバレッジサービスにアップロードします。どちらもテストに加えて作業を追加します。高速なmanaged runnerはツールに関わらずカバレッジの重い実行を短縮します。
結論
最小限の設定で高速かつESMに優しいカバレッジが欲しいなら: c8。精密で高度に設定可能なistanbulのレポートが必要なら: nyc。モダンなESMプロジェクトではc8がしばしばよりシンプルな勝ちで、nycは詳細なレポートで依然として強力です。
関連ガイド
Vitest vs Jest Coverage: Which Reports Faster in CI?Vitest vs Jest coverage for CI: v8 vs istanbul providers, speed, accuracy, and reporting. Which test runner p…
Adding Codecov to GitHub ActionsUpload code coverage to Codecov from a GitHub Actions workflow: generate an lcov/Cobertura report, add the co…
Adding Coveralls to GitHub ActionsSend coverage to Coveralls from GitHub Actions using the coverallsapp action, including parallel jobs and the…