@cloudhal/cli

中文文档
0.6.5发布于 2026/11/09Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 3959

云藻——在当地建立、运行和建造云藻遗址

中文使用文档
文档目录7 节
  1. 附表(RFC-0008)
  2. 读者评论(RFC-0007)
  3. 站点分析(RFC-0006)
  4. 移动标记到术语(RFC-0002)
  5. 更改打字字段(RFC-0041)
  6. 场地档案(RFC-0039)
  7. 部署到云浮(ADR-0012)

@cloudhal/cli (英语)

每个命令和旗帜都在 cloudhal --help 生成 CLI 参考。你最常使用的是:

cloudhal init <dir> [--name <name>]          create a site project with a seeded local store
cloudhal dev                                 live preview (drafts visible)
cloudhal studio                              API + Studio UI (+ /mcp) for this project
cloudhal mcp [--mode plan|manual|edits|auto] MCP server over stdio for this project
cloudhal deploy                              site + admin Workers on Cloudflare
cloudhal push / cloudhal pull                local site ↔ deployment
cloudhal export / cloudhal import            one site ↔ a .cloudhal file

工作室建设. 出版的CLI船工作室预建. 逃出单簧管, cloudhal deploy 上传 apps/studio/dist 并首先检查它是否是当前:当它缺失时,或当它消失时,即当它消失时,即当它消失时 index.html 大于最新文件 apps/studio/src, (中文(简体) ), apps/studio/index.html 或者说 packages/ui/src它运行 pnpm --filter @cloudhal/studio build与 --no-build-studio 它从不建和失败 在缺失或陈旧的建筑取而代之.

附表(RFC-0008)

释放、禁运和期满、时区、自动化、预定代理人的食谱和自由计划说明: 附表。 。 。 .

上云佛来. cloudhal deploy 给管理员一个扣子, 每分钟 (单位:千美元)* * * * *:调度器的勾子,该勾子还运行了分析器的滚动和在小时水印后的评论工作(在:17). 它总是宣布SQLite背书 SchedulerClock 持久对象(有约束力) SCHEDULER_CLOCK迁移 v1)和设置 CLOUDHAL_SCHEDULER数字 :

  • cron (默认):触发勾;
  • alarm:当Cloudflare因为账户的克龙触发器被用光而拒绝触发器(Workers Free允许5)时,部署没有它而继续进行,而持久对象的提醒键被取代. 选择保留在 .cloudhal/deploy/state.json· ; --scheduler cron 再试一次扳机, --scheduler alarm 选择前方的时钟。 部署 CLOUDHAL_ANALYTICS_CRON=off 或者说 CLOUDHAL_COMMENTS_CRON=off 移动到 alarm 失去这些变量.

每个管理员请求也是后站:当心跳落后了2分多时,会在后台运行一滴. 移徙 0017_schedules 执行管理员的第一个要求.

侍卫.

  • deploy 拒绝部署下级调度的代码(cloudhal.schedulesLevel 联 合 国 @cloudhal/core-ts)在部署上,有开放的发布或封口的页面和条目:更古老的代码忽略了持有和关口. --force-downgrade 超过它.
  • push 当部署有公开发布时拒绝(其被绑定的版本指向图表中一个推取替换); --cancel-schedules 先取消他们.
  • push 携带内容,而不是发布:一旦部署发布, push --replace 保持其已出版的快照(在 Studio中被批准出版或回滚),因此它永远无法将出品移回更古老的版本. 在 Studio 中发布所推动的内容 。 从未公布的部署会像第一次部署那样,占用你的本地部署.

预算及自动化开关. 每个部署都写着 CLOUDHAL_TICK_BUDGET 财务报告和审定财务报表 CLOUDHAL_AUTOMATIONS 管理者:

  • CLOUDHAL_TICK_BUDGET=free (默认: 40 个陈述和每勾选一个释放)或 paid (900份陈述和最多50份释放): cloudhal deploy --plan paid 或者说 cloudhal.json "schedules": { "plan": "paid" }。该计划在 .cloudhal/deploy/state.json· ; --plan free 回头看 Wrangler的登录无法读取账户的计划,所以部署说明它使用的是哪个预算.
  • CLOUDHAL_AUTOMATIONS=off 与 "schedules": { "automations": false } (次数) on:自动化停止;放行和出关继续. 在节点上, cloudhal dev, (中文(简体) ), studio, (中文(简体) ), mcp 财务报告和审定财务报表 schedules run-due 荣誉 CLOUDHAL_AUTOMATIONS=off 从环境.

