@cosmoner/cli

中文文档
0.19.1发布于 2026/11/09MIT构建来源已验证近 30 天下载 2241

Cosmoner 部署文件的命令行工具

中文使用文档
文档目录22 节
  1. 图标
  2. cosmoner validate [file...]
  3. cosmoner fmt [file...]
  4. cosmoner init [file]
  5. cosmoner agents [file]
  6. cosmoner schema
  7. cosmoner login
  8. cosmoner use <project>
  9. cosmoner whoami 财务报告和审定财务报表 cosmoner logout
  10. cosmoner <product> get [<name>]
  11. cosmoner get --all
  12. 订购
  13. 更改和删除
  14. 全权证书
  15. cosmoner deploy <app>
  16. cosmoner upload <site> <dir>
  17. cosmoner secrets <list|set|rm>
  18. cosmoner variables <list|set|rm>
  19. 更新通知
  20. 和SDK一样的答案
  21. 发展
  22. 许可证

@cosmoner/ cli (英语)

用于命令行工具 .cosmoner/deployment.yaml,您承诺的文件 描述存储器如何在 宇宙纳,用于 部署图像应用程序,并用于上传到网站托管站.

文件命令 - validate, (中文(简体) ), fmt, (中文(简体) ), init, (中文(简体) ), schema 财务报告和审定财务报表 agents ——工作情况 离线 没有账户 没有API密钥 也没有网络呼叫: 到达网络是当网络运行时失败的检查,而不是 你想保护什么. deploy, (中文(简体) ), upload, (中文(简体) ), secrets 财务报告和审定财务报表 variables 和API谈谈 并且只有他们读到证书——从 cosmoner login 独自一人 机器,或 COSMONER_API_KEY 在中央情报局.

完整文档于 https://cosmoner.com/docs/sdk/cli (中文(简体) )。 。 。 .

npx @cosmoner/cli validate

不需要安装, 也没有JavaScript 专用设备: 文件 描述一个部署,而不是节点工程,所以在 Go 或 Rust 寄存器如同 JavaScript 的一款.

图标

cosmoner validate [file...]

对照平台读取的格式检查部署文件。 没有 参数 它找到文件的方式 平台做的 - 第一个 .cosmoner/deployment.yaml, (中文(简体) ), .cosmoner/deployment.yml, (中文(简体) ), deployment.yaml, (中文(简体) ), deployment.yml 这是存在的.

$ cosmoner validate
.cosmoner/deployment.yaml
  2:11  error    Service names must be lowercase letters, numbers, or hyphens, and start with a letter or number  services.0.name
  4:18  error    Static sites cannot define a run_command  services.0.run_command
  5:11  warning  Unknown field "prot" — it will be ignored  services.0.prot

2 errors, 1 warning
选项
--strict警告也失败了.
--format text|json|githubgithub 发布工作流程命令,所以发现降落在diff上.
--quiet单独通过退出代码报告.
--no-color永远不要彩色。 当输出不是终端时颜色已经关闭,并且 NO_COLOR 很荣幸.

退出代码 : 0 一切都过去了, 1 文件没有, 2 命令本身 错误 —— 一个未知的选项, 一个无法读取的路径 。 一个处理任何 非零码作为失败的部署文件,否则将报告其类型 自己的指挥线作为破解的部署.

错误和警告

警告是平台所容忍的 而你可能不是故意的. 未知的密钥是主键: 平台放弃而不是拒绝 ,这样为更新字段所撰写的文件仍然应用已知的设置 对抗旧部署 那种宽大是故意的 并视之为致命 这里拒绝平台接受的文件——所以未知的密钥是警告 上面写着会发生什么.

使用 --strict 当你不愿让一个打字。 它改变了 判决,而不是结论: 球场仍然只是警告 平台对此感到关切.

在 GitHub 动作

- name: Validate deployment file
  run: npx @cosmoner/cli validate --strict --format github

cosmoner fmt [file...]

以条形格式重写文件:按格式文档顺序排列字段 他们将依次缩进 $schema 抬头, 您的编辑器验证 并按键完成文件.

