命令行
jant 命令随 @jant/core 一起安装。在 Jant 项目目录里用 npx jant <命令> 运行;Docker 镜像里 jant 已在 PATH 上。jant --help 列出所有命令,jant <命令> --help 列出一个命令的选项。
本页的命令和选项只在大版本里变动。jant 还能运行几个构建和运维用的命令,--help 不列出它们;这些属于内部命令,任何版本都可能改变。
命令怎么连到站点
命令有两种工作方式。
直接读写数据库。 migrate、reset-password、db export 和 site snapshot 系列命令直接读写数据库,按下面的选项决定用哪个数据库:
| 选项 | 用途 |
|---|---|
--local |
本地 D1,也就是 npm run dev 用的数据库 |
--remote |
wrangler.toml 里的 D1 数据库 |
--node |
Node 运行时的数据库,来自 DATABASE_URL 或 DATA_DIR |
--config |
Wrangler 配置文件(默认 wrangler.toml) |
--env |
Wrangler 环境名 |
--database |
D1 绑定名(默认 DB) |
--persist-to |
本地 D1 状态目录 |
不传运行时选项时,设置了 DATABASE_URL 或 DATA_DIR 就用 Node 运行时,否则用本地 D1。项目目录下的 .env.node 会先被读取。
一个数据库里有多个站点时(托管环境),需要指明站点:--site 接站点 key 或 ID,--host 接域名(子路径下的站点再加 --path-prefix),--url 接站点 URL。
通过 HTTP。 site export、site import 和维护命令调用站点的 API,能在任何可以访问该站点的机器上运行,用 --url 指定站点。site export 和 site import 需要 API token:在 Settings → API Tokens 生成,写进 JANT_API_TOKEN 或用 --token 传入。维护命令需要服务器的 INTERNAL_ADMIN_TOKEN,写进这个变量或用 --token 传入;不传 --url 时,从环境变量或 wrangler.toml 读取 SITE_ORIGIN 和 SITE_PATH_PREFIX。
初始化与运行
jant setup
不开浏览器创建管理员账号和站点,效果和 /setup 的两屏相同。密码从标准输入读取。已完成初始化的站点不会被改动,所以每次启动都运行也没问题。仅限 Node 运行时的单站点模式。
printf '%s' "$OWNER_PASSWORD" | npx jant setup --email [email protected] --password-stdin
| 选项 | 用途 |
|---|---|
--email |
管理员的登录邮箱(必填) |
--password-stdin |
从标准输入读取管理员密码(必填) |
--site-name |
站点名称 |
--language |
站点的发布语言,BCP 47 标签(默认 en) |
--time-zone |
站点的 IANA 时区(默认 UTC) |
--site-id |
用这个 ID 创建站点,不随机生成 |
--node |
即使没有设置 DATABASE_URL,也使用 Node 运行时 |
jant start
启动 Node.js 服务器。没有选项,所有配置来自环境变量,见 配置。
jant migrate
执行数据库迁移和数据回填。jant deploy 和 Docker Compose 会自动运行它。
| 选项 | 用途 |
|---|---|
--local、--remote、--node、--config、--env、--database、--persist-to |
用哪个数据库,见上文 |
jant deploy
先执行远端迁移,再用正确的静态资源目录部署到 Cloudflare Workers。-- 之后的参数原样传给 wrangler deploy。
| 选项 | 用途 |
|---|---|
--config、-c |
Wrangler 配置文件(默认 wrangler.toml) |
--env、-e |
Wrangler 环境名 |
--output、-o |
子路径站点的发布目录(默认 dist/public) |
--path-prefix |
用这个子路径,不读配置里的 SITE_PATH_PREFIX |
--database |
迁移用的 D1 绑定名(默认 DB) |
--skip-migrate |
部署时不执行迁移 |
jant reset-password
输出一个 15 分钟内有效的密码重置 token。
| 选项 | 用途 |
|---|---|
--local、--remote、--node、--config、--env、--database、--persist-to |
用哪个数据库,见上文 |
--site、--host、--path-prefix、--url |
数据库里有多个站点时,指明站点 |
迁移与备份内容
各命令的适用场景见 导出与导入。
jant site export
把站点导出为 Hugo 站点,写成 ZIP 或目录。
npx jant site export --url https://your-site.example --output ./jant-site-export.zip
| 选项 | 用途 |
|---|---|
--url |
站点 URL(必填) |
--output、-o |
.zip 路径,或一个空目录(默认 jant-site-export.zip) |
--pull-media |
把导出引用的媒体下载到 static/media/(默认开启) |
--no-pull-media |
保留媒体的原始 URL |
--token |
API token,代替 JANT_API_TOKEN |
jant site import
把 Hugo 站点导出(目录或 ZIP)导入站点。目标站点必须是空的。
npx jant site import --url https://your-site.example --path ./jant-site-export.zip --dry-run
| 选项 | 用途 |
|---|---|
--url |
站点 URL(必填) |
--path |
导出目录或 ZIP(默认当前目录) |
--dry-run |
只读取和检查导出,不调用站点 |
--skip-remote-media |
帖子正文里的绝对图片 URL 保持原样,不上传图片 |
--token |
API token,代替 JANT_API_TOKEN |
jant site pull-media
下载一份已有导出引用的媒体,并把导出改成使用本地副本。
| 选项 | 用途 |
|---|---|
--path |
导出的 ZIP 或目录(默认 jant-site-export.zip) |
--output |
--path 是 ZIP 时,结果写到哪里(默认覆盖输入文件) |
jant site snapshot export
导出快照:数据库内容连同 ID 和存储 key,以及它们指向的文件。快照用来恢复站点,不用来在不同部署之间迁移内容。
| 选项 | 用途 |
|---|---|
--output、-o |
目录或 .zip 路径(默认 jant-site-snapshot) |
--force |
覆盖已存在的输出路径 |
--skip-objects |
不带文件,用于已经有相同存储 key 的目标 |
--bucket、--bucket-binding |
从哪个 R2 bucket 读文件,按名称或 Wrangler 绑定(默认绑定 R2) |
--local、--remote、--node、--config、--env、--database、--persist-to |
用哪个数据库,见上文 |
--site、--host、--path-prefix、--url |
数据库里有多个站点时,指明站点 |
jant site snapshot import
把快照恢复到站点,替换站点的帖子、合集、导航、媒体和自定义 URL。账号和 API token 保留。
npx jant site snapshot import --path ./jant-site-snapshot.zip --replace
| 选项 | 用途 |
|---|---|
--path |
快照目录或 ZIP(默认当前目录) |
--replace |
替换站点内容(必填) |
--remap-site |
把快照的站点 ID 和存储 key 改写为目标站点的 |
--allow-missing-objects |
数据库引用的文件在快照里缺失时,仍然导入 |
--bucket、--bucket-binding |
文件写入哪个 R2 bucket,按名称或 Wrangler 绑定(默认绑定 R2) |
--local、--remote、--node、--config、--env、--database、--persist-to |
用哪个数据库,见上文 |
--site、--host、--path-prefix、--url |
数据库里有多个站点时,指明站点 |
jant db export
把整个数据库写成一个 SQL 文件。
| 选项 | 用途 |
|---|---|
--output、-o |
SQL 文件(默认 jant-export.sql) |
--local、--remote、--node、--config、--env、--database、--persist-to |
用哪个数据库,见上文 |
维护
这些命令用 INTERNAL_ADMIN_TOKEN 调用站点,分批执行,重复运行不会出错。
jant search reindex
从存储的帖子正文重建搜索索引。
| 选项 | 用途 |
|---|---|
--url |
站点 URL |
--limit |
每批的帖子数(默认 50,最多 500) |
--once |
只执行一批 |
--token |
内部管理 token,代替 INTERNAL_ADMIN_TOKEN |
--config、--env |
从哪份 Wrangler 配置读取 SITE_ORIGIN |
jant posts rebuild-html
按当前的 HTML 格式重建每篇帖子存储的 HTML。不重建时页面也能正确显示旧帖子;重建省掉每次读取时的重新渲染。
| 选项 | 用途 |
|---|---|
--url |
站点 URL |
--site |
站点 ID,用于托管多个站点的服务器 |
--limit |
每批的帖子数(默认 50,最多 100) |
--dry-run |
只报告会改动什么,不写入 |
--once |
只执行一批 |
--token |
内部管理 token,代替 INTERNAL_ADMIN_TOKEN |
--config、--env |
从哪份 Wrangler 配置读取 SITE_ORIGIN |
jant uploads cleanup
清理已过期的上传会话,并彻底删除已过 回收期 的已删除媒体。
| 选项 | 用途 |
|---|---|
--url |
站点 URL |
--limit |
每批的会话数(默认 20,最多 500) |
--token |
内部管理 token,代替 INTERNAL_ADMIN_TOKEN |
--config、--env |
从哪份 Wrangler 配置读取 SITE_ORIGIN |
jant telegram register-webhooks
为 TELEGRAM_BOT_TOKENS 里的每个机器人注册 webhook。什么时候需要运行,见 Telegram 机器人。
| 选项 | 用途 |
|---|---|
--url |
站点的公开 URL(默认取环境变量里的 SITE_ORIGIN 和 SITE_PATH_PREFIX) |