Zinnector®

面向 WordPress 主机托管的开发者 CLI

Zinnector® 无需安装 Docker 或 MAMP 等任何工具,仅凭 Node 即可在本地构建 WordPress,随后会在您推送之前,将您构建的内容与即将部署到的托管槽位进行核对,并指出哪些内容将无法匹配,然后才进行推送。通过 npm install -g zinnector 进行安装。它是免费的、采用 MIT 许可证,并且基于与这里其他所有内容相同的公共 API 构建。

五个命令,中间的一个是重点

大多数托管 CLI 从部署开始。Zinnector® 在那之前就开始了——它与您一起构建网站,然后针对您即将发送到的机器检查您的工作。从“它在我的笔记本电脑上运行”到“它在服务器上运行”之间的差距就是下午流逝的地方,而这个差距是可以衡量的。

新建 zinnector

快速搭建一个能立即启动的网站、插件或区块主题。没有占位文件,没有待办事项(TODO)——插件一经生成即可激活,主题在创建瞬间便可选用。

zinnector 开发版

几秒钟内在您的本地计算机上运行真正的 WordPress,提供您自己的插件和主题,无需 Docker,且无需在 PATH 中配置 PHP。选择 5.2 到 8.5 之间的任意 PHP 版本进行开发。

zinnector 检查

发布前检查。它会将您构建的内容与即将部署到的目标插槽进行比对,并在您推送之前指出每一个不匹配项以及它无法进行的每一项检查。

zinnector 推送

准备就绪,推送提交,触发部署并实时查看直至完成。若部署失败,仅需一条命令即可查看构建日志。

zinnector ai

直接在终端中向助手提问,并以您的项目和网站作为上下文。它在平台上针对您的账户运行,因此任何模型密钥都不会存储在您的计算机上。

Test it works in two minutes, no account needed

Six commands, in order, and what success looks like at each one. Everything here runs on your own machine; an API key is only needed when you reach a hosting slot.

  1. Install it

    Run npm install -g zinnector on Node 24 or newer. If npm prints EBADENGINE, your Node is older than 24 — install the current LTS from nodejs.org and run the install again.

  2. Check the version

    zinnector --version prints a version number such as 0.1.2. On a Node older than 24 it prints a message saying Node 24 or newer is needed, and exits.

  3. Read the help

    zinnector --help lists every command below with a one-line purpose. Every command also takes --help of its own.

  4. Scaffold a site

    zinnector new my-site creates a project that boots immediately — a zinnector.json, a wp-content tree and a README — and prints the next commands to run.

  5. Run it

    cd my-site, then zinnector dev. The first run asks once to download the WordPress runtime (about 570 MB, kept in the CLI’s own cache, never in your project). Success looks like “running at http://127.0.0.1:9400”.

  6. Open it in a browser

    http://127.0.0.1:9400 is a fresh WordPress site; /wp-admin opens the dashboard already signed in. Drop a plugin into wp-content/plugins and it is there on the next reload.

  7. Then, with a hosting slot

    zinnector login, zinnector link, zinnector check, zinnector push — pre-flight what you built against the slot, then deploy and watch it finish.

详细预检

您的网站基于 PHP 8.3 构建,但运行环境却是 8.1 版本。在网站崩溃之前,没有任何提示。这就是此命令存在的意义,也是该平台所有者点名要求的功能。Zinnector® 会读取两个环境并进行对比,然后仍然允许您部署,因为您可能有自己的理由。

PHP,公正评级

大版本跨度被标记为高级别,因为它必然会导致网站崩溃;小版本跨度的标记级别则较低。将所有内容都评定为严重只会教导用户忽略该警告。

磁盘和文件数量,分别计算

WordPress 站点由数万个小文件组成,站点在其磁盘空间上限以内也可能会耗尽 inode 配额。这两项指标都是根据托管空间实际剩余量进行检查的,而不是根据套餐额度。

“无法检查”本身就是答案

看不见其对象的检查会报告未检查,从未通过。一次干净的运行会报告它无法验证的项目数量,因为虚假的万事大吉是那种无人会多看一眼的结果。

发出警告,从不拦截

每个发现都可以通过 --force 覆盖,摘要中也会说明这一点。在 CI 中,退出代码则作为关卡,因此管道可以保持严格,而人员仍然保有控制权。

两个本地运行时,皆为真实

WordPress Playground 是默认选项:编译为 WebAssembly 的 PHP,在 Node 内部运行,因此只需一台安装了 Node 的笔记本电脑,就能在读完这句话的时间内,从无到有运行一个 WordPress。

当您需要原生 PHP(如 imagick 等扩展)或真正的 MySQL 时,请传入 --runtime docker,从而获取 php-fpm 和 MariaDB 容器。两者都为来自同一项目的相同文件提供服务,因此在它们之间切换只会改变引擎,而不会改变其他任何东西。

面板中的其他一切操作您已经会了

Zinnector® 基于与控制面板相同的公共 API 构建,因此控制面板能做的事它也能做——而且每个命令都是 OpenAPI 规范中记录的操作,而不是私有端点。

站点与部署

列出站点,读取平台所知关于该站点的一切信息,重新部署,并读取部署历史记录和构建日志。