这些评论被保留下来,与他们所反对的实地一起旅行。 未知 字段也保留着——平台忽略了它们而不是拒绝它们,以及 删除CLI不承认的事物不是事前的决定—— 移动到地图的尽头.

选项
--check不写入; 如果有任何文件会更改, 请退出 1 .
--stdout打印结果而不是回写.

cosmoner init [file]

写入启动文件于 .cosmoner/deployment.yaml,带有图案头和 包含您最有可能设置的字段的注释 .

选项
--name <name>服务名. 默认为 web。 。 。 .
--type service|static默认为 service。 。 。 .
--agents同时将宇宙纳部分写入 AGENTS.md,作为 cosmoner agents 已经.
--force覆盖已有的部署文件 . AGENTS.md 从来没有被覆盖, 只有其中的部分.

init 写它被要求的每件事物, 或全无: 已有的部署 没有文件 --force 之前被拒绝 AGENTS.md 被触动。 在一个项目上 已经有一个部署文件, 运行 cosmoner agents 换句话说.

cosmoner agents [file]

写一个简短的“调用宇宙器”部分 AGENTS.md,文档 编码代理如 Codex 和 Cursor 读取寄存器指令, 所以 在寄存器库工作的代理验证部署文件、部署和 处理 CLI 所期望的秘密而不是猜测 。 它命名为 平台将读取的部署文件 validate, (中文(简体) ), fmt, (中文(简体) ), deploy 财务报告和审定财务报表 upload 援引 --format json,退出代码,其中证书 从,秘密是只写, 在哪里的docs, llms.txt 编辑 docs MCP 服务器是 .

片段坐中间 <!-- cosmoner:start --> 财务报告和审定财务报表 <!-- cosmoner:end -->。 。 。 . 再次运行命令只替换标记之间的内容,所以 升级 CLI 后可安全重运行;其余文件从未被触及. 没有标记的文件会被附加,缺少的文件是 创建。 未对齐的标记被拒绝使用退出代码 1 编辑 文件是原样的.

克劳德代码读取 CLAUDE.md 而不是说 AGENTS.md: 添加一行 @AGENTS.md 改为 CLAUDE.md 以导入或通过 CLAUDE.md 作为文件.

cosmoner schema

打印JSON Schema的文件, 与CLI一起运出,所以它工作离线. --url 打印已公布的 URL —— 通常是编辑器 想要,又怎样 cosmoner fmt 写入文件.

cosmoner schema > .cosmoner/app.schema.json

cosmoner login

通过浏览器在 CLI 中签名 。 终端显示代码并打开 cosmoner.com/cli/<code>,检查代码匹配和批准。 这个 然后CLI被签入您的账户, 你的浏览器的方式, 并到达 你所参加的每一个项目 登录保存到 ~/.config/cosmoner/credentials.json只有你才能读.

$ cosmoner login
Your code is BCDF-GHJK

Opened https://cosmoner.com/cli/BCDF-GHJK in your browser.
Or go to https://cosmoner.com/cli and enter the code.

Waiting for approval…

Logged in as [email protected], until 2026-11-06 at the latest.
Pick a default project with cosmoner use <project>, or pass --project to each command.

登入会发挥你的作用:它可以做你每个项目中允许的角色. 会员,API密钥和计费都留在控制面板中. 用它来更新自己 并在未使用7天或批准30天后结束。 每台机器都列出来 下级 账户-安保在那里你可以签出来. --no-browser 指纹 连接,而不是打开它, 对于一个机器到达了SSH.

由更古老的 CLI 保存的登录是一个项目的 API 密钥 。 它继续工作 至过期; 运行 cosmoner login 改为会议.

COSMONER_API_KEY 总是优先于保存的登录, 因此 CI 继续使用 它的钥匙。 故意没有旗帜来传递钥匙或钥匙 符號:一面旗帜会最终出现在外壳历史和CI日志中.

cosmoner use <project>

