moon
的命令行帮助#
本文档包含moon
命令行程序的帮助内容。
命令概述:
moon
#
用法: moon <命令>
子命令:
new
— 创建一个新的 MoonBit 模块build
— 构建当前包check
— 检查当前包,但不构建对象文件run
— 运行一个 main 包test
— 测试当前包clean
— 删除 target 目录fmt
— 格式化源代码doc
— 生成文档info
— 为模块中的所有包生成公共接口(.mbti
)文件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 [选项] [包名]
参数:
<包名>
— 包的名称
选项:
--lib
— 创建一个库包而不是可执行文件--path <路径>
— 包的输出路径--user <用户>
— 包的开发者名称--name <名称>
— 包的名称部分--license <许可证>
— 包的许可证默认值:
Apache-2.0
--no-license
— 不为包设置许可证
moon build
#
构建当前包
用法: moon build [选项]
选项:
--std
— 启用标准库(默认)--nostd
— 禁用标准库-g
,--debug
— 发出调试信息--release
— 在发布模式下编译--strip
— 删除调试信息--no-strip
— 不删除调试信息--target <目标>
— 选择输出目标可能的值:
wasm
,wasm-gc
,js
,native
,llvm
,all
--serial
— 顺序处理所选目标--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 <JOBS>
— Set the max number of jobs to run in parallel--frozen
— 不同步依赖项,假设本地依赖项是最新的-w
,--watch
— 监视文件系统并自动构建制品
moon check
#
检查当前包,但不构建对象文件
用法: moon check [选项] [包路径]
参数:
<包路径>
— 要检查的包(及其依赖项)
选项:
--std
— 启用标准库(默认)--nostd
— 禁用标准库-g
,--debug
— 发出调试信息--release
— 在发布模式下编译--strip
— 删除调试信息--no-strip
— 不删除调试信息--target <目标>
— 选择输出目标可能的值:
wasm
,wasm-gc
,js
,native
,llvm
,all
--serial
— 顺序处理所选目标--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 <JOBS>
— Set the max number of jobs to run in parallel--output-json
— 以 json 格式输出--frozen
— 不同步依赖项,假设本地依赖项是最新的-w
,--watch
— 监视文件系统并自动检查文件--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
--serial
— 顺序处理所选目标--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 <JOBS>
— Set the max number of jobs to run in parallel--frozen
— 不同步依赖项,假设本地依赖项是最新的--build-only
— 仅构建,不运行代码
moon test
#
测试当前包
用法: moon test [选项]
选项:
--std
— 启用标准库(默认)--nostd
— 禁用标准库-g
,--debug
— 发出调试信息--release
— 在发布模式下编译--strip
— 删除调试信息--no-strip
— 不删除调试信息--target <目标>
— 选择输出目标可能的值:
wasm
,wasm-gc
,js
,native
,llvm
,all
--serial
— 顺序处理所选目标--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 <JOBS>
— Set the max number of jobs to run in parallel-p
,--package <包>
— 在指定的包中运行测试-f
,--file <文件>
— 在指定的文件中运行测试。仅在指定了--package
时有效-i
,--index <索引>
— 仅在文件中运行第 index 个测试。仅在指定了--file
时有效-u
,--update
— 更新测试快照-l
,--limit <限制>
— 限制期望测试更新通过的运行次数,以避免无限循环默认值:
256
--frozen
— 不同步依赖项,假设本地依赖项是最新的--build-only
— 仅构建,不运行测试--no-parallelize
— 顺序运行目标后端中的测试--test-failure-json
— 以 JSON 格式打印失败消息--patch-file <补丁文件>
— 补丁文件的路径--doc
— 运行文档测试--md
— 运行 markdown 文件中的测试
If the target is native
, the --release
option is not used, and no stub-cc*
options are specified in moon.pkg.json
for any dependencies,
the fast-debugging-test feature will be enabled.
It will attempt to use tcc -run
to execute the tests.
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 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 <命令>
子命令:
report
— 生成代码覆盖率报告clean
— 清理覆盖率工件
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
自动生成的。