maoda-commander-tt 0.0.71 → 0.0.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -0
- package/dist/{chunk-YZFLZ22B.js → chunk-UC2UEABF.js} +411 -133
- package/dist/chunk-UC2UEABF.js.map +1 -0
- package/dist/index.d.ts +37 -1
- package/dist/index.js +5 -1
- package/dist/main.js +1 -1
- package/package.json +4 -1
- package/dist/chunk-YZFLZ22B.js.map +0 -1
package/README.md
CHANGED
|
@@ -245,6 +245,86 @@ pnpm pub
|
|
|
245
245
|
|
|
246
246
|
参见 [npm Trusted Publishing 文档](https://docs.npmjs.com/trusted-publishers/)。
|
|
247
247
|
|
|
248
|
+
## COS 资源上传
|
|
249
|
+
|
|
250
|
+
`tt assets upload <file> --key <key>` 上传一个普通本地文件并返回自己的资源入口:
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
tt assets upload ./story.mp3 --key yoyo/audio/story.mp3
|
|
254
|
+
tt assets upload './封面 图片.webp' --key 'yoyo/images/封面 图片.webp'
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
`key` 是相对于资源根的原始名称,包含文件名;不推断项目名,不生成哈希名,不做 URL
|
|
258
|
+
解码。上传实际存入 COS 的 `tt/<key>`,公开入口为 `publicBaseUrl` 加逐段 URL 编码的
|
|
259
|
+
`key`。例如 `yoyo/audio/story.mp3` 存入 `tt/yoyo/audio/story.mp3`,返回
|
|
260
|
+
`https://www.imaoda.com/assets/yoyo/audio/story.mp3`。若 key 自带 `tt/`,不会自动去重。
|
|
261
|
+
|
|
262
|
+
只接受普通文件,拒绝目录、符号链接和特殊文件。key 最多 1021 个 UTF-8 字节,不能以
|
|
263
|
+
`/` 开头或结尾,不能含空路径段、`.`、`..`、反斜杠或控制字符;中文、空格、`?`、`#`
|
|
264
|
+
和字面 `%` 可用。`name%2Fpart.mp3` 是含字面 `%2F` 的名字,URL 中会编码为
|
|
265
|
+
`name%252Fpart.mp3`,不被当作额外目录。
|
|
266
|
+
|
|
267
|
+
同 key 默认更新目标对象,桶启用版本控制时保留版本的行为由 COS 管理。每次调用都会
|
|
268
|
+
上传,不会跳过未变化文件,也不做全目录增量同步或删除其他对象;各项目可只传新增或
|
|
269
|
+
明确要更新的文件。官方 `cos-nodejs-sdk-v5` 自动选择简单或分块上传,保留其重试和
|
|
270
|
+
分块恢复能力;这不等于按内容去重。上传期间不要修改源文件。
|
|
271
|
+
|
|
272
|
+
Content-Type 按本地文件扩展名确定,未知类型为 `application/octet-stream`,简单与
|
|
273
|
+
分块上传都显式设置。对象使用 `Cache-Control: no-cache`,让同 key 更新后重新验证
|
|
274
|
+
缓存;不设置长期 `immutable`,不改变桶 ACL 或公开读配置。
|
|
275
|
+
|
|
276
|
+
### 资源配置
|
|
277
|
+
|
|
278
|
+
复用跨应用 `~/.cli_settings/settings.json` 的**单个 `cos` 字符串键**,通过既有配置
|
|
279
|
+
writer 写入。它的 `value` 是包含以下五个字段的 JSON 字符串,不修改 settings 文件的
|
|
280
|
+
外层 schema,也不是五个独立设置键:
|
|
281
|
+
|
|
282
|
+
```json
|
|
283
|
+
{
|
|
284
|
+
"secretId": "<COS SecretId>",
|
|
285
|
+
"secretKey": "<COS SecretKey>",
|
|
286
|
+
"bucket": "cdna-1253404032",
|
|
287
|
+
"region": "ap-beijing",
|
|
288
|
+
"publicBaseUrl": "https://www.imaoda.com/assets/"
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
五项均为必填非空字符串,不接受额外字段。`publicBaseUrl` 必须是无账号、查询参数和
|
|
293
|
+
片段的 HTTPS URL,末尾 `/` 会统一补齐;桶内 `tt/` 根目录固定,不另设 root 配置。
|
|
294
|
+
命令只读取配置,不接受凭证参数,不打印配置值或 SDK 原始错误中的签名信息。
|
|
295
|
+
每台调用机器配置一次即可供不同项目使用;跨应用设置路径仍可通过
|
|
296
|
+
`TT_CROSS_APP_SETTINGS_FILE` 覆盖。
|
|
297
|
+
|
|
298
|
+
Nginx 将 `/assets/<编码后的key>` 302 到固定 COS 桶的 `/tt/<编码后的key>`,配置见
|
|
299
|
+
[资源入口路由](ops/nginx/tt-assets-location.conf)。302 保留原始 URL 编码,避免中文、
|
|
300
|
+
空格及保留字符被二次解释。入口省略 `tt/`,但跳转的 Location 和浏览器网络记录仍能
|
|
301
|
+
看到 COS 对象路径。入口和对象都可更新,所以不得长期缓存 302 跳转规则。
|
|
302
|
+
|
|
303
|
+
### 资源上传结果
|
|
304
|
+
|
|
305
|
+
stdout 是单行 JSON envelope;stderr 的周期性进度不是最终结果。命令等待 COS 确认
|
|
306
|
+
上传成功后退出,成功 `data` 示例:
|
|
307
|
+
|
|
308
|
+
```json
|
|
309
|
+
{
|
|
310
|
+
"state": "uploaded",
|
|
311
|
+
"key": "yoyo/audio/story.mp3",
|
|
312
|
+
"url": "https://www.imaoda.com/assets/yoyo/audio/story.mp3",
|
|
313
|
+
"bytes": 1048576,
|
|
314
|
+
"contentType": "audio/mpeg",
|
|
315
|
+
"etag": "\"example-etag\""
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
`etag` 和 `versionId` 仅在 COS 返回时提供。`uploaded` 表示 COS 确认完成,不意味着
|
|
320
|
+
302 入口、公开权限、CORS、音频拖动或浏览器播放均已通过验收;返回 URL 不带访问签名。
|
|
321
|
+
配置、输入和本地文件错误没有上传结果。进入 SDK 上传后若失败,返回非零退出码与
|
|
322
|
+
`data: {state: "unconfirmed", key, url}`,并保留可确定的 HTTP 状态或错误码。
|
|
323
|
+
尤其网络或超时失败时,对象可能已经写入,先核对目标再决定重试;重试同 key 会更新
|
|
324
|
+
该对象。不会把“请求失败”伪称为“确定未上传”。
|
|
325
|
+
|
|
326
|
+
`tt assets` 不参与网页构建和发布;继续用 `tt deploy` 发布现成站点产物。
|
|
327
|
+
|
|
248
328
|
## 静态文件部署
|
|
249
329
|
|
|
250
330
|
`tt deploy` 通过 HTTPS API 将现成的文件或目录部署到 nginx 静态目录,不执行构建。
|