Releaserun/releaserun-cli
GitHub: Releaserun/releaserun-cli
一个轻量级CLI工具,扫描项目依赖文件检测技术栈的EOL状态、CVE风险并给出A-F健康评级,支持CI集成和README徽章生成。
Stars: 1 | Forks: 0
# releaserun
[](https://badge.fury.io/js/releaserun)
[](https://opensource.org/licenses/MIT)
[](https://releaserun.com/nodejs/22/)
[](https://releaserun.com/typescript/5.3/)
扫描你的项目,查找生命周期结束 (EOL) 的依赖、已知 CVE 和版本健康问题。在几秒钟内为你的整个技术栈获得 A-F 评级。
**版本感知**:徽章和评级固定在你的项目实际使用的版本上,而不是通用的“最新版本”数据。
```
npx releaserun check
```
## 它的功能
将其指向任何项目目录。它会读取你的依赖文件,找出你正在运行的内容,并告诉你哪些是健康的,哪些即将 EOL,以及哪些存在已知 CVE。
```
releaserun v1.4.0 — Stack Health Check
┌─────────────┬─────────┬────────┬──────┬───────┐
│ Technology │ Version │ EOL │ CVEs │ Grade │
├─────────────┼─────────┼────────┼──────┼───────┤
│ Node.js │ 22 │ Apr 27 │ 0 │ A │
│ React │ 19 │ -- │ 0 │ B │
│ TypeScript │ 5.7 │ -- │ 0 │ A │
│ PostgreSQL │ 16 │ Nov 28 │ 0 │ A │
│ Redis │ 7.4 │ -- │ 0 │ A │
└─────────────┴─────────┴────────┴──────┴───────┘
Overall Grade: A
```
版本来自你的实际文件。`.nvmrc` 中的 Node.js 22,`docker-compose.yml` 中的 PostgreSQL 16,`package.json` 中的 React 19。绝非猜测。
## 安装
```
# 不安装直接运行
npx releaserun check
# 或者全局安装
npm install -g releaserun
```
需要 Node.js 18+。
## 命令
### `releaserun check`
扫描并评估你的技术栈。
```
releaserun check # scan current directory
releaserun check --path ./my-app # scan a specific path
releaserun check --json # JSON output for scripting
releaserun check --fail-on D # exit non-zero if anything grades D or worse
releaserun check --verbose # show what's being scanned and fetched
```
### `releaserun badges`
为你的 README 生成特定版本的徽章 Markdown。
```
releaserun badges # health badges (default)
releaserun badges --type eol # EOL status badges
releaserun badges --type cve # CVE count badges
releaserun badges --style flat-square # flat-square style
```
输出(已复制到剪贴板):
```
[](https://releaserun.com/nodejs/22/)
[](https://releaserun.com/python/3.12/)
[](https://releaserun.com/postgresql/16/)
```
徽章固定在你的项目中检测到的版本。`PostgreSQL 16` 来自你的 `docker-compose.yml`,而不是 `pg` npm 包的版本。
### `releaserun readme`
通过自动更新标记将徽章直接注入到你的 README 中。
```
releaserun readme # preview what would be injected
releaserun readme --write # write badges into README.md
releaserun readme --readme DOCS.md # target a different file
```
徽章位于 `` 和 `` 标记之间。再次运行它会用新的徽章替换旧的。还没有标记?它会在第一个标题后插入它们。
### `releaserun ci`
CI 优化的输出。无颜色,无表格格式。
```
releaserun ci --json --fail-on D
```
## 扫描内容
| 文件 | 检测内容 |
|------|-----------------|
| `package.json` | Node.js (来自 `engines`), React, Vue, Angular, TypeScript, webpack 等 |
| `pyproject.toml` | Python (来自 `requires-python`), Django, Flask, 数据库客户端 |
| `requirements.txt` / `Pipfile` | Python 包, 框架检测 |
| `go.mod` | Go 版本 (来自指令), 数据库客户端检测 |
| `Gemfile` | Ruby 版本, Rails |
| `Cargo.toml` | Rust (来自 `rust-version` 或 edition), crate 检测 |
| `pom.xml` | Java 版本, Spring Boot |
| `composer.json` | PHP 版本, Laravel, Symfony |
| `Dockerfile` | 基础镜像 (node:22, python:3.12, postgres:16 等) |
| `docker-compose.yml` | 服务镜像 (postgres:16, redis:7.4 等) |
| `.nvmrc` / `.node-version` | Node.js 版本 |
| `.python-version` | Python 版本 |
| `.ruby-version` / `.go-version` | Ruby/Go 版本 |
| `.tool-versions` | asdf 管理的运行时 |
**版本准确性很重要。** 客户端库版本绝不会与服务器版本混淆。`package.json` 中的 `pg:8.13` 检测到“正在使用 PostgreSQL”,但不会声称它是 PostgreSQL 8.13。实际版本来自你定义 `postgres:16` 的 Dockerfile 或 docker-compose.yml。
## 版本检测原理
按优先级顺序检查来源:
1. **版本文件** (`.nvmrc`, `.python-version`) - 你本地实际运行的内容
2. **锁定/配置文件** (`package.json engines`, `pyproject.toml requires-python`, `go.mod go 指令`, `Cargo.toml rust-version`)
3. **依赖列表** - 直接匹配的包 (react 19 = React 19) vs 指示符 (express 4.18 = “正在使用 Node.js,版本未知”)
4. **Dockerfile** - 基础镜像标签 (`FROM python:3.12-slim`)
5. **docker-compose.yml** - 服务镜像 (`image: postgres:16`)
后续来源会填补空白。如果 `package.json` 中的 `pg` 检测到 PostgreSQL(版本未知),而 docker-compose.yml 中有 `postgres:16`,则最终结果为 PostgreSQL 16。
## 评级
| 评级 | 含义 |
|-------|---------|
| **A** | 完全支持,无 CVE,还有很长的支持周期 |
| **B** | 受支持,将在 6-12 个月内 EOL |
| **C** | 即将 EOL(<6 个月)或存在轻微 CVE |
| **D** | EOL 迫在眉睫(<3 个月)或存在中等 CVE |
| **F** | 已过 EOL 或存在严重 CVE |
| **?** | 版本未知,无法确定健康状况 |
版本未知的技术会得到 `?`,而不是虚假的评级。我们宁愿诚实也不愿误导。
## CI 集成
```
# GitHub Actions
- name: Check stack health
run: npx releaserun check --fail-on D
# 或者使用具有 PR 评论和 badge 自动更新功能的 dedicated action
- uses: Releaserun/releaserun-action@v2
with:
path: '.'
comment: 'true'
update-readme: 'true'
```
退出代码:`0` = 一切正常,`1` = 某些项评级为 C/D,`2` = 某些项评级为 F。
## 所有选项
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `--path ` | 要扫描的目录 | `.` |
| `--json` | JSON 输出 | `false` |
| `--fail-on ` | 在此评级或以下时非零退出 | `F` |
| `--style ` | 徽章样式:`flat` 或 `flat-square` | `flat` |
| `--type ` | 徽章类型:`health`, `eol`, `v`, `cve` | `health` |
| `--write` | 将徽章写入 README (readme 命令) | `false` |
| `--readme ` | readme 命令的目标文件 | `README.md` |
| `--no-color` | 禁用终端颜色 | `false` |
| `--no-cache` | 跳过本地响应缓存 | `false` |
| `--verbose` | 显示扫描详情 | `false` |
## 隐私
不会上传任何依赖文件。唯一的网络调用是通过公共 API 检查版本状态([endoflife.date](https://endoflife.date),[ReleaseRun badge API](https://releaserun.github.io/badges))。响应在本地缓存 1 小时。
## 链接
- [ReleaseRun](https://releaserun.com) - 300 多种技术的发布生命周期跟踪
- [Badge API 文档](https://releaserun.github.io/badges) - 完整的徽章参考
- [GitHub Action](https://github.com/Releaserun/releaserun-action) - 带有 PR 评论和健康徽章的 CI 集成([Marketplace](https://github.com/marketplace/actions/releaserun-stack-health-check))
- [免费开发者工具](https://releaserun.com/tools/) - 57 种免费开发者工具:K8s 安全检查器、GitHub Actions 审计工具、npm 健康检查器、漏洞扫描器等(无需注册)
## 许可证
MIT
标签:CVE, DevSecOps, EOL检测, GNU通用公共许可证, IPv6支持, MITM代理, Node.js, npm, npx, TypeScript, 上游代理, 云安全监控, 代码健康度, 依赖扫描, 威胁情报, 安全可观测性, 安全插件, 开发者工具, 开源合规, 数字签名, 文档安全, 文档结构分析, 暗色界面, 模型提供商, 版本扫描, 版本控制, 生命周期管理, 自动化攻击, 自动化检查, 软件供应链安全, 远程方法调用, 静态分析