设定工程 deploy, (中文(简体) ), upload, (中文(简体) ), secrets 财务报告和审定财务报表 variables 继续. <project> 是一发子弹或一发身份证,并对照API进行核对。 一个命令需要 第一个 --project, (中文(简体) ), COSMONER_PROJECT_ID此默认值.

$ cosmoner use acme-web
Using Acme Web (acme-web) by default.

cosmoner use 单显示默认值; --clear 将取去.

cosmoner whoami 财务报告和审定财务报表 cosmoner logout

cosmoner whoami 显示CLI的签名时间为登录结束时 默认项目,在检查登录后仍然有效. cosmoner logout 签名此机器并删除已保存的登录 .

与 COSMONER_API_KEY 设定, cosmoner whoami 显示它是什么键和它是谁 作为。 项目关键部分作为其项目服务账户之一,以及 whoami 账户名称及其作用——一个秘密或可变写入的角色 检查。 一个个人进入的标志 和你一样。 API 拒绝的密钥 1出入口,所以CI任务可以在部署前检查其密钥.

cosmoner <product> get [<name>]

阅读项目内容。 没有名字,它列出一切,有一个它显示 那个东西. list 与 get 没有名字.

$ cosmoner apps get
NAME  STATUS  URL                       SOURCE                              CREATED
web   ACTIVE  https://web.cosmoner.app  registry.cosmoner.com/acme/web:v2   2026-09-01
api   ACTIVE  -                         acme/api                            2026-08-14

$ cosmoner databases get main --format json

产品: projects, (中文(简体) ), apps, (中文(简体) ), servers, (中文(简体) ), ssh-keys, (中文(简体) ), databases, (中文(简体) ), redis, (中文(简体) ), domains, (中文(简体) ), buckets, (中文(简体) ), registries, (中文(简体) ), email, (中文(简体) ), iam, (中文(简体) ), members, (中文(简体) ), hosting, (中文(简体) ), webhooks, (中文(简体) ), secrets 财务报告和审定财务报表 variables。 。 。 . cosmoner projects get 列表中 工程可以到达,不需要工程;其余从 --project, (中文(简体) ), COSMONER_PROJECT_ID 或者说 cosmoner use。 。 。 .

--format json 打印 API 自己的对象——用于列表的数组, 1 单项对象——所以脚本和AI代理可以依赖: API 文档而非表格布局.

全权证书从不以任何形式印制。 一个数据库的连接 URI, 任何 URL 显示中的 redis 密码或密码为 [hidden]; 获取一个 控制面板或SDK在您需要时的用途.

cosmoner apps logs <app> [--type run|build] 打印应用程序最近的日志行, 带着同样的面具.

cosmoner get --all

所有的项目都在一个命令中: 每一个产品上市,读入 平行。 在文字中,每个产品打印一节; --format json 打印一个 对象,与 project,每个产品上市的钥匙 errors。 。 。 .

{
  "project": { "id": "…", "name": "Acme", "slug": "acme" },
  "apps": [ … ],
  "servers": [],
  "iam": null,
  "errors": { "iam": "Missing scope iam:read (FORBIDDEN)" }
}

证书可能无法读取的产品——没有该产品读取的API密钥 范围——是 null,理由如下 errors,命令不变 成功 。 只有在什么也读不出来时,它才退出1。 一个 CLI 登录读取每个 产品.

订购

cosmoner <product> create <name> 命令支付的资源。 它会定价的 并询问:

$ cosmoner redis create cache --plan valkey-1gb
This orders Redis "cache": plan valkey-1gb in se-sto.
It costs $12.00 a month before tax, billed to the project's saved card. About $4.50 is charged now, prorated until 25 Oct 2026.
Order Redis "cache"? [y/N]

每月的价格是准确的。 现在收取的费用是一旦 项目已经支付一些费用,因为费用按比例计入 现有订阅。 如同删除, --yes 提前回答,没有 终端和无 --yes 没有命令,命令2出口.

