“Moon” 是一个用于构建 MoonBit 语言的系统,它目前基于 n2 项目。Moon 支持并行和递增式的本地包构建。管理并构建第三方包的功能即将推出。
先决条件
在进行这个教程之前,请确保已经安装了以下软件:
- MoonBit命令行工具:从这里下载。这个命令行工具用于创建和管理 MoonBit 项目。
要查看使用说明,请使用 moon help
。
$ moon help
Moonbit's build system
Usage: moon <COMMAND>
Commands:
build Build the current package
check Check the current package, but don't build object files
run Run WebAssembly module
clean Remove the target directory
new Create a new moonbit package
bench Generate build matrix for benchmarking
fmt Format moonbit
version Print version info and exit
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
- Visual Studio Code中的Moonbit语言插件:你可以在VS Code的市场中安装它。这个插件为MoonBit提供了一个丰富的开发环境,包括语法高亮、代码完成等功能。
一旦满足了这些先决条件,我们就可以开始在 MoonBit 中构建一个新的模块了。
创建一个新的 Module
要创建一个新的模块,请在终端中使用 moon new hello
命令:
$ moon new hello
这个命令将创建一个名为 hello
的新模块。
了解 Module 的目录结构
创建新模块后,你的目录结构应该如下所示:
.
├── lib
│ ├── hello.mbt
│ └── moon.pkg
├── main
│ ├── main.mbt
│ └── moon.pkg
└── moon.mod
以下是目录结构的简要解释:
lib和main目录:这些是模块中的包。每个包可以包含多个 .mbt 文件,它们是 MoonBit 语言中的源代码文件。然而,无论一个包中有多少个.mbt 文件,它们都共享一个共同的 moon.pkg 文件。
moon.pkg 是包描述符。它定义了包的属性,如名称以及导入的包。
moon.mod 用于将一个目录标识为一个 MoonBit 模块。它包含了模块的名称:
module "hello"
执行项目检查
你可以使用 Visual Studio Code 打开你的项目。在安装了 MoonBit 插件之后,你可以在终端中使用 moon check --watch
命令来自动检查你的项目。
执行 moon check --watch
后,VS Code 应该看起来像这样。
处理 Packages
我们的 hello 模块包含两个包:lib 和 main。
lib 包包含一个 hello.mbt 文件:
# ./lib/hello.mbt
pub func hello() -> String {
"Hello, world!\n"
}
main 包包含一个 main.mbt 文件:
# ./main/main.mbt
func init {
@lib.hello().print()
}
要执行你的程序,需要指定到 main 包的路径:
$ moon run ./main
Hello, world!
导入 Package
在 MoonBit 的构建系统中,模块的名称被用来引用其内部包。要在 main/main.mbt 中导入 lib 包,需要在main/moon.pkg 中指定它:
# ./main/main.pkg
package main
import "hello/lib"