图标 :

  • cloudhal schedules status [--remote]: 调度器的模式和状态( t)running, (中文(简体) ), late, (中文(简体) ), stopped, (中文(简体) ), unknown),后一勾和下一唤醒,代码的调度级别,每个站点的开放发布和封口页面和条目.
  • cloudhal schedules list [--remote] [--limit <n>]:网站发布内容有其状态,时间和物品数量.
  • cloudhal schedules run-due [--remote]: 现在一滴。 一个没有长期运行的 Cloudhal 进程的自控服务器 每分钟从系统的凹槽运行它.

--remote 使用部署符和运算符路径 /api/admin/schedules/status|run-due 财务报告和审定财务报表 /api/admin/sites/:siteId/schedules/releases。 。 。 .

当地人. cloudhal dev, (中文(简体) ), cloudhal studio 财务报告和审定财务报表 cloudhal mcp 在最多60秒的计时器上运行相同的勾选,在启动时会有一个补选勾选;在一个项目上运行的几个是安全的.

读者评论(RFC-0007)

设置、节制、代理、垃圾邮件保护、隐私、消除和现成的隐私段落(英语和土耳其语): 读者评论。 。 。 .

评论意见是: 可用 除非 cloudhal.json 说不同,和 关闭每个网站 直到有人在工作室打开 部署从未以出其不意的方式增加评论表.

cloudhal.json → comments数字 :

密钥默认含义
availabletrue (也是当块缺失时)false 从部署中删除注释:没有端点,没有脚本,没有小时评论工作. cloudhal init 写入 { "available": true }。 。 。 .
rateLimitfalsetrue 或者说 { "limit": 10, "namespaceId": "…" }:限制工人比率的约束(COMMENTS_RL该网站工人限制每个客户在隔离区提交文件(limit 每60 s, 默认 10; 命名空间 id 来源于部署名称, 除非设定). 在每同位素和D1限制的上方,没有这个限制就可以工作.

上云佛来. cloudhal deploy数字 :

  • 生成 CLOUDHAL_COMMENTS_KEY 一次进入 .cloudhal/deploy/secrets.json (0600),并把它给 两者 工人通过 --secrets-file;它从未被打印或写入一个配置. 失去它使得存储的电子邮件和Turnstile的秘密无法读取;
  • 套装 CLOUDHAL_COMMENTS_AVAILABLE 管理工人;
  • 运行排程器分钟勾选的小时评论工作( 后面有一个小时水印) , 即使解析器关闭了; 没有自由的克龙槽, 勾选就是 SchedulerClock 提醒( e)时间表(三);
  • 套装 CLOUDHAL_SITE_HOSTS 用于自定义域,并带有 comments.rateLimit,添加 COMMENTS_RL· ;
  • 当可用性改变时, 清理网站的缓存一次 .

移徙 0016_comments 执行管理员的第一个要求。 现有部署人员收到对其下次部署的评论,但每个地点仍不部署.

数据位置. 一个D1数据库的管辖范围在创建时被选择,并且无法更改:

  • 首个 cloudhal deploy a. 在终端中询问“自动”或“欧盟管辖权”;
  • --jurisdiction eu 预先决定(CI);
  • 没有旗帜的非交互性首次部署使用自动位置并说如何选择;
  • 一旦数据库存在 旗帜改变什么, 部署是这样说的;
  • 移动、导出注释、在新的 --name 与 --jurisdiction eu,然后导入.

图标 :

  • cloudhal comments status [--remote]:是否备有注释并有密钥,网站的开关,收藏和保护,按状态计数,最古老的待评论,今天所储存的按日封顶的提交,以及最后一分钟的清洗请求的清洗队列(工人缓存允许5).
  • cloudhal comments export [--remote] [--with-personal-data --out <file>]: JSON 线条(一个标题,然后一个) Comment 每行,最古老的先行),用于 stdout 或 --out。 。 。 . --with-personal-data 附加带有电子邮件和需要的评论行 --out,然后只写所有者.
  • cloudhal comments import --in <file> [--remote]: 由id和进口原产地分批分出50行.
    • 每个记录必须给目标站点命名一篇文章,所以先将站点推倒.
    • 网站来自目标,状态保存,电子邮件再次被加密在目标密钥下.
    • 父母后来到来的答复,再审一次.
    • 拒绝的行以行号列出,命令出站口为1.

