@devdogsuga/ 脱口秀
用于 DevDogsUGA 校验的 CLI 撰稿人: 会话的真正工具 上面有菜单 支票CI运行.
pnpm devtools # no arguments: menu of interactive commands
pnpm devtools setup # prepare a checkout, then print the database next steps
pnpm devtools doctor # first stop: machine, tier, stack, types, buckets, seeded data
pnpm devtools supabase start # boot Supabase on this machine
pnpm devtools jobs run # choose a background job (a cron sync or a Workflow) and run it
pnpm devtools jobs list # every job, its schedule, and schedules that never fire
pnpm devtools jobs serve # keep an app-scoped Workflow runtime open
pnpm devtools supabase db push # the real tool, with the tier's --db-url filled in
pnpm devtools wrangler|drizzle-kit|psql …
pnpm devtools apply-migrations # db push, then asks about types:db
pnpm devtools restart-stack|new-migration|push-config
cron 财务报告和审定财务报表 workflows 的别名 jobs 将它缩小为一种:
cron run 实值 jobs run --kind sync (快速同步,工人克龙路线)和
workflows run 实值 jobs run --kind long-running (云浮活泼活泼流.
supabase 添加 --db-url 或者说 --project-ref 从会话的层次,除非您
通过 --local, (中文(简体) ), --linked, (中文(简体) ), --db-url 或者说 --project-ref 你自己来 从来没有
返回到链接的项目, 并且从未添加 --yes。每次运行都会打印
确切的命令之后.
反对 staging 或者说 production,每个命令运行前都会询问一次
(单位:千美元)--yes 回答这个问题。 没有终点站,或者 CI=true,没有菜单和没有
横幅,必须指定等级(--tier 或者说 DEPLOY_ENV),确认需要
--yes,以及 --no-env 跳过装入内存文件.
pnpm devtools script 选择一个软件包,然后选择其脚本(或脚本)
然后一个有它的包) 然后运行 pnpm -F <package> run <script>· ;
pnpm devtools script <package> <script> 跳过问题.
--dry-run 显示什么会运行和运行什么。 工具调用打印为
Would run: <command>; 不使用干运行模式生成或写入的命令
并打印自己的命令行。 传出和
run,工具拥有每面旗帜 之后的名称,所以把我们的第一:
pnpm devtools --dry-run supabase db push。 。 。 .
当运行失败时, devtools 会写日志(~/.local/state/devdogs/logs,或
DEVTOOLS_LOG_DIR)与命令,版本,运行的工具命令以及
devtools自己的输出,秘密被修改,并打印它的路径和哨兵
如果遥测发送一个, 事件 id 。 附加在#tech-support消息上.
check migrations|env|workers|scripts 是CI在检查中运行的
替换 DevDogsUGA 的 packages/repo-checks) (中文(简体) ). 他们读的退票和
没有其他的: 没有层次, 没有环境文件 . pnpm devtools --help --json 打印每个
命令路径(已标记的),用于检查页面显示内容的工具.
这个 db 财务报告和审定财务报表 cf 名称空间已消失 : supabase, (中文(简体) ), wrangler, (中文(简体) ), drizzle-kit
财务报告和审定财务报表 psql 加包脚本(types:db, (中文(简体) ), types:drizzle, (中文(简体) ), types:cf, (中文(简体) ),
preview替换它们。 堕落者 run 化名也消失了(TASK-404):
pnpm -r run <task> 运行每个软件包中的任务 pnpm -F <app> <task>
在一个。 退休人员 db, (中文(简体) ), cf, (中文(简体) ), gen, (中文(简体) ), emails, (中文(简体) ), grant-root, (中文(简体) ), preset 财务报告和审定财务报表
run 姓名在他们去的地方被拒绝preset apply-migrations 现在
apply-migrations,等等). 产品储存库内(下方) db 实值
产品本身的指令.
总是需要制作机密的东西不在这里. deploy, (中文(简体) ), env pull|push|audit 财务报告和审定财务报表 planner 包含 @devdogsuga/backstage
(单位:千美元)pnpm backstage … 后台克隆;不再出版); devtools env 保留 init, (中文(简体) ), example 财务报告和审定财务报表 reset,以及 bw 不见了(后台) env
以示警告。 CI电话 backstage 直接说.
菜单来自 argv parser 所行的同一命令树, 所以
没有任何第二个名单不步而入 --help 各级
而不是这里的桌子。 它的第一个屏幕列出每个交互式命令
以纯英语标题(“重新启动本地Supabase”)命名,命令为
旁边的类型( e)restart-stack) (中文(简体) ).
哪个重播
两个CLI都来自DevDogsUGA的退赛或后台的出场(package.json
名称 devdogs-monorepo 或者说 backstage; 版式代码为
packages/cli-core/src/repo/layout.ts从后台,DevDogsUGA是
<root>/devdogsuga: 与本地双胞胎克隆的连接
(单位:千美元)pnpm devdogsuga),在CI的被钉住的SHA进行真正的检查.
| 什麽 | 何处 |
|---|---|
supabase/ (CLI cwd, 配置, 迁移, 种子, 活字形, 活字形外观), database.types.ts, (中文(简体) ), docs/ | DevDogsUGA 的根 (英语:devdogsuga/ 从后台) |
workers.json, (中文(简体) ), .github/ | 您所在的回收站; DevDogsUGA 无人管理工人 |
应用程序( e)cron, (中文(简体) ), run, (中文(简体) ), deploy <app>,内存表) | 加上DevDogsUGA的保险 apps/;在名称相冲突时,你获胜了 |
.env, (中文(简体) ), .env.<tier>, (中文(简体) ), .env.generated | 您所在的还原根; deploy write-env 和本地堆栈 .env.generated 也写出 DevDogsUGA 的根,因为制表器会读取自己的 repo 根. env pull|push|reset 只碰你的根头. |
pnpm exec supabase 财务报告和审定财务报表 wrangler 运行在DevDogsUGA的工作空间,所以
devdogsuga/ 需要自己的钱 pnpm install 在使用它们的命令之前.
产品存储器
带有一个 devtools.config.json 其根源是一个 产品 (DogDays,DogPack):脱衣舞剧
读取文件并服务一个较小的指令集,不需要分级,没有env 注册和工作空间.
两种产品都带有 package.json 谁 devtools 脚本是 pnpm dlx 运行已公布的 CLI,所以
复选内 :
pnpm devtools setup
其他任何地方,一次性表格是 pnpm dlx @devdogsuga/devtools@next setup。 。 。 .
| 命令 | 它会做什么 |
|---|---|
setup [--local | --hosted] | 写作 .env 从 .env.example; 启动 Docker 堆栈( 或占用您自己主机项目的 URL、 密钥和会话集) DB_URL(三); db sync; 类型; 然后 oauth。 。 。 . |
db sync [--rebuild] [--strict] [--yes] | 使您的开发数据库匹配 supabase/schemas/: 重现它所损失的东西, 应用你所提取的图案更改, 警告额外( )--strict 拒绝改变不同的定义。 永远不要重放它; --rebuild 是明确的重设(仅在当地),然后再次登录. |
db types [--download] [--pack <file>] | 从数据库中生成 TypeScript 类型或 Dart 模型, 或下载为您的精确计划散列而构建的 CI . --pack 写入释放资产(CI). |
db hash | 打印给生成类型命名的图案散列. |
dev-data [--member <email|id>] | 运行产品 devData.file SQL,在一次交易中,作为最后与DevDogs签约的成员. 拒绝产品生产项目. |
oauth | 在您的数据库上"Sign with DevDogs"(与平台的同名向导). |
doctor | Docker 被钉住的Supabase CLI, .env,数据库,类型是否与计划相符. |
supabase <args> | 产品针口版本的Supabase CLI. |
check env-example | CI: 爱奇艺 .env.example 仅持有公共价值(在应用程序中是船舶). |
简而言之,它是如何运作的:
- 史克马斯,不是移民. 贡献者编辑
supabase/schemas/*.sql。 。 。 .db sync询问 Supabase CLI (单位:千美元)db schema declarative sync --no-apply让他们面对一个被羞辱的人supabase/migrations/那个 记录数据库应用过的东西,将差异写成新的迁移,并应用它 (单位:千美元)migration up --local,或db push --db-url(为主办项目供资) 丢弃表格或列的更改 需求--yes然后它会重新产生这些类型(当它们毫无变化,而且它们都是时空的时空时,它就离开它们). 在主机项目上,一台没有记录的机器(第二台笔记本电脑,被删除)supabase/migrations/(第一个) 从项目本身的历史表中恢复(migration fetch --db-url),所以diff没有被取出 对空数据库。 该记录属于一个数据库.devtools/record.json注意哪些,哪些 它所应用的文件 : 保留另一个目标的记录, 并获取数据库本身的历史, a 已写入但从未应用的移入正在等待,尚未应用;它将在下一次同步时应用,与--yes问个问题. - 一个成员改变了什么. 重命名的一列( 缺少这里, 旁边还有同一种类型的) 是
拒绝, 不重建为空 。 对存在事物的特权差异作为什么的GRAT应用
supabase/schemas赠款和报告;除此以外,其他特权不得被取走。 函数以 他们的论证类型, 和缺失的超载 被重建 除了成员自己的. - 类型从来没有被承诺.
db types将它们写入配置中的路径, 这条配置是 git- ignored . 化学式散列覆盖了分类的化学式路径,它们的LF正态内容和生成器版本(即: 被绑定的 CLI, 或 supadart; CI 上传 a<product>-types-<hash>.tgz资产至滚动资产generated-types释放,以及db types --download去拿一个给你的大麻 没有匹配: 它说是这样的,并点到setup。 。 。 . - 两个入室文件.
.env由应用程序公开阅读(flutter run --dart-define-from-file=.env(三);.env.tooling被点缀并持有DB_URL, (中文(简体) ),SECRET_KEY,目标(local或者说hosted)和 "与 DevDogs 签约"客户端 ID 和 秘密 (OAUTH_CLIENT_ID, (中文(简体) ),OAUTH_CLIENT_SECRET,哪个db sync --rebuild登记簿重新登记)。 什么也没有写给.env.local在产品回放.setup(两个文件)和oauth(工具文件)检查它们是否被 git-ignored 并添加到 repo 中.gitignore当它们不是时(Flutter的默认忽略文件而忽略它们). - 被钉住的CLI. 脱衣舞
supabase内node_modules/.bin当其版本是 针,否则运行pnpm dlx supabase@<pin>(单位:千美元)npx --yes supabase@<pin>只有在pnpm没有在PATH上). - 主办项目 需要自定义 OAuth 提供者打开, 并允许应用程序的返回地址 .
setup两者均通过管理 API 当SUPABASE_ACCESS_TOKEN已设定,并打印二者 仪表板没有步骤. - 无终端.
setup带DEVTOOLS_SUPABASE_URL, (中文(简体) ),DEVTOOLS_SUPABASE_PUBLISHABLE_KEY, (中文(简体) ),DEVTOOLS_SUPABASE_SECRET_KEY财务报告和审定财务报表DEVTOOLS_DB_URL并登记从DEVDOGS_OAUTH_CLIENT_ID编号 :DEVDOGS_OAUTH_CLIENT_SECRET而不是打开浏览器.
// devtools.config.json
{
"product": "dogpack", // lowercase id; names the generated-types assets
"name": "DogPack",
"supabase": {
"version": "2.117.0", // the CLI pin; part of the types hash
"schemas": ["dogpack"], // schemas the generated types cover
// "dir": "supabase"
},
"types": { "kind": "supadart", "out": "lib/generated" }, // or { "kind": "typescript", "out": "src/database.types.ts" }
"generatedTypes": { "repo": "DevDogsUGA/DogPack" }, // where `db types --download` looks
"oauth": { "redirectUris": ["dev.dogpack://login-callback"] },
"devData": { "file": "supabase/dev-data.sql" }, // reads current_setting('devtools.member_id')
"production": { "projects": ["dogpack", "<project ref>"] }, // BOTH the vanity name and the ref: a Postgres URL only ever carries the ref
"runHint": "flutter run --dart-define-from-file=.env",
}
密码在 src/product/· ; src/active.ts 摘取树 src/launch.ts 切换到它之前
等级解决.
遥测披露
CLI向哨兵报告自己的坠毁事故(见: src/telemetry.ts),在
默认, 在两者中 pnpm devtools 财务报告和审定财务报表 devtools-ci数字 :
- 什麽: 只发现未发现错误—— 捕获的例外加 a
command标签 命名丢弃的子命令(例如).doctor, (中文(简体) ),deploy platform) (中文(简体) ). 任何关于成功跑步的信息都不会被发送. - 何时: 每次运行, 除非
DEVTOOLS_TELEMETRY=0设置(每台机器或 )——或该建筑没有DSN. DSN是在什么时候烤的 后台的publish.yaml从 repo 创建软件包DEVTOOLS_SENTRY_DSN动作变量,所以只发布构建报告; 当地建筑和pnpm pack柏油丸不从. 任何条件都意味着 没有Sentry.init()呼叫发生: 没有网络请求, 没有控制台输出 . - 什么被擦过: 这个 CLI 触及本地
.env文件,所以每个事件 路过@devdogsuga/sdk/telemetry在离开过程前共享洗涤器 文件路径已缩小为碱名、 已编辑的电子邮件地址和 从信件、面包屑和 堆栈框。 见packages/sdk/src/telemetry/scrub.ts到底为什么 洗涤器匹配.
版式
src/ 每个域( kebab- case) 是一个文件夹 。 一个域在
catalog.ts (惰性数据)并拥有其处理器在 commands.ts· ; src/catalog.ts
树作和 src/cli.ts 将顶级命令名称映射给处理者。 这个
共享核心(检索和对等加载、ui、遥测、分层和嵌入)
分类、帮助和菜单) @devdogsuga/cli-core 软件包,
哪个 tsdown 内入 dist/。只有捆绑:其他
导入保留外部, 必须在此包中声明 dependencies 或者说
peerDependencies,而建造失败 当一个人不是
(单位:千美元)../../scripts/check-bundle-imports.mjs 读取已建的输出).