命令列出选择
cosmoner servers create <name> --size <size> --region <region> [--image <image>] [--ssh-keys <key,…>]servers sizes, (中文(简体) ), servers regions, (中文(简体) ), servers images
cosmoner redis create <name> --plan <plan> [--region] [--persistence <mode>]redis plans, (中文(简体) ), redis regions
cosmoner databases create <name> --size <size> [--version] [--region]databases sizes
cosmoner buckets create <name> --region <aws-region> [--tier] [--public] [--versioning] [--cdn]
cosmoner registries create <name> --region <region> [--provider]registries providers
cosmoner hosting create <site> [--tier] [--php] [--database <name>] [--extra-storage <gb>]hosting plans
cosmoner apps create <name> --size <size> (--image <image> | --repo <owner/repo>) [options]apps sizes, (中文(简体) ), apps regions
cosmoner apps resize <app> --size <size>apps sizes

只要只有一个区域开放,就可选。 已经使用的名称是 在定价前被拒绝. --format json 指纹 { created, price }。 。 。 .

更改和删除

cosmoner <product> delete <name> (或 rm)永远删除一个项目, 解析名称为 get 已经 上面写着要问什么 第一条:

$ cosmoner redis delete cache
This deletes redis "cache". Its data goes with it, and its billing stops. It cannot be undone.
Delete redis "cache"? [y/N]

--yes 提前回答,用于脚本。 没有终点站也没有 --yes - 中情局, 或代理商的外壳——它不会改变任何东西,也不会改变出口2,而不是等待 一个无法回答的答案.

每一个产品,除了 members 可删除; 项目只保留一次 没有资源,只有它的主人。 其他写作命令有:

命令
cosmoner ssh-keys create <name> --public-key <file|->添加公钥.
cosmoner domains create <domain>添加您拥有的域并打印 TXT 记录以发布 .
cosmoner domains verify <domain>检查该记录; 退出 1 直至可见 .
cosmoner apps update <app> [options]更改名称、例、构建和运行命令、端口、自动部署和图像部署策略。 空值清除设置 .
cosmoner webhooks create <name> --url <url> --events <event,…>创建端点并打印其签名密钥.
cosmoner webhooks update <webhook> [options]改变它; --enable 财务报告和审定财务报表 --disable 开关.
cosmoner webhooks test <webhook> [--event <event>]发送样本事件; 发送失败时退出 1 .
cosmoner webhooks rotate-secret <webhook>在询问后替换签名密钥 .
cosmoner servers update <server> --name <name> 编号 : projects update <project> --name <name>更名为相.
cosmoner servers start|stop|reboot <server>赋予它权力,切断其权力或重新启动;停止并重新启动先问。 一个已停止的服务器仍在计费中 .
cosmoner email create <domain>设置一个域来发送和打印要发布的 DNS 记录 。 项目中尚没有的域被添加为待决域.
cosmoner email verify <domain>检查这些记录并开启发送;1号出入口直至全部可见. 首先问它何时开始按月收费的电子邮件计划.
cosmoner hosting image <site>显示一个站点运行的构建,补丁的构建可以更新到任何自动更新的最后期限,可以卷回什么,并提供PHP版本.
cosmoner hosting update <site> 编号 : rollback <site>将站点移动到其PHP版本的最新补丁构建,或在7天内返回其上次更改之前运行的构建。 都重启网站并先询问.
cosmoner hosting php <site> <version>将网站移动到另一个 PHP 版本。 重新启用网站; 先问.
cosmoner hosting mail <site> [on --from <address> | off]显示网站的 PHP mail() 发送; on 让它作为 <address> 在一个已核实的电子邮件域名上,每封电子邮件都有账单 off 停止并删除其 SMTP 证书。 二者先问.
cosmoner hosting domains <site>列出一个站点的答案、每个站点做什么以及是否是活的域.
cosmoner hosting domains <site> attach <hostname> [--path <folder> | --redirect <url> [--temporary] | --parked]将工程中一个已核实域,或者一个域的子域,在站点中,默认作为自己文件夹中的网站. 打印DNS记录,说明是否为您添加.
cosmoner hosting domains <site> change <hostname> --website | --path <folder> | --redirect <url> [--temporary] | --parked更改附件域的工作.
cosmoner hosting domains <site> detach <hostname>询问后停止网站对其进行回复;其文件夹保留.