域名、DNS 与邮件

列出域名,读取并修改 DNS 记录(在写入前显示该记录),以及读取您的邮件服务。

PHP、配额、数据库和日志

切换 PHP 版本,查看磁盘和 inode 使用量与套餐配额的对比情况,获取 phpMyAdmin 的一次性链接,并实时查看访问日志和错误日志。

WP-CLI 与批量操作

针对某个站点运行白名单中的 WP-CLI 命令,并通过一次调用(而非逐个站点调用)清除整个所选站点的缓存或启动恶意软件扫描。

Every command, exactly as --help lists it

The full list, one line each. The complete reference — every flag, a runnable example and what each command prints — is generated from the CLI itself and lives in the developer docs and the knowledge base, so it cannot drift from the tool you have installed.

zinnector new

Scaffold a WordPress project you can run immediately.

zinnector dev

Run this project locally — no Docker required.

zinnector login

Sign in with a Zinn Digital® API key.

zinnector logout

Forget a stored API key.

zinnector whoami

Show who this CLI is authenticated as.

zinnector sites

List the sites this key can see.

zinnector status

Everything the platform knows about one site.

zinnector share

Give one person access to a single site — a developer, a designer, a client — with a role and a reason.

zinnector collaborators

See who has been given access to a site, their role, and whether they have accepted yet.

zinnector unshare

Take a person's access back, by email or grant id.

zinnector invitations

The invitations waiting for you, and accept one.

zinnector link

Point this project at a hosting slot (and connect its repository).

zinnector pull

Pull a hosted site's files into this project for local development, and re-run to re-sync. Takes the fast path when the site syncs to its own repository, otherwise works from the latest backup.

zinnector clone

Make a local project from a hosted site in one step: clone its repository or pull its files, write the project file, and leave you ready to run zinnector dev.

zinnector check

Compare this project against the slot you are about to deploy to.

zinnector push

Pre-flight, push your commits, and deploy.

zinnector deploy

Redeploy what the platform already has, without pushing.

zinnector deploys

A site's deploy history.

zinnector php

Show or switch a site's PHP version.

zinnector quota

Disk, files and database usage against what the plan grants.

zinnector db

Database size, and single-use links into phpMyAdmin and the file manager.

zinnector logs

Tail a site's access and error logs.

zinnector wp

Run an allow-listed WP-CLI command on a site.

zinnector backup

List and take site backups. Subcommands: list, now.

zinnector domains

List the domains this key can see.

zinnector dns

Read and change DNS records. Subcommands: list, add, rm.

zinnector mail

List mail services.

zinnector bulk

Run one operation across many sites (cache_purge, malware_scan, sitemap, block_ip).

zinnector ai

Ask the Zinn Digital® assistant, with this project as context.

问题

使用此功能需要成为 Zinn Digital® 的客户吗?

不需要。`zinnector new` 和 `zinnector dev` 完全不需要账户 —— 构建插件、主题或整个网站并在本地运行,永久免费。只有与您的托管服务进行通信的命令才需要 API 密钥。

需要 Docker 吗?

不适用于默认运行时。WordPress Playground 会将 PHP 编译为 WebAssembly 并在 Node 内部运行,因此 `zinnector dev` 只需几秒钟即可启动一个真实的 WordPress,而无需安装其他任何软件。如果您需要原生 PHP(以测试 imagick 或 ionCube 等扩展),使用 `--runtime docker` 将为您提供 php-fpm 和 MariaDB 容器。两者都受支持,且都不是备用方案。

预检到底对比了什么?

您本地的 PHP 版本与目标槽位的版本对比、槽位是否能够切换到您所构建的版本、槽位的 PHP 是否已过生命周期且服务器是否已实际应用、您的项目大小和文件数量与剩余磁盘及 inode 空间配额的对比、两侧的 WordPress 版本、槽位是否已完成配置初始化,以及是否连接了用于部署的 git 仓库。任何无法检查的项目都会被报告为未检查,而不是算作通过。

它能阻止我进行部署吗?

不是的,这是刻意设计的。预检查(Pre-flight)会发出警告并放行——`--force` 则会忽略所有发现的问题并强制部署。您对自己的网站比检查工具更了解,而一个拒绝部署的工具最终只会被用户卸载。

我的 API 密钥安全吗?

密钥绝不会从命令行读取——只会从提示符或通过管道传输的标准输入读取——因此它不会最终进入您的 shell 历史记录或进程列表中。它存储在您自己的配置文件目录中,文件模式为 600,Zinnector® 在每次写入时都会重新断言这些权限。

我可以在 CI 中使用它吗?

可以。设置 `ZINNECTOR_TOKEN` 后,每个命令都支持 `--json`。人类可读的输出会发送到标准错误(stderr),数据则发送到标准输出(stdout),从而保持管道的整洁。`zinnector check` 在发现问题时会返回非零退出码,因此它可以用作管道关卡,并且 `--strict` 也会在无法进行比较时失败。

安装并在一分钟内运行网站

运行 npm install -g zinnector,或者使用 npx zinnector new my-site 试用一次。免费、采用 MIT 许可证并构建于公共 API 之上。快速搭建项目,无需 Docker 即可在本地运行,并在部署前进行预检。

查看文档