发布

导出你的代码

把你的应用以 ZIP 文件、GitHub 或 GitLab 的形式带出 Setherion:项目里有什么,如何在别处运行,以及哪些部分仍然依赖 Setherion。

每个应用都是真正的 React 代码,而且归你所有,可以随时带走。本页介绍从编辑器导出的几种方式、你会得到什么、如何在自己的电脑或主机上运行,以及导出之后哪些部分仍然依赖 Setherion。

导出代码包含在每个付费套餐中,也就是 Pro 和 Business。在 Free 套餐中,你可以在编辑器里阅读和搜索代码,但不能复制或下载。你的数据则不同:每个套餐都可以导出,详见下文。

导出方式

方式你会得到什么位置套餐
Download ZIP一个 .zip 格式的项目文件Publish 旁边的文件夹图标Pro 和 Business
Export to GitHub你的 GitHub 账户中的一个仓库Publish,然后 Export to GitHubPro 和 Business
Export to GitLab你的 GitLab.com 账户中的一个仓库Publish,然后 Export to GitLabPro 和 Business
Native project完整的手机应用项目,可在 Android Studio 和 Xcode 中构建Publish,然后 Publish to app stores,然后 NativePro 和 Business
Your data用于你自己的 Supabase 的 SQL,或某个集合的 CSVManage,然后 Cloud每个套餐

前四种方式要等应用构建完成后才能使用。构建或修改正在进行时,或者还没有构建任何内容时,它们的按钮是灰色的。

下载 ZIP

等待构建完成

Setherion 正在编写或检查应用时,文件夹图标是灰色的。

点击文件夹图标

它位于 Publish 的右侧,把鼠标移上去会显示 Download ZIP。在 Free 套餐中,它带有一个皇冠标记,点击后会打开升级方案。

解压

文件以应用的名称命名,例如 coffee-shop.zip。里面是一个可以独立运行的项目:见在别处运行。

导出到 GitHub

打开它

点击 Publish,然后点击 Export to GitHub。

连接 GitHub

点击 Connect with GitHub 并授权。这和导入应用读取你的私有仓库时使用的是同一个连接。如果你不想连接,可以打开 Use a token instead (PAT),粘贴一个具有 repo 权限范围的个人访问令牌。你粘贴的令牌只保存在你的浏览器中。

给仓库命名

输入 Repository name。名称会转为小写,除字母、数字、点、连字符和下划线以外的字符都会变成连字符。

选择 Private repository

这个框一开始是勾选的。它只在 Setherion 创建仓库时起作用:如果已有同名仓库,它会被更新,并保持原来的公开或私有状态。

点击 Export to GitHub

几秒钟后,窗口会显示 Pushed to GitHub!,点击 Open repo 就能前往仓库。

你可以随时再次导出来更新仓库。每次导出都会在默认分支上,在已有历史记录之上添加一个名为“Update from Setherion”的提交,并重新写入项目的每个文件。如果你在仓库中修改了某个文件,而项目里也有这个文件,它会被替换,所以请在你自己的分支上做自己的工作。项目里没有的文件不会被动。

Setherion 创建仓库时,会用你为应用写的需求开头的一段文字作为仓库描述。取消勾选 Private repository 之前,请记住这一点。

导出到 GitLab

它的用法和 GitHub 相同。

打开它

点击 Publish,然后点击 Export to GitLab。

连接 GitLab

点击 Connect with GitLab,或者打开 Use a token instead (PAT),粘贴一个具有 api 权限范围的个人访问令牌。

命名并导出

选择 Repository name,以及是否勾选 Private repository,然后点击 Export to GitLab。点击 Open repo 就能前往仓库。

仓库会创建在 GitLab.com 上,归在你自己的用户名下。除非你取消勾选,否则它是私有的;已有的仓库会被更新,和 GitHub 完全一样。

在团队工作区中,导出到 GitHub 或 GitLab 的操作会记录在审计日志中,并注明导出到了哪个仓库。

项目里有什么

ZIP 和两种仓库里是同一个项目:应用自己的文件,以及运行它所需的其他文件。

文件说明
src/应用本身:App.js、components 中的页面和组件,以及 lib 中的数据。
src/main.jsx启动应用的入口文件。除非应用自己写了一个,否则会自动添加。
index.html应用打开时所在的页面。它以应用的名称作为标题,并带有页面所用的语言。
vite.config.jsVite 的设置,Vite 是运行和构建应用的工具。这些设置让 JSX 可以写在普通的 .js 文件里,应用正是这样编写的。
package.json应用真正引用的软件包、构建工具,以及三个脚本:dev、build 和 preview。
README.md如何运行它。
.gitignore让 node_modules、dist 和你的 .env 文件不进入 Git。
.env.example只在 ZIP 中有:使用你自己的 Supabase 的应用需要的两个值,以注释的形式写好,等你填写。
supabase/schema.sql应用保存的数据表,以 SQL 的形式给出。只在应用保存数据时才有,而且只有表结构,不含数据行。
src/lib/setherion.js与 Setherion 上的应用后端通信的小型客户端。只在应用有登录、保存数据、发送表单或调用 AI 时才有。其中带有应用的 id 和 Setherion 的地址。

