VEP 2: vindex.toml 标准格式
VEP 2 - vindex.toml 标准格式与包名缩写规则
摘要
本 VEP 规定了 vindex.toml 的标准格式——所有 Vix 项目的配置文件。
vindex.toml 是所有 Vix 项目的标准配置文件,用于声明项目的规范数据,如项目元数据、依赖等。
通过规定 vindex.toml 的具体格式,开发者不仅能快速编写准确的配置文件而不会产生歧义,轻松管理项目,还能自由使用官方和第三方包管理器。同时,社区贡献者只要能遵循本标准,也能自由开发自己的包管理器。
动机
随着 Vix 的发展,越来越多的第三方工具和库涌现出来。如果没有标准的配置文件来描述这些工具和库,用户可能需要猜测和思考才能弄清楚工具的用途,包管理器也无法以简单的方式解析依赖。为解决此问题,vindex.toml 应运而生。
理由
作为一门具有丰富社区支持的系统级编程语言,管理大型项目和使用依赖是不可避免的。为了以简单的方式描述项目信息,我们引入了名为 vindex.toml 的配置文件来简化这一过程。
规范
[project] 表是 vindex.toml 中唯一必需的节。它描述项目元数据及其依赖。
[project] 字段
| 字段 | 类型 | 必需 | 默认值 | 描述 |
|---|---|---|---|---|
name | string | 是 | — | 项目名称,用作编译产物的默认输出文件名。 |
version | string | 否 | — | 项目版本。 |
entrypoint | string | 否 | "main.vix" | 编译项目的入口文件。第三方库不得设置此项;库入口必须为 main.vix。 |
deps | array | 否 | [] | 依赖包列表。每个元素是一个依赖说明符(支持 add 命令的所有简写格式)。 |
依赖说明符格式
deps 中的每个元素使用以下简写格式之一,add 命令会将其解析为完整的 URL:
| 格式 | 示例 | 解析后的 URL |
|---|---|---|
| 裸名称(对于VTool) | pnum | github.com/vixlang/vtool-vnet |
| 裸名称(对于第三方库) | vnet | github.com/vixlang/vlib-vnet |
user/repo | vixlang/vlib-vnet | github.com/vixlang/vlib-vnet |
user.repo | fexcode.vnet | github.com/fexcode/vnet |
user.repo@branch | fexcode.vnet@master | github.com/fexcode/vnet #master |
host:user.repo | gitee.com:fexcode.vnet | gitee.com/fexcode/vnet |
@user.repo | @fexcode.vnet | gitee.com/fexcode/vnet |
示例
[project]
name = "webapp"
version = "1.0.0"
entrypoint = "app/main.vix"
deps = [
"vnet@master",
"@fexcode.vlib-html",
"vlib-json",
]