“Moon” 是一个用于构建 MoonBit 语言的系统,它目前基于 n2 项目。Moon 支持并行和递增式的本地包构建。管理并构建第三方包的功能即将推出。

先决条件

在进行这个教程之前,请确保已经安装了以下软件:

  1. MoonBit命令行工具:从这里下载。这个命令行工具用于创建和管理 MoonBit 项目。

要查看使用说明,请使用 moon help

  1. $ moon help
  2. Moonbit's build system
  3. Usage: moon <COMMAND>
  4. Commands:
  5. build Build the current package
  6. check Check the current package, but don't build object files
  7. run Run WebAssembly module
  8. clean Remove the target directory
  9. new Create a new moonbit package
  10. bench Generate build matrix for benchmarking
  11. fmt Format moonbit
  12. version Print version info and exit
  13. help Print this message or the help of the given subcommand(s)
  14. Options:
  15. -h, --help Print help
  1. Visual Studio Code中的Moonbit语言插件:你可以在VS Code的市场中安装它。这个插件为MoonBit提供了一个丰富的开发环境,包括语法高亮、代码完成等功能。

一旦满足了这些先决条件,我们就可以开始在 MoonBit 中构建一个新的模块了。

创建一个新的 Module

要创建一个新的模块,请在终端中使用 moon new hello 命令:

  1. $ moon new hello

这个命令将创建一个名为 hello 的新模块。

了解 Module 的目录结构

创建新模块后,你的目录结构应该如下所示:

  1. .
  2. ├── lib
  3. ├── hello.mbt
  4. └── moon.pkg
  5. ├── main
  6. ├── main.mbt
  7. └── moon.pkg
  8. └── moon.mod

以下是目录结构的简要解释:

lib和main目录:这些是模块中的包。每个包可以包含多个 .mbt 文件,它们是 MoonBit 语言中的源代码文件。然而,无论一个包中有多少个.mbt 文件,它们都共享一个共同的 moon.pkg 文件。

moon.pkg 是包描述符。它定义了包的属性,如名称以及导入的包。

moon.mod 用于将一个目录标识为一个 MoonBit 模块。它包含了模块的名称:

  1. module "hello"

执行项目检查

你可以使用 Visual Studio Code 打开你的项目。在安装了 MoonBit 插件之后,你可以在终端中使用 moon check --watch 命令来自动检查你的项目。

MoonBit 构建系统教程 - 图1

执行 moon check --watch 后,VS Code 应该看起来像这样。

MoonBit 构建系统教程 - 图2

处理 Packages

我们的 hello 模块包含两个包:lib 和 main。

lib 包包含一个 hello.mbt 文件:

  1. # ./lib/hello.mbt
  2. pub func hello() -> String {
  3. "Hello, world!\n"
  4. }

main 包包含一个 main.mbt 文件:

  1. # ./main/main.mbt
  2. func init {
  3. @lib.hello().print()
  4. }

要执行你的程序,需要指定到 main 包的路径:

  1. $ moon run ./main
  2. Hello, world!

导入 Package

在 MoonBit 的构建系统中,模块的名称被用来引用其内部包。要在 main/main.mbt 中导入 lib 包,需要在main/moon.pkg 中指定它:

  1. # ./main/main.pkg
  2. package main
  3. import "hello/lib"