一个功能全面的项目许可证管理 CLI 工具,支持多语言生态(Rust/Cargo、Node.js/npm、Go、Python/pip)。
| 功能 | 命令 | 说明 |
|---|---|---|
| 🔍 许可证检测 | detect |
扫描项目,识别所有依赖的许可证 |
| 📝 许可证生成 | generate |
生成 LICENSE 文件(MIT、Apache-2.0、GPL 等) |
| ⚖️ 兼容性检查 | check |
检查依赖间许可证兼容性 |
| 📊 报告导出 | report |
生成报告(Markdown/JSON/CSV/HTML) |
| 🔧 自动修复 | fix |
自动修复缺少 LICENSE 文件等问题 |
| 🌳 依赖树 | tree |
树形展示依赖及其许可证 |
| 📁 批量扫描 | scan |
递归扫描多个子项目 |
| 📋 SBOM 生成 | sbom |
生成 SPDX/CycloneDX 格式软件物料清单 |
| 🔎 变更审计 | audit |
检测许可证变更(对比快照) |
| 🌐 Web UI | web |
启动本地 Web 界面查看报告 |
| ⚙️ 配置管理 | config |
管理 .slicense.toml 配置文件 |
| 🖥️ TUI 界面 | tui |
交互式终端界面(依赖列表/分布图/兼容性) |
| 👁️ 文件监控 | watch |
监听文件变更,自动重新检查 |
| 🪝 Git Hooks | hooks |
安装 pre-commit hook,阻止不兼容提交 |
slicense 会自动检测项目类型,无需手动指定:
| 生态 | 标识文件 | 解析内容 |
|---|---|---|
| Cargo (Rust) | Cargo.toml / Cargo.lock |
包信息、依赖列表 |
| npm (Node.js) | package.json / package-lock.json |
v1/v2/v3 格式、scoped 包 |
| Go | go.mod / go.sum |
模块信息、直接/间接依赖 |
| pip (Python) | requirements.txt / pyproject.toml |
extras、环境标记、optional-dependencies |
cargo install slicense或从源码构建:
git clone https://github.com/yourusername/slicense.git
cd slicense
cargo build --release# 检测当前项目的许可证
slicense detect
# 检查兼容性
slicense check
# 生成报告
slicense report --format html --output report.html
# 启动 TUI 交互界面
slicense tui
# 安装 Git pre-commit hook
slicense hooks install# 扫描当前目录
slicense detect
# 扫描指定项目(自动识别 Cargo/npm/Go/pip)
slicense detect /path/to/project
# CI 模式(失败时返回非零退出码)
slicense detect --ci# 生成 MIT 许可证
slicense generate --license MIT --author "Your Name"
# 指定年份和项目名
slicense generate --license Apache-2.0 --author "Your Name" --year 2026 --project "My Project"
# 使用自定义模板
slicense generate --license MIT --author "Your Name" --template custom.tpl
# 输出到指定文件
slicense generate --license AGPL-3.0 --author "Your Name" --output LICENSE# 基本检查
slicense check
# 严格模式(未知许可证也会报告)
slicense check --strict
# CI 模式
slicense check --ci# Markdown 报告(输出到终端)
slicense report
# JSON 报告(输出到文件)
slicense report --format json --output report.json
# HTML 报告
slicense report --format html --output report.html
# CSV 报告
slicense report --format csv --output report.csv# 自动检测并修复问题(如缺少 LICENSE 文件)
slicense fix
# 指定许可证类型和作者
slicense fix --license MIT --author "Your Name"# 显示依赖树(带许可证信息)
slicense tree
# 扫描指定项目
slicense tree /path/to/project# 扫描当前目录下的所有项目
slicense scan
# 指定扫描深度
slicense scan /path/to/monorepo --depth 5# 生成 SPDX 格式 SBOM
slicense sbom --format spdx --output sbom.spdx.json
# 生成 CycloneDX 格式 SBOM
slicense sbom --format cyclonedx --output bom.cdx.json# 保存当前快照
slicense audit --save
# 与上次快照对比
slicense audit --compare .slicense-snapshot.json
# 自定义快照文件路径
slicense audit --save --snapshot my-snapshot.json# 启动 TUI
slicense tui
# 指定项目目录
slicense tui /path/to/projectTUI 快捷键:
| 按键 | 功能 |
|---|---|
Tab / Shift+Tab |
切换 Tab |
↑ / ↓ / j / k |
上下导航 |
/ |
搜索过滤 |
Esc |
取消搜索 |
q |
退出 |
# 监听文件变更,自动检查许可证
slicense watch
# 监听指定项目
slicense watch /path/to/project监控的文件:Cargo.toml、Cargo.lock、package.json、package-lock.json、go.mod、go.sum、requirements.txt、pyproject.toml
# 安装 pre-commit hook
slicense hooks install
# 卸载 hook
slicense hooks uninstall
# 手动运行 hook 检查
slicense hooks run安装后,每次 git commit 会自动运行 slicense check --ci,许可证不兼容时阻止提交。
跳过 hook:git commit --no-verify
# 启动 Web UI(默认端口 8080)
slicense web
# 指定端口
slicense web --port 3000在项目根目录创建 .slicense.toml:
# 默认许可证和作者
default_license = "MIT"
default_author = "Your Name"
# 忽略的依赖包
ignore_packages = ["test-only-pkg"]
# 忽略的许可证类型
ignore_licenses = ["UNKNOWN"]
# 报告默认格式
report_format = "markdown"
# 国际化语言
language = "zh"
[ci]
# CI 模式:有错误时失败
fail_on_error = true
# CI 模式:有警告时失败
fail_on_warning = false
# 允许的许可证(空列表 = 允许所有)
allowed_licenses = ["MIT", "Apache-2.0", "BSD-2-Clause", "BSD-3-Clause", "ISC"]
# 禁止的许可证
denied_licenses = ["GPL-3.0"]
[web]
# Web UI 端口
port = 8080
# 自动打开浏览器
open_browser = true配置管理命令:
# 生成默认配置文件
slicense config init
# 查看当前配置
slicense config show
# 修改配置
slicense config set default_license MIT
slicense config set web.port 3000
slicense config set ci.fail_on_warning true| 许可证 | 标识符 | 类型 |
|---|---|---|
| MIT | MIT, MIT-0 |
宽松 |
| Apache-2.0 | Apache-2.0 |
宽松 |
| BSD-2-Clause | BSD-2-Clause |
宽松 |
| BSD-3-Clause | BSD-3-Clause |
宽松 |
| ISC | ISC |
宽松 |
| Zlib | Zlib |
宽松 |
| Unlicense | Unlicense |
公共领域 |
| GPL-2.0 | GPL-2.0, GPL-2.0-only, GPL-2.0-or-later |
Copyleft |
| GPL-3.0 | GPL-3.0, GPL-3.0-only, GPL-3.0-or-later |
Copyleft |
| LGPL-2.1 | LGPL-2.1 |
弱 Copyleft |
| LGPL-3.0 | LGPL-3.0 |
弱 Copyleft |
| AGPL-3.0 | AGPL-3.0 |
网络 Copyleft |
| MPL-2.0 | MPL-2.0 |
弱 Copyleft |
slicense 检查以下兼容性:
- 宽松许可证(MIT、Apache-2.0、BSD 等):互相兼容,可被任何项目使用
- GPL-2.0 项目:可使用 GPL-2.0 和 LGPL-2.1 依赖
- GPL-3.0 项目:可使用 GPL-3.0、LGPL-2.1、LGPL-3.0 依赖
- AGPL-3.0 项目:可使用 AGPL-3.0、GPL-3.0、LGPL 依赖
- LGPL-2.1 项目:可使用 LGPL-2.1 和 GPL-2.0 依赖
- LGPL-3.0 项目:可使用 LGPL-3.0 和 GPL-3.0 依赖
=== License Detection Results ===
Project: my-project v0.1.0
License: MIT
Dependencies:
Direct: 5
Transitive: 12
Total: 17
Dependency Details:
serde v1.0.193 [direct] - MIT
tokio v1.35.1 [direct] - MIT
mio v0.8.10 [transitive] - MIT
=== License Compatibility Report ===
Project: my-project
Status: ✓ COMPATIBLE
Warnings:
⚠ copyleft-dep [GPL-3.0]: This is a copyleft license that may require your project to use the same license
┌─ 📋 slicense — my-project v0.1.0 ─────────────────────────┐
│ [📦 Dependencies] [📊 Distribution] [⚠️ Compatibility] │
├────────────────────────────────────────────────────────────┤
│ ▶ serde v1.0.193 ⚖ MIT [direct] │
│ tokio v1.35.1 ⚖ MIT [direct] │
│ mio v0.8.10 ⚖ MIT [transitive] │
│ winapi v0.3.9 ⚖ MIT [transitive] │
├────────────────────────────────────────────────────────────┤
│ Tab: switch | ↑↓/jk: navigate | /: search | q: quit │
└────────────────────────────────────────────────────────────┘
slicense 支持多语言输出(目前支持中文和英文):
# 在配置文件中设置语言
slicense config set language zh欢迎提交 Pull Request!
本项目采用 AGPL-3.0 许可证 - 详见 LICENSE 文件。