| name | moonbit-toolchain |
| description | MoonBit 工具链技能。提供 moon 构建工具、项目管理、包管理、格式化、文档生成等完整参考。TRIGGER when: 用户使用 moon 命令、创建 MoonBit 项目、管理依赖、格式化代码、生成文档、或需要了解 MoonBit 工具链时触发。SKIP: 纯 MoonBit 代码编写(使用 moonbit-language 技能)。 |
MoonBit 工具链技能
本技能提供 MoonBit 工具链的完整参考,包括构建工具、项目管理、包管理等核心内容。
触发条件
当用户执行以下操作时触发此技能:
- 使用
moon 命令
- 创建新的 MoonBit 项目
- 管理项目依赖
- 格式化代码
- 生成文档
- 配置工作区
跳过条件
以下情况不触发此技能:
- 纯 MoonBit 代码编写(使用
moonbit-language 技能)
- 仅询问测试(使用
moonbit-testing 技能)
- 仅询问 FFI(使用
moonbit-ffi 技能)
核心命令
项目创建
moon new <PATH>
moon new --user <USER> --name <NAME> <PATH>
构建与检查
moon build
moon build --watch
moon check
moon check --watch
moon check --package-path <PACKAGE_PATH>
moon check --output-json
moon check --explain
moon check <SINGLE_FILE.mbt>
运行与测试
moon run <PACKAGE_OR_MBT_FILE> [ARGS]...
moon run --build-only <PACKAGE>
moon test
moon test --package <PACKAGE>
moon test --package <PACKAGE> --file <FILE>
moon test --package <PACKAGE> --file <FILE> --index <INDEX>
moon test --update
moon test --build-only
moon test --no-parallelize
moon test --test-failure-json
moon test --doc
代码格式化
moon fmt
moon fmt --check
moon fmt --sort-input
moon fmt --block-style true
文档生成
moon doc
moon doc --serve
moon doc --bind <BIND>
moon doc --port <PORT>
包管理
moon add <PACKAGE_PATH>
moon add --bin <PACKAGE_PATH>
moon remove <PACKAGE_PATH>
moon install
moon tree
moon update
发布
moon login
moon register
moon publish
moon package
其他命令
moon clean
moon info
moon bench
moon coverage analyze
moon coverage report
moon coverage clean
moon upgrade
moon shell-completion --shell bash
moon shell-completion --shell powershell
moon version
通用选项
以下选项在 build/check/run/test/bench 中通用:
| 选项 | 说明 |
|---|
--std | 启用标准库(默认) |
--nostd | 禁用标准库 |
-g, --debug | 发出调试信息 |
--release | 发布模式编译 |
--strip / --no-strip | 启用/禁用剥离调试信息 |
--target <TARGET> | 输出目标:wasm, wasm-gc, js, native, llvm, all |
--enable-coverage | 启用覆盖率插桩 |
--sort-input | 排序输入文件 |
--output-wat | 输出 WAT 而不是 WASM |
-d, --deny-warn | 将所有警告视为错误 |
--no-render | 不渲染来自 moonc 的诊断 |
--warn-list <WARN_LIST> | 警告列表配置 |
--alert-list <ALERT_LIST> | 警报列表配置 |
-j, --jobs <JOBS> | 最大并行任务数 |
--frozen | 不同步依赖;假设本地依赖是最新的 |
项目结构
工作区(Workspace)
工作区是 MoonBit 项目的顶层组织单位:
my-project/
├── moon.mod.json # 模块配置
├── moon.pkg # 包配置
├── src/
│ ├── main.mbt # 主入口
│ └── lib.mbt # 库代码
└── test/
└── main_test.mbt # 测试代码
模块配置(moon.mod.json)
{
"name": "username/module-name",
"version": "0.1.0",
"readme": "README.md",
"repository": "",
"license": "MIT",
"keywords": [],
"deps": {
"username/dependency": "0.1.0"
}
}
包配置(moon.pkg)
{
"import": ["username/dependency"],
"wbtest-import": ["username/test-dependency"],
"test-import": ["username/test-dependency"]
}
包管理详解
添加依赖
moon add username/package
moon add username/package@0.1.0
moon add --username/package
依赖树
moon tree
版本约束
MoonBit 使用语义化版本控制:
0.1.0 — 精确版本
^0.1.0 — 兼容版本(默认)
>=0.1.0 — 最小版本
0.1.0..0.2.0 — 版本范围
目标平台
Wasm
moon build --target wasm
moon build --target wasm-gc
JavaScript
moon build --target js
生成的 JS 文件可以是 CommonJS、ES 模块或 IIFE,根据配置决定。
Native
moon build --target native
LLVM(实验性)
moon build --target llvm
调试与诊断
调试信息
moon build --debug
moon build --release
错误诊断
moon check
moon check --output-json
moon check --explain
moon check --no-render
警告配置
moon build --deny-warn
moon build --warn-list "unused-var,shadowed-var"
最佳实践
- 使用
moon new 创建项目:确保正确的项目结构
- 定期运行
moon test:保持代码质量
- 使用
moon fmt:保持代码风格一致
- 使用
moon doc:生成和查看文档
- 使用
moon tree:了解依赖关系
- 使用
--watch 模式:开发时自动构建/检查
- 使用
--release 构建发布版本:启用优化
常见陷阱
- 依赖版本冲突:使用
moon tree 检查依赖关系
- 构建缓存:使用
moon clean 清理构建缓存
- 目标平台差异:不同后端的 ABI 可能不同
- 快照测试:使用
--update 更新快照
- 并行测试:默认并行运行,确保测试独立