news 2026/9/24 16:14:43

create-instant-app 使用指南:用一条命令快速搭建 InstantDB 应用脚手架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
create-instant-app 使用指南:用一条命令快速搭建 InstantDB 应用脚手架
  • 后端
  • 数据库

【免费下载链接】instant

Instant is the best backend for AI-coded apps. You get auth, permissions, storage, presence, and streams — everything you need to ship apps your users will love.

项目地址:https://gitcode.com/gh_mirrors/inst/instant
点击查看免费下载

create-instant-app是 Instant 开源仓库中负责应用脚手架初始化的 CLI 工具,它让你只需执行npx create-instant-app,即可在交互式提示或命令行参数驱动下,生成接入 InstantDB(auth、权限、存储、presence、streams 等能力)的前后端项目骨架。读完本文,你将掌握该工具的全部用法(交互式流程、常用参数、非交互式一键搭建)、其脚手架实现原理(本地模板 / tiged 拉取、规则文件注入、包管理器探测),以及如何在本地开发和调试这个 CLI 本身。

快速开始:一条命令拉起 Instant 应用

create-instant-app的使用方式与众多create-*脚手架一致:无需预先安装任何全局依赖,直接通过npx调用即可(源码中通过package.jsonbin字段暴露了create-instant-app命令,见 package.json)。

npx create-instant-app

运行后工具会依次向你提问:

  1. 项目/文件夹名称:默认值为awesome-todos,输入的名称会同时作为目录名与应用名(cli.ts 中通过validateAppName校验,仅允许小写字母、数字、-_,也支持.表示使用当前目录)。
  2. 选择框架模板:默认Web: Next.js,可切换为Mobile: Expo,或展开次级选项选择 Vite React、Vite Vanilla TS、Tanstack Start、Bun + React、SolidJS、SvelteKit、Vite Vue、Vercel AI SDK 等更多模板。
  3. 为哪种 AI 工具生成规则文件:可选 Claude、Cursor、Codex、Gemini、Zed、Windsurf 或 None,默认 Claude。
  4. 连接/创建 InstantDB 应用:若未登录,可选择登录账户、创建临时应用(有效期两周)或稍后创建。

完成这些步骤后,工具会自动拉取模板、安装依赖(自动探测 npm/pnpm/yarn/bun)、初始化 git 仓库(默认开启),并把生成的APP_ID/ admin token 写入.env文件,随后打印下一步命令(通常是cd <dir>然后pnpm run dev之类),整个项目即可运行。

常用命令行参数速查

除了纯交互模式,CLI 还提供了大量参数用于跳过提问、指定模板和连接已有应用。以下参数均定义于 cli.ts,命令版本号直接复用@instantdb/version包(--version输出)。

参数说明备注
[dir]应用名称,同时也是要创建的目录名作为第一个位置参数传入
-b, --base <template>指定基础模板可选值见下方"可用模板"列表
-g, --git在新项目中创建 git 仓库默认开启
--no-git不创建 git 仓库
--expo使用 Expo 起步模板等价于-b expo
--next使用 Next.js 起步模板等价于-b next-js-app-dir
--vanilla使用 Vanilla JS 模板等价于-b vite-vanilla
--vite-react使用 Vite + React 模板等价于-b vite-react
--sv使用 SvelteKit 模板等价于-b sveltekit
--vue使用 Vue + Vite 模板等价于-b vue-vite
--python使用 Python 脚本模板等价于-b python-script
--cursor/--claude/--codex/--gemini注入对应 AI 工具的规则文件见下文"AI 规则文件"
--rules注入AGENTS.md规则文件等价于--codex
--ai基于一段自然语言提示创建 InstantDB 应用需要本机已安装 Claude Code,且会额外询问"你想创建什么"
-a, --app <app-id>关联一个已存在的 InstantDB 应用需要登录或配合--token
-t, --token <token>使用指定 admin token 关联应用--app搭配,用于未登录场景
-y, --yes使用全部默认值,跳过所有提问必须同时提供项目名,且不能与--ai同用
--temp默认创建一个临时应用不能与--app同用

几个典型的非交互式用法示例:

# 使用默认 Next.js 模板、默认配置,全自动创建 npx create-instant-app my-app --yes # 指定 Vite + React 模板并注入 Cursor 规则文件 npx create-instant-app my-app --vite-react --cursor # 关联已有应用(未登录时提供 token) npx create-instant-app my-app --app <app-id> --token <admin-token>

