开始使用

one.manifest.json 是什么

工作区的项目登记表、环境变量来源和本地开发配置。

约 6 分钟3 天前更新在 GitHub 编辑

每个 One CLI 工作区根目录都有 one.manifest.json。它记录工作区身份、项目路径、工具链、环境和环境变量来源,供命令定位项目并选择执行方式。

示例

{
  "version": 1,
  "workspace": { "id": "demo-app-2bb61e", "name": "demo-app" },
  "environments": {
    "names": ["dev", "preview", "prod"],
    "default": "dev"
  },
  "domains": { "env": { "kind": "dotenv" } },
  "projects": [
    {
      "name": "web",
      "templateId": "react-spa",
      "relativeDir": "apps/web",
      "toolchain": "node",
      "buildVersion": "0.1.0",
      "packageManager": "pnpm",
      "domains": {
        "env": { "path": ".env", "inherits": true, "keys": ["API_URL"] },
        "dev": { "command": "pnpm dev" }
      }
    },
    {
      "name": "api",
      "templateId": "go-api",
      "relativeDir": "services/api",
      "toolchain": "go",
      "domains": { "dev": { "command": "go run ./cmd/server" } }
    }
  ]
}

实际文件使用严格 JSON,不接受注释和未知字段。

主要字段

字段含义
versionManifest 版本,当前为 1
workspace稳定的工作区 id 与名称 name
environments环境名称和默认环境
domains.env工作区环境变量来源:dotenv 或 infisical,可附带后端专属 config
projects[]项目名称、路径、模板、工具链,可选的 packageManager 和 buildVersion
projects[].domains.env项目覆盖项:path、inherits、disabled 和变量名 keys;后端继承工作区
projects[].domains.devone dev 执行的 command

Infisical 的 domains.env.config 可以包含 projectId、projectName、rootPath 和 keys。Manifest 不保存变量值或本机 Profile 名;凭据保存在本机 Profile,变量值交给 dotenv 或 Infisical。

谁会修改它

操作修改内容
one create创建工作区身份、默认环境、环境来源和空项目列表
one add登记项目及其开发命令
one env set登记变量名;Infisical 可初始化项目绑定
one env switch修改环境变量来源
one serve用户审阅后,经过 revision 校验保存项目配置或环境来源变更

one build 按工具链选择项目构建命令:Node 项目使用包脚本,Go 项目使用 Taskfile.yml。CI 通过 one ci 单独管理。

手动修改

重命名或删除项目时,应同时维护登记信息和磁盘目录。项目开发脚本变化后,更新 projects[].domains.dev.command。目录约定保持 apps/、services/、packages/。

如果清单与磁盘不一致,检查登记路径,恢复缺少的项目文件或修正登记项。业务变量值、依赖、缓存和构建产物不应写入 Manifest。

已移除的部署配置

deploy 和 container 域已下线。清单中仍有这些字段时返回 MANIFEST_INVALID,并提示手动删除对应字段。CLI 不提供迁移,也不会清理已有 Dockerfile、平台配置或 CI 文件。

无效 JSON 或未知字段同样返回 MANIFEST_INVALID。详见错误码。