说明小红书打包脚本预检与打包口径不一致的取舍

- pack.mjs 的 collectZipEntries 注释写明决定不改的理由:链接算不算合法产物还没定论,预检对链接是静默跳过

- manifest.json 同步 vite-export-xhs-minitool 的 sha256 与版本
This commit is contained in:
2026-10-06 22:56:35 +08:00
parent 3162b04ee4
commit e6190f080e
2 changed files with 9 additions and 7 deletions
@@ -1,6 +1,6 @@
{
"schemaVersion": "agc-skill-pack.v1",
"version": "2026-08-26.69",
"version": "2026-08-26.70",
"skills": [
{
"name": "agc-unity-editor",
@@ -204,7 +204,7 @@
"scripts/validate.mjs",
"scripts/vite.config.xhs-minitool.mjs"
],
"sha256": "1c2323f06e1b278f910c9aa48ae9c3c27ec351349c0c6a485fdc0603023d27ca"
"sha256": "fd869242fdd40bb46fc3fbf30d1509c79d306e769e87dad3430b2ab0e5449b12"
}
]
}
@@ -133,11 +133,13 @@ function crc32(buffer) {
/**
* 收集目录下所有条目(目录条目在前,文件名统一 / 分隔,保持排序以稳定产物)。
*
* 已知取舍(评审提出、当前决定不改):本函数用 `statSync`(跟随符号链接)且**不**跳 `SKIP_DIRS`,
* 而校验脚本预检用的 `walkArtifactFiles` 是 `lstatSync`(跳过链接)且会跳 `SKIP_DIRS`。两者口径
* 不一致:链接目标的内容会被按链接名打进包,`venv` / `.cache` 这类目录也可能绕过扩展名白名单。
* 不统一是因为「链接算不算合法产物」还没有定论,改任一侧都会动到现有可能依赖链接的包。真要统一
* 时必须两份实现一起改,并补一条「预检与打包看到同一批文件」的用例。
* 已知取舍(评审提出):本函数用 `statSync`(跟随符号链接)且**不**跳 `SKIP_DIRS`,而校验脚本
* 预检用的 `walkArtifactFiles` 是 `lstatSync`(跳过链接)且会跳 `SKIP_DIRS`。两者口径不一致:
* 链接目标的内容会被按链接名打进包,`venv` / `.cache` 这类目录也可能绕过扩展名白名单。
*
* **决定不改,理由**:「链接算不算合法产物」还没有定论,而预检对链接是**静默跳过**、不是拒绝;
* 照评审建议在打包侧对链接直接抛错,会和预检的口径打架,也会动到现有可能依赖链接的包。真要统一
* 时必须两份实现一起改成同一口径,并补一条「预检与打包看到同一批文件」的用例,那是独立的一次改动。
*/
function collectZipEntries(rootDir) {
const entries = [];