--yes模式下,工具会自动决定创建方式:如果检测到已登录则创建真实应用,否则创建一个临时(ephemeral)应用(见 login.ts 中tryConnectApp的分支逻辑)。临时应用有效期约两周,之后可用npx instant-cli claim认领为正式应用。

可用模板与对应环境变量

create-instant-app内置的模板清单定义在 projectBase.ts,共 13 种:

  • Web 框架类:next-js-app-dirvite-reactvite-vanillatanstack-starttanstack-start-with-tanstack-querysveltekitvue-vitesolidjs-vite
  • Mobile 类:expo
  • AI 应用类:vercel-ai-sdkai-chat
  • 其他:bun-reactpython-script

每种模板都声明了自己的APP_ID环境变量名,脚手架完成应用关联后会据此把凭据写入对应环境的.env文件:

模板环境变量名
next-js-app-dirvercel-ai-sdkai-chatNEXT_PUBLIC_INSTANT_APP_ID
vite-reactvite-vanillatanstack-startsolidjs-vitesveltekitvue-viteVITE_INSTANT_APP_ID
expoEXPO_PUBLIC_INSTANT_APP_ID
bun-reactBUN_PUBLIC_INSTANT_APP_ID
python-scriptINSTANT_APP_ID

此外,projectBase.ts还定义了每个模板的后端配置文件(backend config):普通前端模板只有一个客户端init配置(src/lib/db.ts,启用 websocket),而tanstack-startvercel-ai-sdkai-chat等模板还额外包含一个 admin 配置(src/lib/adminDb.ts,初始化为initinitAdmin,不启用 websocket),用于服务端管理操作。python-script模板则对应main.py中的 Python 后端配置。

脚手架生成流程与底层原理

了解完用法后,再来看它内部究竟做了什么。入口是 index.ts,整个流程如下:

  1. 解析参数与提问runCli()(cli.ts)用commander解析参数,用@clack/prompts渲染交互式提问;支持INSTANT_CLI_API_URI/INSTANT_CLI_DASH_URI环境变量覆盖后端地址(backendConfig.ts)。

  2. 拉取模板代码scaffoldBase()(scaffold.ts)按优先级选择三种方式:

    • dev:设置了INSTANT_CLI_DEVINSTANT_REPO_FOLDER时,直接从本地仓库的examples/<template>目录复制(遵循.gitignore规则,见copyRespectingGitignore);
    • bundled-template:若包内template/base/<template>目录存在则直接复制(生产发布时模板随 npm 包分发,同时会把_gitignore改回.gitignore);
    • tiged:以上都不满足时,用 tiged(degit 的维护分支)以 tar 模式从instantdb/instant/examples/<template>拉取对应示例子目录。

    脚手架还会处理目录冲突(空目录继续、非空目录询问"中止或清空")、删除多余的锁文件、为 Expo 追加.npmrcnode-linker=hoisted),并把app.jsonapp/_layout.tsx中的模板占位名替换为你的应用名。

  3. 注入 AI 规则文件addRuleFiles()(ruleFiles.ts)将 template/rules/AGENTS.md 复制到项目根目录,文件名按所选 AI 工具映射:Claude →CLAUDE.md,Gemini →GEMINI.md,Cursor / Codex / Zed / Windsurf →AGENTS.md

  4. 连接或创建应用tryConnectApp()(login.ts)根据登录状态与参数执行三种策略之一:创建真实应用(create,POST/dash/apps)、导入已有应用(import,通过--app/--token或登录态校验访问权限)、创建临时应用(ephemeral,POST/dash/apps/ephemeral,附带一套默认宽松的 permissions 规则)。未登录时会弹出选择菜单,选择登录则通过/dash/cli/auth/register获取 ticket 并打开浏览器完成授权,轮询/dash/cli/auth/check等待结果(最长约 120 秒)。

  5. 写凭据、装依赖、初始化 git:把appId/adminToken写入.envapplyEnvFile);Python 模板改写pyproject.tomlname字段,其余模板更新package.jsonnamepackageManager字段;随后自动执行包管理器安装(installPackages.ts),并在默认开启时git init

  6. 输出启动指引:按模板类型打印下一步命令;若使用了--ai,还会调用 Claude Code 基于你的提示词在项目内继续生成应用逻辑(claude.ts)。

值得注意的是包管理器自动探测逻辑(getUserPkgManager.ts):通过读取npm_config_user_agent环境变量判断你调用npx时使用的是 yarn、pnpm 还是 bun,否则回退到 npm;唯一例外是bun-react模板强制使用 bun。这意味着无论你惯用哪种工具链,脚手架都会用同一套包管理器完成安装。

