Skip to content

包清单(Package Manifest)

包清单文件 tooth.json 用于定义一个 lip 包。

TIP

你可以在任意字符串字段中使用其他字段的变量:用 {{}} 包裹变量名,例如 {{version}}{{info.name}}。例如,{{version}} 会被替换为 version 字段的值。

示例

json
{
  "format_version": 3,
  "format_uuid": "289f771f-2c9a-4d73-9f3f-8492495a924d",
  "tooth": "github.com/user/repo",
  "version": "1.0.0",
  "info": {
    "name": "My Package",
    "description": "A short description",
    "tags": ["tool", "utility"],
    "avatar_url": "https://example.com/avatar.png"
  },
  "variants": [
    {
      "label": "",
      "platform": "win-x64",
      "dependencies": {
        "github.com/other/package": ">=1.0.0"
      },
      "assets": [
        {
          "type": "zip",
          "urls": ["https://example.com/release.zip"],
          "placements": [
            {
              "type": "dir",
              "src": "bin/",
              "dest": "bin/"
            }
          ]
        }
      ],
      "preserve_files": ["config/*.json"],
      "remove_files": ["temp/"],
      "scripts": {
        "pre_install": ["echo pre-install"],
        "post_install": ["echo post-install"],
        "pre_uninstall": ["echo pre-uninstall"],
        "post_uninstall": ["echo post-uninstall"]
      }
    }
  ]
}

字段

顶层

字段类型必填说明
format_versionint必须为 3
format_uuidstring必须为 "289f771f-2c9a-4d73-9f3f-8492495a924d"
toothstring包路径,必须是合法的 Go module path
versionstring包版本,必须是合法的语义化版本
infoobject包元数据。见 Info
variantsarray包变体。见 Variant

Info

字段类型默认值说明
namestring""显示名称。
descriptionstring""简短描述。
tagsstring[][]标签。每个标签必须匹配 ^[a-z0-9-]+(:[a-z0-9-]+)?$
avatar_urlstringnull头像图片 URL。

Variant

变体用于定义平台相关或带标签的包配置。解析变体时,lip 会合并 labelplatform 匹配的所有变体。

字段类型默认值说明
labelstring""变体标签。
platformstring""目标平台(.NET RID)。为空时匹配全部,支持 glob。
dependenciesobject{}包 ID 到 semver 范围 的映射。
assetsarray[]资源定义。见 Asset
preserve_filesstring[][]卸载时保留文件的 glob 模式。
remove_filesstring[][]卸载时额外删除文件的 glob 模式。
scriptsobject{}生命周期脚本。见 Scripts

Asset

字段类型必填说明
typestring压缩包类型:"self""tar""tgz""uncompressed""zip"
urlsstring[]下载 URL 列表。
placementsarray文件放置规则。见 Placement

Placement

字段类型必填说明
typestring"file""dir"
srcstring压缩包内源路径。
deststring相对工作区的目标路径。不得为绝对路径、根路径或包含 ..

Scripts

字段类型默认值说明
pre_installstring[][]安装前执行的命令。
installstring[][]post_install 的别名。包文件放置后执行。
post_installstring[][]安装后执行的命令。
pre_uninstallstring[][]卸载前执行的命令。
uninstallstring[][]pre_uninstall 的别名。删除已安装文件前执行。
post_uninstallstring[][]卸载后执行的命令。

在新清单中,推荐使用 post_installpre_uninstallinstalluninstall 作为兼容别名仍受支持,若两种形式同时存在,lip 会在对应阶段执行两组命令。