Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

slicense

一个功能全面的项目许可证管理 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

SBOM 生成

# 生成 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 交互界面

# 启动 TUI
slicense tui

# 指定项目目录
slicense tui /path/to/project

TUI 快捷键:

按键 功能
Tab / Shift+Tab 切换 Tab
/ / j / k 上下导航
/ 搜索过滤
Esc 取消搜索
q 退出

文件监控

# 监听文件变更,自动检查许可证
slicense watch

# 监听指定项目
slicense watch /path/to/project

监控的文件:Cargo.tomlCargo.lockpackage.jsonpackage-lock.jsongo.modgo.sumrequirements.txtpyproject.toml

Git Hooks

# 安装 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

# 启动 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

TUI 界面

┌─ 📋 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 文件。

About

A tool that helps you manage project licenses.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages