Appearance
中心仓元数据规格
cjpm bundle 命令会生成待打包模块的元数据和索引条目。
元数据记录了待打包模块的一些关键信息,用于仓库端入库检查和网页端制品展示。元数据规格如下:
json
{
"organization": "cangjie", // 组织名,为空则为无组织
"name": "demo", // 模块名
"version": "1.0.0", // 版本号
"cjc-version": "1.0.0", // 仓颉 SDK 版本号
"description": "demo for cangjie central repository", // 模块描述
"artifact-type": "src", // 制品包类型,固定为源码包 src
"executable": true, // 是否可以编译成可执行程序,cjpm.toml 中 package.output-type == executable 时该值为 true,否则为 false
"authors": ["Tom", "Joan"], // 作者 ID 列表
"repository": "https://github.com/xxx", // 制品代码仓
"homepage": "https://xxx.com", // 制品主页
"documentation": "https://xxx.com/docs", // 制品文档页
"tag": ["cangjie", "cjpm"], // 制品标签
"category": ["Network"], // 制品分类
"license": ["Apache-2.0"], // 协议列表
"index": { ... }, // 制品包索引
"meta-version": 1 // 元数据规格版本号
}
其中,制品包索引记录了制品包的依赖信息,cjpm 可利用索引进行依赖解析。制品包索引规格如下:
json
{
"organization": "cangjie", // 组织名,为空则为无组织
"name": "demo", // 模块名
"version": "1.0.0", // 版本号
"cjc-version": "1.0.0", // 仓颉 SDK 版本号
"dependencies": [{ // 源码依赖项
"name": "dep1", // 依赖项模块名
"require": "1.1.0", // 依赖项版本需求
"target": null, // 平台隔离标识,target == null 表示该依赖项不区分平台
"type": null, // 编译模式标识,type == null 表示该依赖项不区分编译模式
"output-type": null // 编译产物类型表示, output-type == null 表示该依赖项的编译产物遵循对应源码模块内 package.output-type 的取值
}, {
"name": "org::dep2", // 组织内依赖项模块名
"require": "[1.0.0, 2.0.0)", // 依赖项版本需求
"target": "x86_64-unknown-linux-gnu", // 平台隔离标识,target 有取值表示该依赖项仅适用于对应平台
"type": "debug", // 编译模式标识,type == debug/release 表示该依赖项仅适用于 debug(-g) / 非 debug 编译模式
"output-type": "static" // 编译产物类型表示, output-type == static/dynamic 表示该依赖项对应模块将被编译为静态库 / 动态库
}],
"test-dependencies": [], // 测试依赖项,与源码依赖项格式一致
"script-dependencies": [], // 构建脚本依赖项,与源码依赖项格式一致
"sha256sum": "...", // 对应制品包的 SHA-256 校验码,用于验证制品包完整性
"yanked": false, // 制品包弃用表示,yanked == true 表示该制品包已被弃用
"index-version": 1 // 索引规格版本号
}