惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
罗磊的独立博客
The GitHub Blog
The GitHub Blog
L
LangChain Blog
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
DataBreaches.Net
宝玉的分享
宝玉的分享
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
N
Netflix TechBlog - Medium
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
美团技术团队
大猫的无限游戏
大猫的无限游戏
雷峰网
雷峰网
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
MongoDB | Blog
MongoDB | Blog

姓王者的博客

Linux用户Secure Boot自主维护指南 | 姓王者的博客 MAD Bugs 已经开始——关于信息安全的军备竞赛 | 姓王者的博客 解决钉钉Dingtalk无法在Linux新版内核上启动问题-修复可执行栈错误 | 姓王者的博客 突发:GitHub 正遭受大规模 Issue 赌博广告轰炸 | 姓王者的博客 Ubuntu26.04-beta体验:坚毅浣熊! | 姓王者的博客 fakeclaw装作龙虾发贴吧 | 姓王者的博客 找回12年前的QQ记忆 | 姓王者的博客 在Linux上玩Flash网页游戏-洛克王国 | 姓王者的博客 Copilot将使用交互数据来训练 | 姓王者的博客 重要通知-请更新我的GPG公钥 | 姓王者的博客 为了自由Android | 姓王者的博客 GPL"2,3"事 | 姓王者的博客 短文-对VitePlus的一点🤏小贡献 | 姓王者的博客 Bing收录没了?亲测有效的快速恢复指南 | 姓王者的博客 解决桌面设备二维码快速识别的工具-ClipQR | 姓王者的博客 解决 Nautilus 自定义终端插件安装依赖问题 | 姓王者的博客 OpenClaw 该熄火了 | 姓王者的博客 Vite8 - 统一的基建开始 | 姓王者的博客 Astro 6 推出啦 | 姓王者的博客 ubuntu的openvpn异常暂停推送更新 | 姓王者的博客 Ubuntu 24.04 安装 Win10 虚拟机 | 姓王者的博客 ESA-后记:热爱阿里云 | 姓王者的博客 Moonbit 0.8.0 重大发布,我也要改一下我的包 | 姓王者的博客 ESA Pages 边缘开发大赛获奖 | 姓王者的博客 Astro: 优化katex,mermaid和灯箱使用 | 姓王者的博客 从edgeone迁移到esa | 姓王者的博客 出租人类:AI时代的荒诞与真实 | 姓王者的博客 Astro 5.17构建性能优化实践:从18s到13s | 姓王者的博客 Stalux Astro博客主题自荐 | 姓王者的博客 把Hexo永久链接迁移到Astro | 姓王者的博客
Moonbit License Checker 开发使用 | 姓王者的博客
作者:xingwangzhe · 2026-01-31 · via 姓王者的博客

🕒 阅读时间:2 分钟 📝 字数:421 👀 阅读量: Loading...

随着Monnbit社区不断发展壮大,管理和合规项目中的许可证信息变得尤为重要。为此,我用Copilot开发了一个名为 license_checker 的工具,旨在帮助开发者自动检测和生成项目中所有包的许可证报告。

moon version

moon 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.jsonmoon.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.jsonmoon.pkg.json中增加一些字段,比如说bin 字段,用来指定可执行文件,可以仿照npm install -g的方式安装全局cli工具,也就是自动把二进制文件链接到系统路径。 这样,我这个可执行文件就可以直接发布到mooncakes.io上,用户安装后就可以直接使用license-checker命令了,而不需要去构建二进制文件手动改环境变量和文件位置。