--remote 使用部署符和运算符路径 /api/admin/sites/:siteId/comments/status|export|import;每次通话都作为操作员审计.

当地人. cloudhal dev 获取对项目 SQLite 的评论。 关键是 CLOUDHAL_COMMENTS_KEY 从环境,或 .cloudhal/comments.key (原始内容存档于2010-06-10). random, created on first use, 0600. cloudhal studio 财务报告和审定财务报表 cloudhal mcp 使用同一个商店。 节点没有克龙,因此他们的排程勾选在它的水印后运行了每小时的评论活(保留,被删除的文章的评论,线程被时间所关闭,旧盐类),它们会清空当地的清洗队列(没有边缘缓存).

站点分析(RFC-0006)

所收集的、从未收集的、唯一访问者模式、保留和现成的隐私政策段落(英文和土耳其文): 网站分析和隐私。 。 。 .

每个出版的网页都包含一个第一党的脚本(/_cloudhal/p.<hash>.js,在1 KB gzipped 下,该页面视图将显示 POST /__cloudhal/e 在现场工人。 工人检查它,解决一个已公布的节点的路径,并将事件写给工人分析引擎(WAE). 管理员通过Analytics SQL绑定(无API令牌)来读取WAE,并保持D1的每日总计. 在本地和节点上,同一型号运行在该项目的SQLite上.

cloudhal.json → analytics (部署默认值; Studio中每个站点的设置覆盖它们):

密钥默认含义
enabled当块在那里时false 关闭整个部署的分析:没有绑定,没有克龙,没有脚本. 没有街区,分析就停了. cloudhal init 写入 { "enabled": true }。 。 。 .
uniqueVisitorsfalse每日售出游客散列(选入;见指南).
vitalsOneIn5N 页面浏览 1 的核心网络维度 : 0 (关闭), 1, (中文(简体) ), 2, (中文(简体) ), 5, (中文(简体) ), 10, (中文(简体) ), 20。 。 。 .
queryBudget8000协调世界时每天未标记的WAE查询;通过它,直播数字暂停到协调世界时午夜,完整的天数仍然来自D1.
rawRetentionDays90SQLite保存的原始事件(仅当地和节点;WAE保存了3个月).
devfalse记录 cloudhal dev 当地交通(这是你自己的).
rateLimitfalsetrue 或者说 { "limit": 120, "namespaceId": "…" }: 增加限制工人比率的约束(ANALYTICS_RL限制每个客户在隔离区之间的信标(limit 每60 s, 默认为 120; 命名空间 id 来源于部署名称, 除非设定). 在每同位素限制之外; " 自由工人 " 是否提供约束是未经证实的.
{ "siteId": "site_…", "analytics": { "enabled": true, "vitalsOneIn": 5 } }

上云佛来. 有了分析, cloudhal deploy 添加:

  • wAE 数据集 <deployment>_events (有约束力) ANALYTICS; Cloudflare 创建了第一个写入的数据集)和 vars CLOUDHAL_ANALYTICS=on, (中文(简体) ), CLOUDHAL_ANALYTICS_DEFAULTS 和,有一个自定义域, CLOUDHAL_SITE_HOSTS· ;
  • 对管理工人,分析SQL绑定(ANALYTICS_SQL), vars (英语) CLOUDHAL_ANALYTICS_DATASET, (中文(简体) ), CLOUDHAL_ANALYTICS_BUDGET 财务报告和审定财务报表 CLOUDHAL_ANALYTICS_DEFAULTS,以及排程器分钟勾的小时滚动(后有水印于:17),将完成的天数卷入D1,删除旧的日用盐并应用保留.

这需要 扳手 4.145 或更新 (单位:千美元) analytics 配置密钥); 部署停止, 并说,当项目wrangler更老的时候。 移徙 0014_analytics 执行管理员的第一个要求。 当解析器打开或关闭时, 部署会清理网站的缓存, 这样一来, 页面就会增加或丢失脚本标签 。 工人自由允许每个账户有5个克龙触发器:当没有一个可自由使用时,行政工人在没有一个可自由使用时部署,并且 SchedulerClock 持久对象的提醒运行了勾选,所以每天的总和仍然按期滚动(时间表) (中文(简体) ).

