Moonbit License Checker 开发使用
随着Monnbit社区不断发展壮大,管理和合规项目中的许可证信息变得尤为重要。为此,我用Copilot开发了一个名为 license_checker 的工具,旨在帮助开发者自动检测和生成项目中所有包的许可证报告。
moon versionmoon 0.1.20260119 (be99339 2026-01-19)
Feature flags enabled: rupes_recta-> You're currently using the experimental build graph generator "Rupes Recta". If you encounter a problem, please verify whether it also reproduces with the legacy build (by setting NEW_MOON=0).xingwangzhe/license_checker
项目简介
具体的文档可以在下面看到
🥮 mooncakes.io:license_checker
本工具基于 MoonBit(moon)构建,扫描本项目及本地 .mooncakes 缓存中的包,读取各包的 moon.mod.json 或 moon.pkg.json 中的 license 字段,汇总成可机器消费的报告(JSON)或可读的文本报告(TXT)。
主要用途:
- 扫描仓库依赖并生成许可证汇总,用于合规检查或审计。
- 支持从本地
.mooncakes缓存读取已下载包的信息,优先使用本地缓存以避免联网依赖。
主要功能:
scanner.mbt:遍历并解析moon.mod.json/moon.pkg.json,提取 license 字段。formatter.mbt:将扫描结果格式化为 JSON 或 TXT 并写入目标文件。main.mbt:命令行入口,解析参数并调用扫描/格式化逻辑。
使用
moon build --target native最后的结果是exe文件,应该是链接到C了,我在Linux上可以直接运行
./target/native/release/build/cmd/license-checker/license-checker.exe --format json --output licenses.json对于项目本身,生成了json
{ "packages": [ { "root": "moonbitlang/x", "rel": "", "artifact": ".mooncakes/moonbitlang/x", "moonmod": ".mooncakes/moonbitlang/x/moon.mod.json", "license": "Apache-2.0" } ], "summary": { "total": 1, "unknown_license": 0 }}考虑到目前Moonbit生态还比较小,依赖层级还没那么错综复杂,这个工具仅仅是简单地读取了每个包的 license 字段,并没有做更复杂的许可证解析和合规性检查。
一些建议
我觉得moonbit生态可以考虑在moon.mod.json或moon.pkg.json中增加一些字段,比如说bin 字段,用来指定可执行文件,可以仿照npm install -g的方式安装全局cli工具,也就是自动把二进制文件链接到系统路径。 这样,我这个可执行文件就可以直接发布到mooncakes.io上,用户安装后就可以直接使用license-checker命令了,而不需要去构建二进制文件手动改环境变量和文件位置。
Moonbit License Checker 开发使用
作者:xingwangzhe
本文链接: https://xingwangzhe.fun/posts/moonbit-license-checker/
本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
留言评论