如何使用 spacetime dev 创建 SpacetimeDB 项目并开启热重载开发
2026/9/13 14:04:42 网站建设 项目流程

如何使用 spacetime dev 创建 SpacetimeDB 项目并开启热重载开发

【免费下载链接】SpacetimeDBDevelopment at the speed of light项目地址: https://gitcode.com/GitHub_Trending/sp/SpacetimeDB

如果你要开发一个 SpacetimeDB 数据库模块,并希望保存代码后模块能自动重新构建、重新发布,可以使用spacetime dev命令。它是一个交互式命令,会引导你完成项目创建(项目名、项目路径、客户端类型),随后进入开发模式:本地启动 SpacetimeDB 服务器、创建数据库、构建并发布模块,并持续监视源码文件变化。前提是已经安装了 SpacetimeDB CLI,安装方式见仓库中的 Getting Started 文档 docs/docs/00100-intro/00100-getting-started/00100-getting-started.md。

需要留意:文档明确标注spacetime dev目前是 unstable 命令,未来可能变化。

执行前需要准备什么

  1. 已安装spacetimeCLI(文档要求的第一步)。
  2. 如果后续命令需要登录,SpacetimeDB 使用 GitHub 或 Google 登录认证。按 Getting Started 文档,可以运行spacetime login,它会打开浏览器让你选择 GitHub 或 Google 登录。文档同时说明:如果跳过这一步,需要登录的命令(如spacetime publish)在执行时会提示你登录——而spacetime dev的工作流包含自动 publish,所以提前登录可以避免中途被打断。

用 spacetime dev 创建项目并进入热重载开发

在一个没有已有 SpacetimeDB 项目的终端目录中运行:

spacetime dev

当前目录找不到 SpacetimeDB 项目时,命令会引导你完成三步首次设置:

  1. 项目名:输入项目名,例如my-project
  2. 项目路径:选择项目文件的创建位置,默认是./<project-name>
  3. 客户端类型,三种选择:
    • React:创建带 TypeScript 服务模块的 React 全栈 Web 应用,客户端与服务器都预配置了热重载,文档标注这是 Web 应用的推荐选择。
    • Use Template:从内置模板中选择,或用owner/repo形式 / git URL 克隆一个已有仓库。内置模板包括:
      • basic-ts— 基础 TypeScript 客户端与服务端骨架
      • basic-cs— 基础 C# 客户端与服务端骨架
      • basic-rs— 基础 Rust 客户端与服务端骨架
      • basic-cpp— 基础 C++ 服务端骨架
      • react-ts— React Web 应用 + TypeScript 服务器
      • chat-console-rs/chat-console-cs/chat-react-ts— 完整的聊天示例实现(Rust、C#、TypeScript 各一套)
    • None:只创建服务模块,不带客户端代码。需要再选择服务端语言:TypeScript、Rust、C# 或 C++。服务端代码会创建在项目的spacetimedb/子目录中。

完成设置后进入开发模式,文档列出的行为如下:

  • 启动本地 SpacetimeDB 服务器
  • 创建一个新的数据库
  • 构建并发布模块到该数据库
  • 监视源码文件变化
  • 你保存改动时自动重新构建并重新发布
  • 如果配置了客户端开发服务器,则一并运行它

文档还说明,setup 完成后数据库将可用,地址为 maincloud.spacetimedb.com。

客户端开发服务器如何被拉起

spacetime dev可以自动运行客户端的开发服务器(比如 React 前端),行为由项目根目录的spacetime.json配置:

{ "dev": { "run": "npm run dev" } }

客户端命令有四种来源,优先级上 CLI 参数会覆盖配置:

  • 从项目文件自动检测(package.jsonCargo.toml.csproj
  • spacetime.json中配置
  • 用 CLI 参数覆盖:spacetime dev --run "yarn dev"
  • 完全禁用客户端、只跑服务模块:spacetime dev --server-only

用客户端模板初始化项目时,会按项目类型自动在spacetime.json中写好默认客户端命令。

如何确认已进入热重载开发

判断依据是文档中列出的行为是否依次发生:命令行显示本地服务器启动、数据库创建、模块构建并发布;之后你修改spacetimedb/下的模块代码并保存,spacetime dev会自动重新构建、重新发布,无需手动执行构建命令。如果配置了客户端命令,客户端开发服务器也应同时运行。

再次进入开发时不需要重复设置:在已包含spacetimedb/目录的项目目录中直接运行spacetime dev,命令会跳过 setup,直接连接数据库并进入文件监视状态。

此外,CLI 参考文档(docs/docs/00300-resources/00200-reference/00100-cli-reference/00100-cli-reference.md)给出的用法是spacetime dev [OPTIONS] [database],其中<DATABASE>是可选的位置参数,指定要发布到的数据库名/身份,不提供时会提示输入;--template参数可用模板 ID 或 GitHub 仓库(owner/repo或 URL)完成项目初始化,--skip-publish--skip-generate分别跳过发布与生成步骤。

初始化后的项目长什么样

以 TypeScript 项目为例(文档示例):

my-project/ ├── spacetimedb/ # Server module code │ ├── package.json │ ├── tsconfig.json │ └── src/ │ └── index.ts ├── src/ # Client code │ └── module_bindings/ # Generated client bindings ├── package.json ├── tsconfig.json ├── spacetime.json # SpacetimeDB configuration └── README.md

Rust、C#、C++ 项目的结构类似:服务端模块都在spacetimedb/下(Rust 为Cargo.toml+src/lib.rs,C# 为StdbModule.csproj+Lib.cs,C++ 为CMakeLists.txt+src/lib.cpp),客户端绑定生成在src/module_bindings/(C++ 项目无客户端代码)。

可选分支:不用交互式流程,手动创建项目

如果你希望更可控地走标准构建/发布流程,可以用spacetime init手动创建,例如 TypeScript:

spacetime init --lang typescript --project-path ./my-project my-project cd my-project

其他语言只需替换--lang参数(rustcsharpcpp)。各语言都会生成配置好的构建文件、带示例模块的入口文件(src/index.tssrc/lib.rsLib.cssrc/lib.cpp)以及示例 table 和 reducer 定义。

限制与下一步

  • spacetime dev是 unstable 命令,参数与交互流程未来可能变化。
  • 热重载只监视项目源码文件,客户端开发服务器是否运行取决于spacetime.json配置或--run/--server-only参数,二者互斥于同一目的(一个覆盖、一个禁用)。

创建好模块后,文档给出的下一步是学习 Tables、Reducers、Procedures 等核心概念(参见 docs/docs/00200-core-concepts/00100-databases.md),以及在不依赖开发模式时手动构建并发布模块,参见 docs/docs/00200-core-concepts/00100-databases/00300-spacetime-publish.md。

【免费下载链接】SpacetimeDBDevelopment at the speed of light项目地址: https://gitcode.com/GitHub_Trending/sp/SpacetimeDB

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询