全权证书

这些印出过一次秘密——API没有副本,或只是散文—— 因此,从命令的输出中保存它。 每个读数都显示 [hidden]。 。 。 .

命令印刷品
cosmoner iam create <label> [--storage read|write] [--buckets <bucket,…>] [--registry pull|push] [--repositories <repo,…>]访问密钥ID及其秘密访问密钥,用于对象存储,注册或两者兼有. 无 --buckets 或者说 --repositories 它到达每一个桶或仓库,包括后面的.
cosmoner email credentials create <domain> --label <label> --from <address>SMTP 用户名和密码, 以及要发送的服务器 .
cosmoner ssh-keys generate <name> [--out <file>]RSA 私人密钥,或 --out,写给 <file> (模式600)和 <file>.pub 并且没有指纹.
cosmoner webhooks create 编号 : rotate-secret签名的秘密.
cosmoner databases rotate-password <database>一个共享数据库的新密码和连接URI,在询问后:旧密码立刻停止工作.

cosmoner email credentials delete <domain> <credential> 删除 SMTP 登录, 在询问后 . cosmoner iam delete 删除访问密钥.

cosmoner deploy <app>

部署一个图像应用程序——一个从宇宙星登记册运行图像的应用程序——和 等待推出完成. <app> 是应用程序的名称或ID。 已构建的应用程序 从一个仓库部署 通过推到他们的分支, 所以这拒绝他们.

$ cosmoner deploy web --tag v2
Deploying web (tag v2)
  PENDING
  DEPLOYING
✓ web is live on registry.cosmoner.com/acme/web:v2 after 41s

没有 --tag 也没有 --digest中,已绘制应用程序名称的图像 被推倒的标签.

选项
--tag <tag>从应用程序的仓库里部署这个标签 。 被SHA逼到这里.
--digest <digest>使用这个精确的图像。 这个 sha256: 前缀可能会被删除.
--project <project>污名还是身份 默认为 COSMONER_PROJECT_ID,然后将项目设定为 cosmoner use。 。 。 .
--no-wait接受部署后立即返回.
--timeout <seconds>何等为所出. 默认为600.
--format text|jsonjson 将应用程序和最终部署显示为一个对象.

全权证书来自 cosmoner login 或环境,从来没有一面旗帜,所以 密钥无法在 CI 日志中结束 : COSMONER_API_KEY (与 apps:read 财务报告和审定财务报表 apps:write),可选择 COSMONER_PROJECT_ID 财务报告和审定财务报表 COSMONER_API_URL。 。 。 .

