1.4. 工程目录结构

工程目录结构是整个外围工具工作的基础,比如 init 根据该结构生成工程、包管理工具则依次管理依赖关系。

1.4.1 工程目录结构简介

凹语言程序以包来组织代码,包可以是一个单文件,包也可以是一个目录。凹语言自带的 waroot/examples/hello 案例的是一个更为完整的工程,其目录结构如下:

examples/hello/
├── LICENSE
├── README.md
├── src
│   ├── main.wa
│   └── mymath
│       └── math.wa
├── vendor
│   └── 3rdparty
│       └── pkg
│           └── pkg.wa
└── wa.mod

除了版权文件、说明文件外,最重要的是 wa.mod 包工程文件,其定义了当前应用的包路径。此外 src 目录下的是当前包路径下的代码,是默认的 main 入口包。

wa.mod 文件内容如下:

name = "hello"
pkgpath = "myapp"
version = "0.0.1"

其中 pkgpath 表示当前包的路径,从而可以推导出 mymath 子目录对应的包路径为 "myapp/mymath"。vendor 目录是依赖的第三方代码,其中 vendor/3rdparty/pkg 对应的包路径为 "3rdparty/pkg"

1.4.2 包管理工具

凹语言目前还没有包管理工具,如果依赖第三方包则需要手工同步 vendor 目录。开发组希望在 MVP 版本后启动包管理工具开放工作。