打开它进行现有的部署. 分析前的项目没有 analytics 键。 下一次互动 cloudhal deploy 问一次(“打开无饼干分析器 cloudhal.json;非交互部署(CI)保持解析并打印如何打开. 要决定前面,加 "analytics": { "enabled": true } (或 false)和部署. 将剧本添加到现场会改变其隐私政策必须表达的内容,所以首先更新(指南) (中文(简体) ). 在分析无法获得之前创建的代理密钥 analytics:read 自动; 在 Studio 代理页面上允许每个密钥 .

限额和费用 (Cloudflare的公布号码截至2026-10;WAE尚未开出账单,其支付价格公布):

免费工人付薪工人(每月5美元)
工人要求每日100 000次,包括缓存点击数包括10 M/月,然后每百万美元0.30美元
WAE写道:100 000/日(每日)包括10 M/月,然后每百万美元2.5美元
WAE 查询10 000/日(每日)1个M/月,然后每百万美元1.0美元
写入 D1 行100 000/日(每天200-2 200次)见 D1定价
克龙触发器每个账户5个(Cloudhal使用一个,或一个持久对象提醒)见 工人限制

每个页面视图都增加了一个工人请求(信标),加上每个被抽样的要害视图;脚本本身是一个自由的静态资产. 粗略的大小,假设每页有3个缓存资产请求:每天有1 000个浏览器的网站使用Free约5%的请求;每天有2万个浏览器使用或不分析器使用的自由账户超过其极限(Free每天有约25,000个浏览器没有分析器,19,000个浏览器关闭);每天有200,000个浏览器需要付费,总共每月约11-12个,其中约2.20个是分析器。 在Free上,工作室警告昨天的交通接近极限时(在站点设置中设置"Cloudflare plan" QQ分析). 分析SQL绑定是否适用于自由工人,其查询是否计入每天一万个,目前尚未核实(RFC-0006 (英语) 步骤0:如果没有,访问仍然被记录下来,而 Studio说它现在还不能读取.

图标 :

  • cloudhal analytics status [--remote]: 有效的设置,存储和阅读器,最后一个滚动日,查询预算和昨天的请求估计; --remote 询问部署(部署符号).
  • cloudhal analytics rollup [--days <n>] [--remote] [--redo]:计算完成天数的每日总数. --remote --days 90 在WAE的部署(持续3个月)中回填每个请求的几个工地日,直到没有等待. --redo 重算已完成的天数( 仅本地) .
  • cloudhal analytics seed [--days <n>] [--views <n>]:确定性演示流量(默认为30天,每天约120个视图)超过已出版的页面,只在本地的SQLite;从不触及部署.
  • cloudhal analytics export [--from <date> --to <date>] [--remote] [--out <file>]: 每日总计为 CSV( 默认: 最近30天) 。 每名访客都没有出口.

当地, cloudhal studio 读取工程的 SQLite (analytics_events),在起步时和小时时滚动完成的天数,并推倒比起起起步时间长的原始事件 rawRetentionDays· ; cloudhal mcp 为分析工具读取相同的数据. cloudhal dev 仅使用 analytics.dev。 。 。 .

移动标记到术语(RFC-0002)

cloudhal migrate tags-to-terms 移动已贬值 ContentEntry.tags 将当地网站纳入 tag 分类学. 它首先对网站进行剖析(before tags-to-terms;其id是迁移 id),创建默认 category 财务报告和审定财务报表 tag 缺失的分类学(category 现有站点不需要),每分出一个活性标记,分批重写200个条目并再次快照(tags-to-terms) (中文(简体) ). 中断运行恢复; 第二次运行毫无作用 。 在你出版之前,没有活的. --dry-run 报告将发生什么变化; --revert <id> 恢复自此以来一直未编辑的条目的标记,然后删除已创建的不再使用的术语和分类.

更改打字字段(RFC-0041)

cloudhal fields 修改收藏的已键入字段以及定义的简单编辑拒绝的值项(field_change_needs_operation:

cloudhal fields rename events speaker presenter --dry-run   # report only; also lists theme files reading fields.speaker
cloudhal fields rename events speaker presenter
cloudhal fields retype events seats number [--clear]          # closed conversion table; --clear drops values it cannot convert
cloudhal fields retype events format select --options talk,workshop=Workshop [--multiple]
cloudhal fields localize events notes off                     # translations' own copies go; the original's value is read
cloudhal fields remove events notes
cloudhal fields revert events <operationId>

每一次运行先对网站进行快照(before rename_field events.speaker;其id是操作 id,用 migration 标记使每个阅读器保持一致, 重写条目在被监视的200个批次, 重新放下标记和快照。 最新译名随时更新。 一个中断的运行恢复 cloudhal fields continue <collection> <id>;每次收集一次操作. --remote 使用部署符牌运行它。 只修改了图表草稿:在您发布之前,没有活的.

场地档案(RFC-0039)

备份,移动一个没有部署的站点,内容保存在git,模板,文件的布局及其安全检查: 网站档案。 。 。 .

cloudhal export [--out <file>] [--site <id>] [--no-media] [--latest-only]   # one site as a .cloudhal file
cloudhal import <file> [--replace] [--dry-run]                             # verified in full before anything is written
cloudhal import --revert <snapshot-id> [--dry-run]                         # undo a --replace

档案馆保存着网站的图表,快照,媒体和取出分类账,从不使用用户账号,评论,分析或秘密;其历史名称做出了每次更改. 进口保存了网站的ID. 何时 --replace 更改项目所在的站点, 它首先保存该站点作为一个 before import <file> 快照并打印 cloudhal import --revert <id> 带它回来。 对于另一个站点的归档,它会切换 cloudhal.json是因为 siteId离开旧址 在商店.

部署到云浮(ADR-0012)

cloudhal deploy 用途  扳手登录( r)npx wrangler login,或 CLOUDFLARE_API_TOKEN) Cloudhal从未读过这些证书. 它创建了D1数据库和R2桶,如果需要的话(有一个寿命周期规则,在下方的快照包过期) bundles/ 30天后, RFC-0010 将部署秘密生成一次 .cloudhal/deploy/secrets.json (0600 — 远离基特),建造和部署 工地工人 (按需部署,有边缘) 行政人员 (Studio, API, auth, MCP),并在第一次部署上推动了您的本地站点.

从 Git (工人建筑). 与 WORKERS_CI=1,云花板设置在 工人建筑, (中文(简体) ), cloudhal deploy 是从新克隆人那里找到的 它从罪犯那里取出名字 wrangler.jsonc,当检查无结果时种子启动站点,保留工人的秘密,不打印设置链接。 这就是部署到Cloudflare按钮的运行: 文件/指南/部署按钮。 。 。 .

自定义域. cloudhal domain set news.example.com --studio studio.example.com 记录主机名 cloudhal.json下一个 cloudhal deploy 把他们送到工人那里 自定义域 (该区必须在同一Cloudflare账户中——Cloudflare创建了DNS记录和证书),并使得该站点成为其在部署上的主要主机名. domain set 让它在本地的店里做主,所以 cloudhal dev, (中文(简体) ), render 财务报告和审定财务报表 build 在任何部署之前,将其写入峡谷链接、站点图和图像。 工人们的地址还在继续工作. cloudhal domain remove 并调遣它. --redirect www.news.example.com (repeatable) 添加以 301 回复网站域名,路径和查询保存的hosts: 下一条向站点工人部署的路线作为自定义域名,因此 Cloudflare 创建了他们的 DNS 记录和证书. cloudhal domain remove redirects 丢掉他们.

电子邮件(RFC-0011). 添加 "mail": { "from": "[email protected]", "fromName": "Example Studio" } 改为 cloudhal.json 下一个 cloudhal deploy 给管理员一个 云浮电子邮件服务 send_email 绑在地址上 然后,邀请可以被电子邮件,工作人员可以从登录屏幕上重置被遗忘的密码。 先登入电子邮件服务中地址的域名. 发送给任何接收者需要的工人(包括每月3 000个电子邮件);在免费电子邮件服务中,仅向您账户的核实地址发送邮件。 当地, cloudhal studio 在终端中打印这些邮件而不是发送.

大赦国际(RFC-0016). 添加 "ai": {} 改为 cloudhal.json 下一个 cloudhal deploy 绑定 大赦国际 给管理员 不需要钥匙,它每天开1万个免费神经元的帐单。 每个网站的主人然后在 Studio QQ Sets QQ AI中打开AI,选择模型并设定每日限制. 可选 AI 网关 添加日志和缓存,并用存储在网关中的密钥到达其他提供者的模型. 当地, cloudhal studio 到达工人AI 超过REST,当 CLOUDFLARE_ACCOUNT_ID 财务报告和审定财务报表 CLOUDHAL_AI_TOKEN (与工人AI权限的标志)设定在环境中.

操作和硬化. 两个工人都向工人日志发送日志,并编辑了查询字符串. 单位 cloudhal.json数字 :

  • "observability": { "logs": 0.25, "traces": 0.05 } 工人追踪记录和开关样本(默认关闭);
  • "placement": "smart" 尝试在管理员上聪明的放置 .

静态建筑将网站内容-安全政策输入 dist/_headers。 。 。 . 文档/指南/云浮-硬化 涵盖成本、如何衡量智能置放以及自定义域的WAF基线:自由管理规则和限制利率规则.

之后的部署是真理的来源——特工们在那里编辑. cloudhal push 拒绝覆盖远程更改的内容; cloudhal pull 把它带回家. --dry-run 将两个工人与真正的扳手捆绑在一起,没有账户.

出版和回滚从不重建任何东西:网站工人遵循已出版的快照指针,管理员工人清理其缓存. 预览链接( N)?cloudhal-preview=…)在真实站点上显示草稿.

cloudhal mcp 您在 Claude 代码/ cursor / 任何 MCP 客户端中注册的内容 :

{ "mcpServers": { "cloudhal": { "command": "cloudhal", "args": ["mcp"], "cwd": "/path/to/site" } } }

本地开发者拥有该项目,所以默认范围是 *; 发布、回滚和删除仍停留在客户端内等待批准(或手拿回a) confirmToken 当客户无法诱导时). --scopes site:read,content:write 缩小客户端可能做的事情。 技能来自 <project>/skills 或捆绑 skills/official。 。 。 .

所有东西都离线了: .cloudhal/ 持有 data.db (SQLite)和 (中文(简体) ) blobs/。 。 。 . cloudhal.json 记录网站编号.

在单列波内部,本站作为TypeScript运行于节点24上(类型剥离): node packages/cli/bin/cloudhal.ts init examples/my-site. 根据 examples/ 与工作空间相关, workspace:* 依赖性被重写为已出版的版本.

cloudhal dev 无法运行在 Vitest 工人内部( 当 Astro 关闭其 dev 中间软件时) VITEST ); e2e 测试将本作子进程产出.

版本与发布记录

@cloudhal/cli 共发布 26 个版本,首次发布于 2026/10/20;过去 12 个月发布了 26 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.6.5latest2026/11/091 天前
0.6.42026/11/081 天前
0.6.32026/11/081 天前
0.6.22026/10/2614 天前
0.6.12026/10/2417 天前
0.6.02026/10/2317 天前

关于 @cloudhal/cli 的常见问题

@cloudhal/cli 是什么?

云藻——在当地建立、运行和建造云藻遗址

如何安装 @cloudhal/cli?

在项目目录运行 npm install @cloudhal/cli,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:astro(^7.4.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 cloudhal,可以用 npx cloudhal 直接运行。

@cloudhal/cli 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cloudhal/cli 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@cloudhal/cli 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cloudhal/cli 可以商用吗?

@cloudhal/cli 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cloudhal/cli 的下载量有多少?

根据 npm 官方下载统计,@cloudhal/cli 在 2026/10/10 – 2026/11/08 这 30 天内被下载 3,959 次,日均约 132 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cloudhal/cli 还在维护吗?

最新版本 0.6.5 发布于 2026/11/09(1 天前);至今共发布 26 个版本,其中过去 12 个月发布了 26 个;首次发布于 2026/10/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。