You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求可集成GitHub Actions的npm包合规检查工具

推荐工具与GitHub Actions集成方案

以下是几个能满足你需求的工具,无需大量自定义脚本即可实现npm包的更新时间、许可证合规性检查,且支持集成GitHub Actions:

licensed

  • 核心能力:原生支持许可证合规性检查,可通过自定义钩子扩展实现包更新时间的校验(比如判断最后发布时间是否在6个月内)
  • GitHub Actions集成:官方提供了配套Action,只需在工作流中引入并配置.licensed.yml文件,即可在CI流程中自动运行检查
  • 配置要点:在配置文件中指定允许的许可证类型(如MIT),同时利用其pre-audit钩子编写简单逻辑检查包的更新时间

Snyk

  • 核心能力:一站式依赖管理工具,既能检测许可证是否符合要求,也能设置策略标记超过指定时长未更新的包(比如6个月)
  • GitHub Actions集成:官方Action可直接集成到工作流中,不符合规则的依赖会触发告警,甚至可配置为阻止合入
  • 优势:无需编写脚本,通过平台策略面板即可可视化配置更新时间阈值和许可证白名单

社区版Dependency Check Action

  • 核心能力:部分社区维护的GitHub Action支持直接在配置参数中定义许可证白名单和更新时间阈值,开箱即用
  • 示例工作流配置:
name: Dependency Compliance Check
on: [push, pull_request]
jobs:
  validate-deps:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Validate dependencies
        uses: community/dependency-check-action@v1.2.0
        with:
          allowed-licenses: MIT, Apache-2.0
          max-inactive-months: 6

备选方案(轻量自定义)

如果上述工具无法完全匹配需求,可以结合npm view命令编写极简脚本并嵌入GitHub Actions,比从头开发更高效:

# 示例:检查单个包的最后更新时间是否在6个月内
PACKAGE_NAME="lodash"
LAST_MODIFIED=$(npm view $PACKAGE_NAME time.modified)
# 将时间转换为时间戳并与6个月前的时间对比
SIX_MONTHS_AGO=$(date -d "-6 months" +%s)
PACKAGE_TIMESTAMP=$(date -d "$LAST_MODIFIED" +%s)
if [ $PACKAGE_TIMESTAMP -lt $SIX_MONTHS_AGO ]; then
  echo "Error: $PACKAGE_NAME hasn't been updated in over 6 months"
  exit 1
fi

内容的提问来源于stack exchange,提问作者Philip Kazmeier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:50:17