moon的命令行帮助#
本文档包含moon命令行程序的帮助内容。
提示
要获取最新的手册,请查看 moon 的仓库
命令概述:
moon#
用法: moon <命令>
子命令:
new— 创建一个新的 MoonBit 模块build— 构建当前包check— 检查当前包,但不构建对象文件run— 运行一个 main 包test— 测试当前包clean— 删除 target 目录fmt— 格式化源代码doc— 生成文档info— 为模块中的所有包生成公共接口(.mbti)文件bench— 对当前包运行基准测试add— 添加一个依赖remove— 移除一个依赖install— 安装依赖tree— 显示依赖树login— 登录到您的账户register— 在 mooncakes.io 注册一个账户publish— 发布当前模块package— 打包当前模块update— 更新包注册表索引coverage— 代码覆盖率工具generate-build-matrix— 生成用于基准测试的构建矩阵(遗留功能)upgrade— 升级工具链shell-completion— 为 bash/elvish/fish/pwsh/zsh 生成 shell 补全并输出到标准输出version— 打印版本信息并退出
moon new#
创建一个新的 MoonBit 模块
用法: moon new [选项] <路径>
参数:
<PATH>— 新项目的路径
选项:
--user <用户>— 包的开发者名称。默认为已登录用户的用户名--name <名称>— 包的名称。默认为路径的最后一部分
moon build#
构建当前包
用法: moon build [选项]
选项:
--std— 启用标准库(默认)--nostd— 禁用标准库-g,--debug— 发出调试信息--release— 在发布模式下编译--strip— 删除调试信息--no-strip— 不删除调试信息--target <目标>— 选择输出目标可能的值:
wasm,wasm-gc,js,native,llvm,all--enable-coverage— 启用覆盖率指令--sort-input— 排序输入文件--output-wat— 输出 WAT 而不是 WASM-d,--deny-warn— 将所有警告视为错误--no-render— 不要从 moonc 渲染诊断(不要将 ‘-error-format json’ 传递给 moonc)--warn-list <WARN_LIST>— 警告列表配置--alert-list <ALERT_LIST>— 警报列表配置-j,--jobs <作业数>— 设置要并行运行的最大作业数--render-no-loc <最低级别>— 从某个级别开始渲染无位置的诊断默认值:
error可能的值:
info,warn,error--frozen— 不同步依赖项,假设本地依赖项是最新的-w,--watch— 监视文件系统并自动构建制品
moon check#
检查当前包,但不构建对象文件
用法: moon check [选项] [单文件路径]
参数:
<单文件路径>— 检查单个文件(.mbt 或 .mbt.md)
选项:
--std— 启用标准库(默认)--nostd— 禁用标准库-g,--debug— 发出调试信息--release— 在发布模式下编译--strip— 删除调试信息--no-strip— 不删除调试信息--target <目标>— 选择输出目标可能的值:
wasm,wasm-gc,js,native,llvm,all--enable-coverage— 启用覆盖率指令--sort-input— 排序输入文件--output-wat— 输出 WAT 而不是 WASM-d,--deny-warn— 将所有警告视为错误--no-render— 不要从 moonc 渲染诊断(不要将 ‘-error-format json’ 传递给 moonc)--warn-list <WARN_LIST>— 警告列表配置--alert-list <ALERT_LIST>— 警报列表配置-j,--jobs <作业数>— 设置要并行运行的最大作业数--render-no-loc <最低级别>— 从某个级别开始渲染无位置的诊断默认值:
error可能的值:
info,warn,error--output-json— 以 json 格式输出--frozen— 不同步依赖项,假设本地依赖项是最新的-w,--watch— 监视文件系统并自动检查文件-p,--package-path <包路径>— 要检查的包(及其依赖项)--patch-file <PATCH_FILE>— 要检查的补丁文件,仅在检查指定包时有效--no-mi— 是否跳过 mi 生成,仅在检查指定包时有效--explain— 是否使用详细信息解释错误代码
moon run#
run — 运行一个 main 包
用法: moon run [选项] <包或 mbt 文件> [参数]...
参数:
<包或 MoonBit 文件>— 要运行的包或 .mbt 文件<参数>— 提供给要运行的程序的参数
选项:
--std— 启用标准库(默认)--nostd— 禁用标准库-g,--debug— 发出调试信息--release— 在发布模式下编译--strip— 删除调试信息--no-strip— 不删除调试信息--target <目标>— 选择输出目标可能的值:
wasm,wasm-gc,js,native,llvm,all--enable-coverage— 启用覆盖率指令--sort-input— 排序输入文件--output-wat— 输出 WAT 而不是 WASM-d,--deny-warn— 将所有警告视为错误--no-render— 不要从 moonc 渲染诊断(不要将 ‘-error-format json’ 传递给 moonc)--warn-list <WARN_LIST>— 警告列表配置--alert-list <ALERT_LIST>— 警报列表配置-j,--jobs <作业数>— 设置要并行运行的最大作业数--render-no-loc <最低级别>— 从某个级别开始渲染无位置的诊断默认值:
error可能的值:
info,warn,error--frozen— 不同步依赖项,假设本地依赖项是最新的--build-only— 仅构建,不运行代码
moon test#
测试当前包
用法: moon test [选项] [单文件路径]
参数:
<单文件路径>— 在单个文件中运行测试(.mbt 或 .mbt.md)
选项:
--std— 启用标准库(默认)--nostd— 禁用标准库-g,--debug— 发出调试信息--release— 在发布模式下编译--strip— 删除调试信息--no-strip— 不删除调试信息--target <目标>— 选择输出目标可能的值:
wasm,wasm-gc,js,native,llvm,all--enable-coverage— 启用覆盖率指令--sort-input— 排序输入文件--output-wat— 输出 WAT 而不是 WASM-d,--deny-warn— 将所有警告视为错误--no-render— 不要从 moonc 渲染诊断(不要将 ‘-error-format json’ 传递给 moonc)--warn-list <WARN_LIST>— 警告列表配置--alert-list <ALERT_LIST>— 警报列表配置-j,--jobs <作业数>— 设置要并行运行的最大作业数--render-no-loc <最低级别>— 从某个级别开始渲染无位置的诊断默认值:
error可能的值:
info,warn,error-p,--package <包>— 在指定的包中运行测试-f,--file <文件>— 在指定的文件中运行测试。仅在指定了--package时有效-i,--index <索引>— 仅在文件中运行第 index 个测试。仅在指定了--file时有效--doc-index <文档索引>— 仅在文件中运行第 index 个文档测试。仅在指定了--file时有效-u,--update— 更新测试快照-l,--limit <限制>— 限制期望测试更新通过的运行次数,以避免无限循环默认值:
256--frozen— 不同步依赖项,假设本地依赖项是最新的--build-only— 仅构建,不运行测试--no-parallelize— 顺序运行目标后端中的测试--test-failure-json— 以 JSON 格式打印失败消息--patch-file <补丁文件>— 补丁文件的路径--doc— 运行文档测试
moon clean#
删除 target 目录
用法: moon clean
moon fmt#
格式化源代码
用法: moon fmt [选项] [参数]...
参数:
<参数>
选项:
--check— 仅检查,不更改源代码--sort-input— 排序输入文件--block-style <块样式>— 在每个段之间添加分隔符可能的值:
false,true
moon doc#
生成文档
用法: moon doc [选项]
选项:
--serve— 启动一个 Web 服务器来提供文档-b,--bind <绑定>— 服务器的地址默认值:`
-p,--port <端口>— 服务器的端口默认值:
3000--frozen— 不同步依赖项,假设本地依赖项是最新的
moon info#
为模块中的所有包生成公共接口(.mbti)文件
用法: moon info [选项]
选项:
--frozen— 不同步依赖项,假设本地依赖项是最新的--no-alias— 不要使用别名来缩短输出中的包名--target <目标>— 选择输出目标可能的值:
wasm,wasm-gc,js,native,llvm,all-p,--package <包>— 仅为指定的包生成 mbti 文件
moon bench#
对当前包运行基准测
用法: moon bench [选项]
选项:
--std— 启用标准库(默认)--nostd— 禁用标准库-g,--debug— 发出调试信息--release— 在发布模式下编译--strip— 删除调试信息--no-strip— 不删除调试信息--target <目标>— 选择输出目标可能的值:
wasm,wasm-gc,js,native,llvm,all--enable-coverage— 启用覆盖率指令--sort-input— 排序输入文件--output-wat— 输出 WAT 而不是 WASM-d,--deny-warn— 将所有警告视为错误--no-render— 不要从 moonc 渲染诊断(不要将 ‘-error-format json’ 传递给 moonc)--warn-list <WARN_LIST>— 警告列表配置--alert-list <ALERT_LIST>— 警报列表配置-j,--jobs <作业数>— 设置要并行运行的最大作业数--render-no-loc <最低级别>— 从某个级别开始渲染无位置的诊断默认值:
error可能的值:
info,warn,error-p,--package <包>— 在指定的包中运行测试-f,--file <文件>— 在指定的文件中运行测试。仅在指定了--package时有效-i,--index <索引>— 仅在文件中运行第 index 个测试。仅在指定了--file时有效--frozen— 不同步依赖项,假设本地依赖项是最新的--build-only— 仅构建,不运行基准测试--no-parallelize— 顺序执行目标后端中的基准测试
moon add#
添加一个依赖
用法: moon add [选项] <包路径>
参数:
<包路径>— 要添加的包路径
选项:
--bin— 是否将依赖项添加为二进制文件
moon remove#
移除一个依赖
用法: moon remove <包路径>
参数:
<包路径>— 要移除的包路径
moon install#
安装依赖
用法: moon install
moon tree#
显示依赖树
用法: moon tree
moon login#
登录到您的账户
用法: moon login
moon register#
在 mooncakes.io 注册一个账户
用法: moon register
moon publish#
发布当前模块
用法: moon publish [选项]
选项:
--frozen— 不同步依赖项,假设本地依赖项是最新的
moon package#
打包当前模块
用法: moon package [选项]
选项:
--frozen— 不同步依赖项,假设本地依赖项是最新的--list
moon update#
更新包注册表索引
用法: moon update
moon coverage#
代码覆盖率工具
用法: moon coverage <命令>
子命令:
analyze— 运行带有指令的测试并报告覆盖率report— 生成代码覆盖率报告clean— 清理覆盖率工件
moon coverage analyze#
运行带有指令的测试并报告覆盖率
用法: moon coverage analyze [选项] [-- <额外标志>...]
参数:
<额外标志>— 直接传递给moon_cove_report的额外标志
选项:
-p,--package <包>— 仅为指定的包生成测试覆盖率
moon coverage report#
生成代码覆盖率报告
用法: moon coverage report [参数]... [命令]
参数:
<参数>— 要传递给覆盖率工具的参数
选项:
-h,--help— 显示覆盖率工具的帮助
moon coverage clean#
清理覆盖率工件
用法: moon coverage clean
moon generate-build-matrix#
生成用于基准测试的构建矩阵(遗留功能)
用法: moon generate-build-matrix [选项] --output-dir <输出目录>
选项:
-n <数字>— 将drow、dcol、mrow、mcol的所有值设置为相同的值--drow <DIR_ROWS>— 目录行数--dcol <DIR_COLS>— 目录列数--mrow <MOD_ROWS>— 模块行数--mcol <MOD_COLS>— 模块列数-o,--output-dir <输出目录>— 输出目录
moon upgrade#
升级工具链
用法: moon upgrade [选项]
选项:
-f,--force— 强制升级--dev— 安装最新的开发版本
moon shell-completion#
为 bash/elvish/fish/pwsh/zsh 生成 shell 补全并输出到标准输出
用法: moon shell-completion [选项]
讨论:为 Bash、Elvish、Fish、Zsh 或 PowerShell 启用命令补全功能。该脚本的输出在标准输出(stdout)上,用户可以将输出重定向到自己选择的文件。文件的存放位置将取决于所使用的 shell 以及操作系统。具体的配置也可能决定这些脚本应放置在何处。
补全脚本不会自动更新,因此你可能需要定期运行此命令以获取最新的补全内容。或者,你可以将eval "$(moon shell-completion --shell <SHELL>)"添加到你所用 shell 的配置文件(rc file)中,这样每次启动 shell 时都会加载最新的补全内容。不过,这种方式被认为不如安装补全脚本高效。
以下是在 Unix 及类似操作系统(如 GNU/Linux)下,针对三种受支持的 shell 的一些常见设置。
Bash:
对于系统范围的命令,补全文件通常存放在 /etc/bash_completion.d/;而针对用户特定的命令,它们可存放在 ~/.local/share/bash - completion/completions。运行以下命令:
$ mkdir -p ~/.local/share/bash-completion/completions
$ moon shell-completion --shell bash >> ~/.local/share/bash-completion/completions/moon
这会安装补全脚本。你可能需要注销并重新登录 shell 会话,以使更改生效。
Bash (macOS/Homebrew):
Homebrew 会将 bash 补全文件存储在 Homebrew 目录内。在安装了 bash-completion 的 Homebrew 软件包后,运行以下命令:
$ mkdir -p $(brew --prefix)/etc/bash_completion.d
$ moon shell-completion --shell bash > $(brew --prefix)/etc/bash_completion.d/moon.bash-completion
Fish:
Fish 补全文件通常存储在 $HOME/.config/fish/completions 目录下。运行以下命令:
$ mkdir -p ~/.config/fish/completions
$ moon shell-completion --shell fish > ~/.config/fish/completions/moon.fish
这会安装补全脚本。你可能需要注销并重新登录 shell 会话,以使更改生效。
Elvish:
Elvish completions are commonly stored in a single completers module.
A typical module search path is ~/.config/elvish/lib, and
running the command:
$ moon shell-completion --shell elvish >> ~/.config/elvish/lib/completers.elv
将安装补全脚本。请注意使用>>(追加)而不是 >(覆盖),以防止覆盖其他命令的现有补全。然后在你的 rc.elv 文件前面添加:
`use completers`
以加载 completers 模块并启用补全功能。
Zsh:
ZSH 补全文件通常存放在 $fpath 变量所列出的任意目录中。要使用这些补全功能,你要么将生成的脚本添加到这些目录之一,要么将你自己的目录添加到这个列表中。
如果你不确定该使用哪个目录,添加一个自定义目录通常是最稳妥的做法。首先创建这个目录;在这个示例中,我们将在 $HOME 目录下创建一个隐藏目录:
$ mkdir ~/.zfunc
然后,在你的 .zshrc 文件里 compinit 命令之前添加以下几行:
fpath+=~/.zfunc
现在你可以使用以下命令来安装补全脚本
$ moon shell-completion --shell zsh > ~/.zfunc/_moon
然后,你必须开启一个新的 zsh 会话,或者直接运行
$ . ~/.zshrc
以便新的补全功能生效。
Custom locations:
另外,你可以将这些文件保存到你选择的位置,比如你家目录($HOME)下的自定义目录。这样做的话,你需要添加合适的指令,例如在登录脚本中使用 source命令引入这些文件。请查阅你所使用 shell 的文档,了解如何添加此类指令。
PowerShell:
PowerShell 补全脚本需要 PowerShell 5.0 及更高版本(Windows 10 系统自带该版本,而 Windows 7 或 8.1 系统可单独下载)。
首先,检查是否已经设置了配置文件。
PS C:\> Test-Path $profile
如果上述命令返回 False,则运行以下命令。
PS C:\> New-Item -path $profile -type file -force
现在打开由 $profile 指定的文件(如果你使用了 New-Item 命令,该文件将是 ${env:USERPROFILE}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1)。
接下来,我们可以将补全文件保存到我们的配置文件中,或者保存到一个单独的文件里
PS C:\> moon shell-completion --shell powershell >>
${env:USERPROFILE}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
这段讨论内容改编自 rustup completions 命令相关内容,并做了一些修改。
选项:
--shell <SHELL>— 要为其生成补全的 shell默认值:
<您的 shell>可能的值:
bash,elvish,fish,powershell,zsh
moon version#
打印版本信息并退出
用法: moon version [选项]
选项:
--all— 打印所有版本信息--json— 以 JSON 格式打印版本信息--no-path— 不打印路径
本文档是由 clap-markdown 自动生成的。