maoda-commander-tt 0.0.72 → 0.0.73
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 +13 -3
- package/dist/{chunk-UC2UEABF.js → chunk-HJSXXJQA.js} +85 -3
- package/dist/chunk-HJSXXJQA.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/main.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-UC2UEABF.js.map +0 -1
package/README.md
CHANGED
|
@@ -270,8 +270,15 @@ tt assets upload './封面 图片.webp' --key 'yoyo/images/封面 图片.webp'
|
|
|
270
270
|
分块恢复能力;这不等于按内容去重。上传期间不要修改源文件。
|
|
271
271
|
|
|
272
272
|
Content-Type 按本地文件扩展名确定,未知类型为 `application/octet-stream`,简单与
|
|
273
|
-
|
|
274
|
-
|
|
273
|
+
分块上传都显式设置。缓存按**目标 key 最后一个扩展名**选择,不区分大小写,不依据本地
|
|
274
|
+
文件名或 MIME:常见脚本、样式、图片、音视频、字体、PDF 和压缩包统一设置
|
|
275
|
+
`Cache-Control: public, max-age=2592000, immutable`(30 天);HTML、JSON、无扩展名
|
|
276
|
+
及其他类型使用 `no-cache`。完整扩展表见
|
|
277
|
+
[缓存策略](src/modules/assets/asset-cache-policy.ts),并与 Nginx 资源规则保持一致。
|
|
278
|
+
桶 ACL 或公开读配置不变。
|
|
279
|
+
|
|
280
|
+
同 key 覆盖仍会更新 COS 对象,**但不会刷新客户端已有的 30 天强缓存**。发布新内容
|
|
281
|
+
请使用新 key,例如 `yoyo/audio/story-v2.mp3`;命令不会强制改名或自动生成哈希。
|
|
275
282
|
|
|
276
283
|
### 资源配置
|
|
277
284
|
|
|
@@ -298,7 +305,10 @@ writer 写入。它的 `value` 是包含以下五个字段的 JSON 字符串,
|
|
|
298
305
|
Nginx 将 `/assets/<编码后的key>` 302 到固定 COS 桶的 `/tt/<编码后的key>`,配置见
|
|
299
306
|
[资源入口路由](ops/nginx/tt-assets-location.conf)。302 保留原始 URL 编码,避免中文、
|
|
300
307
|
空格及保留字符被二次解释。入口省略 `tt/`,但跳转的 Location 和浏览器网络记录仍能
|
|
301
|
-
看到 COS
|
|
308
|
+
看到 COS 对象路径。常见静态资源的 Nginx 响应采用相同的 30 天强缓存策略,其他类型
|
|
309
|
+
不强缓存,统一规则见 [静态缓存配置](ops/nginx/static-cache.conf) 与
|
|
310
|
+
[普通静态文件路由](ops/nginx/static-files-location.conf)。更新内容或资源入口映射时,
|
|
311
|
+
要考虑已经缓存的响应,使用新 key 发布新内容。
|
|
302
312
|
|
|
303
313
|
### 资源上传结果
|
|
304
314
|
|
|
@@ -7584,6 +7584,85 @@ function inputError(message) {
|
|
|
7584
7584
|
// src/modules/assets/cos-asset-uploader.ts
|
|
7585
7585
|
import COS from "cos-nodejs-sdk-v5";
|
|
7586
7586
|
import { Disposable as Disposable15 } from "rockbed/dispose";
|
|
7587
|
+
|
|
7588
|
+
// src/modules/assets/asset-cache-policy.ts
|
|
7589
|
+
var ASSET_STRONG_CACHE_EXTENSIONS = [
|
|
7590
|
+
"js",
|
|
7591
|
+
"mjs",
|
|
7592
|
+
"cjs",
|
|
7593
|
+
"css",
|
|
7594
|
+
"wasm",
|
|
7595
|
+
"map",
|
|
7596
|
+
"apng",
|
|
7597
|
+
"avif",
|
|
7598
|
+
"bmp",
|
|
7599
|
+
"gif",
|
|
7600
|
+
"heic",
|
|
7601
|
+
"heif",
|
|
7602
|
+
"ico",
|
|
7603
|
+
"jpeg",
|
|
7604
|
+
"jpg",
|
|
7605
|
+
"jxl",
|
|
7606
|
+
"png",
|
|
7607
|
+
"svg",
|
|
7608
|
+
"svgz",
|
|
7609
|
+
"tif",
|
|
7610
|
+
"tiff",
|
|
7611
|
+
"webp",
|
|
7612
|
+
"aac",
|
|
7613
|
+
"aif",
|
|
7614
|
+
"aiff",
|
|
7615
|
+
"flac",
|
|
7616
|
+
"m4a",
|
|
7617
|
+
"mid",
|
|
7618
|
+
"midi",
|
|
7619
|
+
"mp3",
|
|
7620
|
+
"oga",
|
|
7621
|
+
"ogg",
|
|
7622
|
+
"opus",
|
|
7623
|
+
"wav",
|
|
7624
|
+
"weba",
|
|
7625
|
+
"3gp",
|
|
7626
|
+
"3g2",
|
|
7627
|
+
"avi",
|
|
7628
|
+
"flv",
|
|
7629
|
+
"m4v",
|
|
7630
|
+
"mkv",
|
|
7631
|
+
"mov",
|
|
7632
|
+
"mp4",
|
|
7633
|
+
"mpeg",
|
|
7634
|
+
"mpg",
|
|
7635
|
+
"ogv",
|
|
7636
|
+
"webm",
|
|
7637
|
+
"wmv",
|
|
7638
|
+
"m4s",
|
|
7639
|
+
"ts",
|
|
7640
|
+
"eot",
|
|
7641
|
+
"otf",
|
|
7642
|
+
"ttf",
|
|
7643
|
+
"woff",
|
|
7644
|
+
"woff2",
|
|
7645
|
+
"pdf",
|
|
7646
|
+
"zip",
|
|
7647
|
+
"7z",
|
|
7648
|
+
"rar",
|
|
7649
|
+
"tar",
|
|
7650
|
+
"gz",
|
|
7651
|
+
"tgz",
|
|
7652
|
+
"bz2",
|
|
7653
|
+
"xz",
|
|
7654
|
+
"br",
|
|
7655
|
+
"swf"
|
|
7656
|
+
];
|
|
7657
|
+
var ASSET_STRONG_CACHE_CONTROL = "public, max-age=2592000, immutable";
|
|
7658
|
+
var ASSET_DEFAULT_CACHE_CONTROL = "no-cache";
|
|
7659
|
+
var strongCacheExtensions = new Set(ASSET_STRONG_CACHE_EXTENSIONS);
|
|
7660
|
+
function getAssetCacheControl(objectKey) {
|
|
7661
|
+
const extension = /\.([a-z0-9]+)$/i.exec(objectKey)?.[1].toLowerCase();
|
|
7662
|
+
return extension && strongCacheExtensions.has(extension) ? ASSET_STRONG_CACHE_CONTROL : ASSET_DEFAULT_CACHE_CONTROL;
|
|
7663
|
+
}
|
|
7664
|
+
|
|
7665
|
+
// src/modules/assets/cos-asset-uploader.ts
|
|
7587
7666
|
var CosAssetUploader = class extends Disposable15 {
|
|
7588
7667
|
constructor(_config) {
|
|
7589
7668
|
super();
|
|
@@ -7604,7 +7683,7 @@ var CosAssetUploader = class extends Disposable15 {
|
|
|
7604
7683
|
Key: input.objectKey,
|
|
7605
7684
|
FilePath: input.filePath,
|
|
7606
7685
|
ContentType: input.contentType,
|
|
7607
|
-
CacheControl:
|
|
7686
|
+
CacheControl: getAssetCacheControl(input.objectKey)
|
|
7608
7687
|
});
|
|
7609
7688
|
return {
|
|
7610
7689
|
...result.ETag ? { etag: result.ETag } : {},
|
|
@@ -7717,7 +7796,10 @@ var AssetsUploadCommand = class extends BaseCommand {
|
|
|
7717
7796
|
\u4E0D\u5141\u8BB8\u524D\u5BFC/\u5C3E\u968F /\u3001\u7A7A\u8DEF\u5F84\u6BB5\u3001.\u3001..\u3001\u53CD\u659C\u6760\u6216\u63A7\u5236\u5B57\u7B26\uFF1B\u4E2D\u6587\u3001\u7A7A\u683C\u548C\u5B57\u9762 % \u53EF\u7528\u3002
|
|
7718
7797
|
\u540C key \u9ED8\u8BA4\u66F4\u65B0\u5BF9\u8C61\uFF1B\u82E5\u6876\u542F\u7528\u7248\u672C\u63A7\u5236\uFF0C\u5386\u53F2\u7248\u672C\u7531 COS \u7BA1\u7406\u3002\u4E0D\u4F1A\u81EA\u52A8\u6539\u540D\u6216\u8DF3\u8FC7\u76F8\u540C\u5185\u5BB9\u3002
|
|
7719
7798
|
\u4E0A\u4F20\u4F7F\u7528\u5B98\u65B9 SDK\uFF0C\u6309\u6587\u4EF6\u5927\u5C0F\u81EA\u52A8\u9009\u62E9\u7B80\u5355\u6216\u5206\u5757\u4E0A\u4F20\uFF1B\u4E0A\u4F20\u671F\u95F4\u4E0D\u8981\u4FEE\u6539\u6E90\u6587\u4EF6\u3002
|
|
7720
|
-
Content-Type \u6309\u672C\u5730\u6587\u4EF6\u6269\u5C55\u540D\u8BC6\u522B\uFF0C\u672A\u77E5\u7C7B\u578B\u4E3A application/octet-stream\
|
|
7799
|
+
Content-Type \u6309\u672C\u5730\u6587\u4EF6\u6269\u5C55\u540D\u8BC6\u522B\uFF0C\u672A\u77E5\u7C7B\u578B\u4E3A application/octet-stream\u3002
|
|
7800
|
+
\u6309 key \u6700\u540E\u6269\u5C55\u540D\uFF08\u4E0D\u533A\u5206\u5927\u5C0F\u5199\uFF09\u9009\u62E9\u7F13\u5B58\uFF1B\u5E38\u89C1\u811A\u672C\u3001\u6837\u5F0F\u3001\u56FE\u7247\u3001\u97F3\u89C6\u9891\u3001\u5B57\u4F53\u3001PDF \u548C\u538B\u7F29\u5305\u5F3A\u7F13\u5B58 30 \u5929\u3002
|
|
7801
|
+
HTML/JSON \u53CA\u5176\u4ED6\u7C7B\u578B\u4E3A no-cache\uFF1B\u5B8C\u6574\u6269\u5C55\u8868\u89C1 README \u7684 COS \u8D44\u6E90\u4E0A\u4F20\u8BF4\u660E\u3002
|
|
7802
|
+
\u540C key \u8986\u76D6\u4E0D\u4F1A\u5237\u65B0\u5BA2\u6237\u7AEF\u5DF2\u6709\u5F3A\u7F13\u5B58\uFF1B\u53D1\u5E03\u65B0\u5185\u5BB9\u8BF7\u4F7F\u7528\u65B0 key\u3002
|
|
7721
7803
|
\u4E0D\u6267\u884C\u7F51\u9875\u6784\u5EFA\u3001\u76EE\u5F55\u589E\u91CF\u540C\u6B65\u6216\u5220\u9664\u5176\u4ED6\u5BF9\u8C61\u3002
|
|
7722
7804
|
`);
|
|
7723
7805
|
}
|
|
@@ -9400,4 +9482,4 @@ export {
|
|
|
9400
9482
|
TraexCommand,
|
|
9401
9483
|
createRootCommands
|
|
9402
9484
|
};
|
|
9403
|
-
//# sourceMappingURL=chunk-
|
|
9485
|
+
//# sourceMappingURL=chunk-HJSXXJQA.js.map
|