应用名校验规则

应用名需要同时满足 npm 包名规范,校验逻辑在 validateAppName.ts:

/^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/

即:名称只能包含小写字母、数字、-_.,可选支持 npm scope 前缀(@org/name形式)。parseNameAndPath会从输入中拆分出 scoped 应用名与目录路径,例如@acme/todo-app会被解析为应用名@acme/todo-app、目录todo-app;传入.时则使用当前目录名作为应用名。无效名称会直接报错退出,交互模式下则提示重新输入。

本地开发与调试这个 CLI

如果你想基于当前仓库修改或调试create-instant-app本身,仓库提供了完整的开发工作流(见 package.json):

# 安装依赖(在仓库根目录执行 pnpm install 后) pnpm run build # 构建:tsup 打包,构建前会自动执行 copy-examples pnpm run dev # 开发模式:tsup --watch 监听重建

构建产物为dist/index.jspackage.jsonexportsbin均指向它)。开发时可通过pnpm link --global把当前包软链接到全局,之后即可在任何目录直接使用create-instant-app命令(等价于npx create-instant-app的本地版):

pnpm link --global create-instant-app # 任意目录下直接使用

调试完成后解除链接:

pnpm uninstall create-instant-app --global

本地开发时若希望跳过从 GitHub 拉取模板(加快迭代、便于离线),可以设置INSTANT_CLI_DEVINSTANT_REPO_FOLDER指向仓库的 examples 目录,脚手架便会直接从本地examples/<template>复制代码;若只设置了INSTANT_CLI_DEV而未设置INSTANT_REPO_FOLDER,工具会打印警告并回退到从远程拉取。

仓库还提供了单元测试与端到端测试保障(pnpm testpnpm test:e2e),其中 create-instant-app.e2e.test.ts 覆盖了从执行 CLI 到项目生成的完整链路,是理解各参数实际行为的最佳参考。

小结

create-instant-app的价值在于把"选模板 → 拉代码 → 配环境变量 → 关联/创建 InstantDB 应用 → 装依赖 → 初始化 git"这一整套初始化动作收敛为一条命令:日常使用只需npx create-instant-app跟随引导即可;CI 或脚本化场景可使用--yes等参数全自动生成;需要接入已有数据时用--app/--token关联;而--ai模式则把脚手架与 Claude Code 结合,实现"一句话生成 InstantDB 应用"。配合本文对 cli.ts、scaffold.ts、login.ts 等核心源码的拆解,你既可以熟练使用它,也可以在需要时对它进行本地开发和二次定制。

  • 后端
  • 数据库

【免费下载链接】instant

Instant is the best backend for AI-coded apps. You get auth, permissions, storage, presence, and streams — everything you need to ship apps your users will love.

项目地址:https://gitcode.com/gh_mirrors/inst/instant
点击查看免费下载
上一篇:抖音平台反自动化检测的三层架构设计与突破方案
下一篇:抖音API突破实战:5个核心技巧模拟真实浏览器行为

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 16:10:47

Flet 中 ListTileStyle 详解:掌控 ListTile 与 Drawer 的标题排版风格

前端跨平台桌面应用移动开发 【免费下载链接】flet Build realtime web, mobile and desktop apps in Python only. No frontend experience required. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/fl/flet 点击查看 免费下载 导读 ListTileStyle 是 Flet 中用于决…

作者头像 李华
网站建设 2026/9/24 16:09:14

Jev专题:JevLite用Qwen3-4B复现Jev,每次决策64.5毫秒

&#xff08;1&#xff09;《三年面试五年模拟》AIGC / LLM / AI Agent 算法工程师与开发工程师求职面试秘籍&#xff0c;独家资源见 WeThinkIn/AIGC-Interview-Book&#xff0c;欢迎 Star&#xff01; &#xff08;2&#xff09;AIGC / LLM / AI Agent 算法岗与开发岗求职面试…

作者头像 李华
网站建设 2026/9/24 16:08:24

Python个人主页项目-4.前端渲染模板

从需求分析到功能实现,旨在帮助用户建立一个易于管理、兼具展示和导航功能的主页模板。项目分阶段进行设计,涵盖需求分析、项目初始化、环境配置、后端数据管理及前端渲染等关键步骤,并通过模块化的方法确保各功能的清晰划分与独立性。该模板的设计不仅适合技术开发者,也对…

作者头像 李华