我构建了 PkgWatch 来预测 npm 包被抛弃,以免它破坏你的构建

发布: (2026年1月20日 GMT+8 01:35)
3 min read
原文: Dev.to

Source: Dev.to

Colors 和 faker 在 2022 年 1 月一夜之间导致数千个构建失败。
Event‑stream 被加密窃取恶意软件入侵。
臭名昭著的 left‑pad 事件导致 React 和 Babel 崩溃。

这些并非传统的安全漏洞,而是 维护者问题npm audit 等工具无法捕获。

我负责多个生产应用的依赖管理,已厌倦以下突如其来的情况:

  • 包突然停止维护
  • 单维护者项目,所有关键由一人掌控
  • 细微的被抛弃迹象,只有事后才显现

介绍 PkgWatch

PkgWatch 是一个依赖健康情报平台,能够在问题发生前进行预测。它通过多种信号分析包,并为每个包分配健康得分(0‑100)和风险等级(LOW、MEDIUM、HIGH、CRITICAL)。

分析的信号

组件衡量指标
维护者健康提交的近期性,真实的公交因子(不仅仅是贡献者数量)
演进发布频率,提交活动模式
安全OpenSSF 评分卡,漏洞历史
社区贡献者多样性,问题响应时间
采用度下载量,依赖者,星标数

健康评分

每个包将获得:

  • 健康得分:0‑100
  • 风险等级:LOW、MEDIUM、HIGH、CRITICAL

安装

npm install -g @pkgwatch/cli

基本用法

检查单个包

pkgwatch check lodash

示例输出

lodash (npm)
  Health Score: 72/100
  Risk Level: MEDIUM

  Maintainer Health: 65 (1 active maintainer in last 90 days)
  Evolution: 58 (Last release: 8 months ago)
  Security: 85 (OpenSSF: 6.2/10)
  Community: 78 (142 contributors)

扫描 package.json 中的所有依赖

pkgwatch scan

在高风险包上使 CI 失败

pkgwatch scan --fail-on HIGH

GitHub Action 示例

- uses: Dlaranjo/pkgwatch/action@v1
  with:
    api-key: ${{ secrets.PKGWATCH_API_KEY }}
    fail-on: HIGH

实时演示与定价

  • 实时演示 – 无需注册即可尝试(每小时 20 次请求)
  • 免费层 – 每月 5,000 次请求,无需信用卡
  • 文档 – 完整的 API 参考

路线图

  • 支持更多注册表(已支持 PyPI;Cargo/Go 即将支持)
  • 历史趋势分析
  • Slack/Discord 健康变化通知

反馈

欢迎分享您的想法!您希望追踪哪些信号?

链接

  • 网站
  • GitHub
  • npm
Back to Blog

相关文章

阅读更多 »

依赖过山车:驾驭 NPM 主题公园

“啊哈!”的瞬间,一切由此开始 我在实现一个新功能,感觉自己像个代码巫师 🧙‍♂️。我提交了 PR,随后我的 TL 留下了一条评论……

介绍 graphql-complexity-validation

✨ 特性 - 零运行时依赖 - 完全类型化的 TypeScript - 支持 fragments 与 inline fragments - 默认忽略 Introspection 适用于: - Apollo…