@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|github | github 发布工作流程命令,所以发现降落在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|json | json 将应用程序和最终部署显示为一个对象. |
全权证书来自 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|json | json 打印网站、目标和文件上传并删除. |
主要需要 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|json | json 从不包含一个值. |
值来自 --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,运行已建二进制.