开始使用

本地开发编排

用 one dev 一次性起所有项目的 dev 进程。命令存哪里、什么时候只跑单项目、和 one run 怎么配合。

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

one dev 一次起所有项目的本地 dev 进程。命令读自 one.manifest.jsonprojects[].domains.dev.command,由内置 supervisor 跑——不需要安装任何第三方工具

1. dev 命令在哪里

one add <template> 时自动按模板技术栈推导出 dev 命令并写进 manifest:

{
  "projects": [
    {
      "name": "api",
      "relativeDir": "services/api",
      "toolchain": "node",
      "domains": {
        "dev": { "command": "pnpm run start:dev" }
      }
    },
    {
      "name": "web",
      "relativeDir": "apps/web",
      "toolchain": "node",
      "domains": {
        "dev": { "command": "pnpm run dev" }
      }
    }
  ]
}

推导顺序:

  • Node 项目:scripts.devscripts.start:dev(NestJS 约定)→ scripts.start(Expo / 通用)
  • Go 项目:go run ./cmd/server
  • 都对不上:空字符串,该 project 不参与 one dev

想改 dev 命令?直接编辑这一行。不会自动跟 package.json 同步——manifest 是唯一来源。

2. 跑全部

one dev

内置 supervisor 把每个项目并行启动,stdout/stderr 按行带项目名前缀(TTY 下还会上色)。Ctrl-C 干净杀掉整组——包括 npm / node fork 出来的孙进程(用 POSIX 进程组实现)。

3. 只跑一个项目

one dev -p api
one dev -p apps/web        # selector 也接受 relativeDir

只起 selector 匹配的那个项目。适合:

  • 光重启 api、其他 dev 在另一个 terminal 继续跑
  • 只需要部分栈、避免端口冲突时

4. dry-run 看会执行什么

one dev --dry-run

打印每个项目即将执行的命令,不实际启进程。

5. 跟 one run 配合

one dev 每个项目的命令实际是通过 one run -p <reldir> -- <command> 启的——这意味着 one env 的环境变量会自动注入到 dev 进程(dotenv 或 Infisical,看工作区的 env backend 设置)。不需要在模板的 dev 命令里再套 one run

要单独启某个项目并自己控制注入,直接用 one run -p <name> 也行;one dev 是编排器,不是必选。

常见错误

错误码现象修法
SUBPROJECT_NOT_FOUND工作区没声明 dev 命令的项目;或 -p 指错one -o json 看项目列表;编辑 manifest 的 projects[].domains.dev.command

完整码表:错误码大全

下一步