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 <目标> — 选择输出目标

    可能的值:wasmwasm-gcjsnativellvmall

  • --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 <目标> — 选择输出目标

    可能的值:wasmwasm-gcjsnativellvmall

  • --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 <目标> — 选择输出目标

    可能的值:wasmwasm-gcjsnativellvmall

  • --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 <目标> — 选择输出目标

    可能的值:wasmwasm-gcjsnativellvmall

  • --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 <块样式> — 在每个段之间添加分隔符

    可能的值:falsetrue

moon doc#

生成文档

用法: moon doc [选项]

选项:

  • --serve — 启动一个 Web 服务器来提供文档

  • -b, --bind <绑定> — 服务器的地址

    默认值:`

  • -p, --port <端口> — 服务器的端口

    默认值:3000

  • --frozen — 不同步依赖项,假设本地依赖项是最新的

moon info#

为模块中的所有包生成公共接口(.mbti)文件

用法: moon info [选项]

选项:

  • --frozen — 不同步依赖项,假设本地依赖项是最新的

  • --no-alias — 不要使用别名来缩短输出中的包名

  • --target <目标> — 选择输出目标

    可能的值:wasmwasm-gcjsnativellvmall

  • -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 <数字> — 将 drowdcolmrowmcol 的所有值设置为相同的值

  • --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 自动生成的。