图片不会复制到项目里。代码通过网址链接到它们,所以它们仍然从 Setherion 存放的地方加载。

在别处运行

在要运行应用的电脑或主机上,你需要安装 Node.js,npm 会随它一起安装。

获取项目

解压 ZIP,或克隆你的仓库。

安装所需的依赖

在终端中打开项目所在的文件夹,运行 npm install。

运行它

npm run dev 会在你自己的电脑上启动它。Vite 会打印出要打开的地址,通常是 http://localhost:5173。

为主机构建

npm run build 会把完成的网站写入一个名为 dist 的文件夹。里面是静态文件,所以任何静态主机都可以提供访问。

text
npm install
npm run dev
npm run build

如果应用有不止一个页面,请把你的主机设置为让每个路径都返回 index.html。大多数静态主机把它称为单页应用设置或重写规则。没有它,直接打开某个页面,比如 /pricing,会显示“未找到”,而不是你的应用。在 Setherion 上,这一步已经替你完成了。

如果应用使用你自己的 Supabase,请把 .env.example 复制为 .env,并填写 VITE_SUPABASE_URL 和 VITE_SUPABASE_ANON_KEY。这两个值按设计就是公开的。你的主机在构建网站时也需要同样的两个值。

哪些部分仍然依赖 Setherion

导出的代码就是你已发布的应用所运行的代码,所以凡是背后有服务器支持的功能,它仍然会访问 Setherion。知道是哪些部分,就知道迁出之前该做什么。

应用的部分导出后的情况该怎么做
登录和保存的数据src/lib/setherion.js 带有应用的 id,所以导出的应用读写的账户和记录,与已发布的应用相同。只要你还需要,就让应用继续留在 Setherion。想不再依赖它,请把数据迁到你自己的 Supabase,见下文。
表单、AI、已连接的服务和机密它们都通过同一个文件。密钥由 Setherion 保管,由它发起调用,并把每次调用算作一次集成积分。导出的代码里不会写入任何机密密钥。保持这些服务的连接。或者用你自己的服务器代码和你自己的密钥替换这些调用。
支付网店的结算会请求 Setherion,它保管你的 Stripe 密钥,并在 Stripe 确认已付款时记录订单。同上:让 Stripe 继续连接到应用,或者在你自己的服务器上搭建你自己的结算流程。
图片和视频它们通过网址链接,由 Setherion 存放。删除应用之前,先下载你需要的那些。它们会随应用一起被删除。
你自己的 Supabase已经使用你自己的 Supabase 的应用,不通过 Setherion 获取数据。填写两个 VITE_ 值,方法同上。

客户端从浏览器调用 Setherion 的 API,而这个 API 接受来自任何地址的调用,所以无论你把导出的应用部署在哪里,它都能访问。如果你删除了应用、暂停了它的后端,或者用完了当月的集成额度,这些调用就会停止,和已发布的应用一样。参见高级设置和集成积分。

如果你的套餐到期,账户会转为 Free,而 Free 不能导出代码。请在那之前导出,或者在你需要的这段时间里保留一个套餐。

把数据迁到你自己的 Supabase

要离开 Setherion 的后端,请打开 Manage,然后打开 Cloud,再打开 Advanced settings,使用 Move this app to your own Supabase。每个套餐都有这个功能,而且只有应用的所有者或管理员可以导出它的数据行。

  • Build the export 会写出你的数据表的 SQL,以及当前的数据行:每个集合的前 2,000 行,并显示真实的总数,让你看出有没有被截掉。
  • 你在自己的 Supabase 项目中运行它:如果已连接 Supabase 账户,可以用 Run it for me,也可以复制它或下载 .sql 文件。
  • 然后,Rewrite the app for my Supabase 会请助手把应用改为使用你的项目。它和其他修改一样会消耗积分,并且需要 Supabase 连接器。

有三样东西不会随之迁移:用户的登录信息,因为密码无法迁移,用户需要重新注册;上传的图片和视频,它们仍然留在 Setherion;以及每个集合超过 2,000 的那部分数据行。如果只导出某一个集合,可以在 Cloud 下的 Database 中使用 Export CSV,它最多下载最近的 10,000 条记录。参见高级设置和数据库。

手机项目

Native 会把整个应用作为手机项目交给你,可以是 ZIP 文件,也可以推送到 GitHub 仓库。它就是上面的项目,加上了 Capacitor 外壳,可在 Android Studio 中构建,也可在 Mac 上的 Xcode 中构建,并且需要 Node 22 或更新版本。它访问 Setherion 的方式和网页项目相同。命令、应用 ID 和签名请参见原生项目。

导入应用

导入则是反方向:一个代码仓库或 ZIP、一个用 Lovable、Bolt、v0 或 Base44 做的应用,或者一份电子表格。导入是重新构建,而不是复制:Setherion 读取代码,写出一份对它功能的平实描述,然后据此重新构建应用。从这里导出的仓库也是如此。它的费用是一个新应用加上读取的费用,而你的第一次导入是免费的。参见导入应用。

这个页面对你有帮助吗?

加入社区

提问、交流想法,看看别人在构建什么。