退出代码 : 0 部署启动(或被接受 --no-wait, (中文(简体) ), 1 这个 失败,超时或API拒绝, 2 命令本身是错误的。 A 类 暂停停止等待,而不是部署.

在 GitHub 动作

- name: Deploy
  run: npx @cosmoner/cli deploy web --tag ${{ github.sha }}
  env:
    COSMONER_API_KEY: ${{ secrets.COSMONER_API_KEY }}
    COSMONER_PROJECT_ID: ${{ vars.COSMONER_PROJECT_ID }}

cosmoner upload <site> <dir>

上传内容 <dir> 到一个SFTP的网址. <site> 这是 网站名称或编号。 SFTP 登录用 API 密钥获取, 所以需要 CI 任务 不需要自己的密码.

$ cosmoner upload my-site dist --delete
Uploading dist to my-site:/my-site.cosmoner.com/public_html (42 files, 1.3 MB)
✓ Uploaded 42 files (1.3 MB), removed 3 in 6s

每个文件都会被上传, 而已有的文件会被覆盖; 文件已经在 站点但不在 <dir> 除非 --delete 给出. .git 文件夹和符号链接从未上传。 一个空的 <dir> 被拒绝,因为它 通常都是一无所获的建筑.

选项
--remote <path>要上传的文件夹, 如 SFTP 客户端所示 。 默认为网站自己的主机名所服务 .
--delete之后,删除目标下但未包含的内容 <dir>。当目标为 /。 。 。 .
--dry-run连接和列出什么会改变,改变什么.
--host-key <sha256>拒绝一个主机密钥有另一个指纹的服务器 。 默认为 COSMONER_SFTP_HOST_KEY。 。 。 .
--project <project>污名还是身份 默认为 COSMONER_PROJECT_ID,然后将项目设定为 cosmoner use。 。 。 .
--format text|jsonjson 打印网站、目标和文件上传并删除.

主要需要 hosting:read上传 并打印它看到的指纹; 把它贴上, 并显示另一个密钥的服务器 在密码发出前被拒绝。 网关的关键是:

SHA256:PfqYSl1pbMjfMKAbcmjzGZ0t1kpuCZ2mtymdyLu9HwA

退出代码 : 0 每个文件都被上传了, 1 上传失败或 API 拒绝, 2 命令本身是错误的.

在 GitHub 动作

- name: Upload site
  run: npx @cosmoner/cli upload my-site dist --delete
  env:
    COSMONER_API_KEY: ${{ secrets.COSMONER_API_KEY }}
    COSMONER_PROJECT_ID: ${{ vars.COSMONER_PROJECT_ID }}
    COSMONER_SFTP_HOST_KEY: SHA256:PfqYSl1pbMjfMKAbcmjzGZ0t1kpuCZ2mtymdyLu9HwA

cosmoner secrets <list|set|rm>

管理部署文件提到的值 from_secret一个秘密 值被加密并只在设定时返回,因此此命令从未打印 一个回来,它会打印的值 是刚刚提供的值,并放 把它写成CI日志.

$ cosmoner secrets list
NAME            ENVIRONMENT  VERSION  UPDATED
DB_PASSWORD     production   2        2026-09-02
STRIPE_KEY      production   1        2026-08-30

$ cosmoner secrets set DB_PASSWORD --environment production < password.txt
✓ Set DB_PASSWORD to hu••••r3 in production, version 2

set 存储新密钥,或替换已存在的密钥的值 同样的环境. rm 取同名词.

选项
--environment <env>default (默认), development, (中文(简体) ), staging 或者说 production。 。 。 . set 财务报告和审定财务报表 rm 在一个环境中地址一个名称; 空 list 让他们都看看.
--value <value>存储值,字面意思是.
--from-file <path>从文件中读取值 。 一条新线被剥了.
--description <text>设置在值旁边 .
--project <id>工程开工. 默认为 COSMONER_PROJECT_ID。 。 。 .
--format text|jsonjson 从不包含一个值.

值来自 --value, (中文(简体) ), --from-file,或任何管道,在那个 秩序。 秩序. 接线最安全: 一个数值以 --value 可从 外壳历史,可能与CI跑道相呼应. 斯丁是最后的手段 更确切地说 因为CI跑步者常常会发出命令 a 无名无姓的臭虫.

两种API行为会看起来像bug:

  • 写作需要拥有者或管理员的角色. 项目的关键行为 服务账户的角色,登录或个人访问令牌与您的。 这个 单是范围是不够的,所以在 developer 服务账户 secrets:write 仍然得到一个403.
  • 创建是限速的 每个项目每10分钟100个秘密, 由每个在项目中工作的钥匙和机器共享。 过去的,创建 遇到一个429,直到窗口重置.

退出代码 : 0 改变了, 1 aPI 拒绝 或名称不是 发现, 2 命令本身是错误的.

在 GitHub 动作

- name: Publish the build's database password
  run: echo "$DB_PASSWORD" | npx @cosmoner/cli secrets set DB_PASSWORD --environment production
  env:
    COSMONER_API_KEY: ${{ secrets.COSMONER_API_KEY }}
    COSMONER_PROJECT_ID: ${{ vars.COSMONER_PROJECT_ID }}
    DB_PASSWORD: ${{ secrets.DB_PASSWORD }}

cosmoner variables <list|set|rm>

简文兄弟 cosmoner secrets对于非敏感值, a 调用文件 from_variable。同样的子命令和相同的 选项;不同的是,每个读取时返回变量的值, 这样 list 打印出来.

$ cosmoner variables set LOG_LEVEL --value debug --environment development
✓ Created LOG_LEVEL=debug in development

任何值得隐藏的东西都属于 cosmoner secrets 换句话说.

更新通知

当更新的 CLI 退出时, 一行通知会跟随命令的输出—— at 每天最多一次,在楼梯上。 CLI 最多要求 npm 提供最新版本 一天一次, 放弃过一个半 而不是持有 指挥。 在CI里,没有通知,也没有检查 当Stderr不是 终端,用于离线文件命令,或何时 COSMONER_NO_UPDATE_CHECK 已经设定.

根据同样的规则,而且最多每天一次,国家劳工局说 宇宙仪部分 AGENTS.md 在当前目录中它不会 现在写——在升级后,通常写. 编码代理读取文件 比起来 --help运行 cosmoner agents 来刷新它.

和SDK一样的答案

规则在SDK,不是这里. @cosmoner/sdk, (中文(简体) ), cosmoner-sdk (P 财务报告和审定财务报表 cosmoner/sdk (PHP)都暴露了同一个验证器,运行在同一个 装入 conformance/,并用同样的信息在 同样的顺序。 在 CI 中验证此 CLI 并再次验证一个部署脚本 python SDK给你一个答案 而不是两个.

CLI 仅添加需要存在文件的内容: 每一查找的行和列 并选择输出格式.

发展

CLI 将 JavaScript SDK 捆绑在一起 来源 而不是取决于 已发布软件包. tsup 在建时插入,通过 paths 输入 tsconfig.json。 。 。 .

在改变它之前,这是值得知道的。 取决于 @cosmoner/sdk 以 版本将意味着CLI 只能用来对抗SDK 已经运出 —— 每一次改变, 都需要两次释放, cI将对照登记册的版本,而不是其中的版本,测试CLI 承诺 Bundling让两者步入正轨 而CLI是运行的程序 因此,传送一个自成一体的文件也更好 最终结果。 代价是 cli/ 到达 ../javascript/src,所以一个 改为SDK重新运行CLI的测试并重新发布CLI.

cd javascript && npm ci   # the type check reads the SDK's source, so it
cd ../cli && npm ci       # needs the SDK's dependencies resolvable too
npm run lint && npm run typecheck && npm test

第一行不是可选的 npm run typecheck: tsc 如下 ../javascript/src 来源进口 yaml,哪个模块解析 在导入文件旁边查找,而不是在其中 cli/node_modules林特 林特 林特 林特 林特 林特, 建造和试验不需要它——tsup治疗 yaml 作为外部,因为 CLI 也取决于它. ssh2 被捆绑,但其两个可选的本地附加物 被排除在外,看 tsup.config.ts。 。 。 .

npm test 首先,因为两样东西 只有在建造之后才存在: JSON Schema复制了捆绑的旁边, 和使它可以运行的Shebang. 两者 涵盖范围 test/e2e.test.ts,运行已建二进制.

许可证

麻省理工学院

版本与发布记录

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

版本发布日期距今
0.19.1latest2026/11/091 天前
0.19.02026/11/073 天前
0.18.12026/11/047 天前
0.18.02026/11/037 天前
0.17.12026/10/3011 天前
0.17.02026/10/2814 天前

关于 @cosmoner/cli 的常见问题

@cosmoner/cli 是什么?

Cosmoner 部署文件的命令行工具

如何安装 @cosmoner/cli?

在项目目录运行 npm install @cosmoner/cli,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 cosmoner,可以用 npx cosmoner 直接运行。

@cosmoner/cli 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/cosmoner__cli 是否存在。

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

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

@cosmoner/cli 可以商用吗?

@cosmoner/cli 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

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

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

@cosmoner/cli 还在维护吗?

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