yuque-cookie-plugin 0.1.0

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.
@@ -0,0 +1,91 @@
1
+ # npm 发布指南
2
+
3
+ 本项目正式分发建议走 npm,GitHub tarball 只作为临时备用安装方式。
4
+
5
+ ## 安装方式
6
+
7
+ 发布后用户只需要:
8
+
9
+ ```bash
10
+ npm install -g yuque-cookie-plugin
11
+ yuque-local auth login
12
+ yuque-local doctor --json
13
+ yuque-local skill install --json
14
+ ```
15
+
16
+ 无头环境使用:
17
+
18
+ ```bash
19
+ yuque-local auth login --manual
20
+ ```
21
+
22
+ ## 发布前检查
23
+
24
+ ```bash
25
+ npm run release:check
26
+ ```
27
+
28
+ 这个命令会执行类型检查、测试、构建、敏感信息扫描、npm 包名检查、`npm pack` 和临时 prefix 安装验证。
29
+
30
+ 确认 tarball 至少包含:
31
+
32
+ - `bin/yuque-local.mjs`
33
+ - `dist/`
34
+ - `skills/yuque-cookie-plugin/`
35
+ - `vendor/lake-editor/`
36
+ - `README.md`
37
+ - `docs/usage-zh.md`
38
+
39
+ ## 本地包安装预演
40
+
41
+ 不要直接污染全局环境,可使用临时 prefix:
42
+
43
+ ```bash
44
+ tmp_prefix=$(mktemp -d /tmp/yuque-npm-prefix-XXXXXX)
45
+ npm pack
46
+ npm install -g --prefix "$tmp_prefix" ./yuque-cookie-plugin-0.1.0.tgz
47
+ "$tmp_prefix/bin/yuque-local" --help
48
+ "$tmp_prefix/bin/yuque-local" doctor --json
49
+ ```
50
+
51
+ 验证后删除本地 `.tgz`。
52
+
53
+ ## 正式发布
54
+
55
+ 首次发布前需要登录 npm:
56
+
57
+ ```bash
58
+ npm login
59
+ ```
60
+
61
+ 注意:浏览器/邮箱里的登录 OTP 只能完成 CLI 登录,不一定能用于发布。npm 现在要求发布包时满足以下任一条件:
62
+
63
+ - 账号已开启 2FA,并在发布时提供认证器或安全密钥生成的 OTP。
64
+ - 使用创建时启用了 bypass 2FA 的 granular access token。
65
+
66
+ 发布:
67
+
68
+ ```bash
69
+ npm publish
70
+ ```
71
+
72
+ 如果发布时报:
73
+
74
+ ```text
75
+ Two-factor authentication or granular access token with bypass 2fa enabled is required to publish packages.
76
+ ```
77
+
78
+ 说明当前账号只是登录了 npm CLI,但还没有满足发布级别的 2FA 要求。需要在 npm 账号安全设置中开启 2FA,或创建可发布本包的 granular access token。
79
+
80
+ 如果以后改成 scoped 包,例如 `@c-sunc6/yuque-cookie-plugin`,首次公开发布需要:
81
+
82
+ ```bash
83
+ npm publish --access public
84
+ ```
85
+
86
+ ## 注意事项
87
+
88
+ - 不要把真实 `_yuque_session` 或 `yuque_ctoken` 写入仓库。
89
+ - 不要把 `~/.config/yuque-cookie-plugin/config.json` 打进包。
90
+ - 发布前确认 `package.json` 的 `files` 字段包含运行时必需文件。
91
+ - 当前 license 为 `UNLICENSED`,如果要开源给外部用户正式复用,发布前应决定是否改为 MIT、Apache-2.0 或其他许可证。
@@ -0,0 +1,146 @@
1
+ # 真实语雀验收流程
2
+
3
+ ## 目的
4
+
5
+ `real:acceptance` 用于手动验证真实语雀 Web Session 链路。它替代 `yuque-dl/test/realRequest.test.ts` 的思路,但不会进入默认 `npm test`。
6
+
7
+ 上线前最终验收必须使用真实语雀 URL、真实文档、真实图片/附件/音视频资源。Mock 数据只用于开发阶段单元测试,不能作为上线验收依据。
8
+
9
+ 原因:
10
+
11
+ - 真实验收依赖网络、登录态和私有知识库权限。
12
+ - 默认测试不能依赖真实 `_yuque_session` 或 `yuque_ctoken`。
13
+ - 验收报告要能长期保存,便于回溯真实环境表现。
14
+
15
+ ## 前置条件
16
+
17
+ 先完成登录:
18
+
19
+ ```bash
20
+ npm run yuque-local -- login
21
+ ```
22
+
23
+ 登录后先检查登录态:
24
+
25
+ ```bash
26
+ npm run yuque-local -- auth-status https://www.yuque.com/<your-login>/<your-book>
27
+ ```
28
+
29
+ `auth-status` 会记录最近保存、最近成功验证、最近失败验证时间。若返回 `valid: false`,需要重新运行 `login` 并由用户手动填写新的 Cookie。
30
+
31
+ 或使用环境变量:
32
+
33
+ ```bash
34
+ export YUQUE_SESSION='your _yuque_session'
35
+ export YUQUE_CTOKEN='your yuque_ctoken'
36
+ export YUQUE_HOME_URL='https://www.yuque.com/your-login/'
37
+ ```
38
+
39
+ 不要把真实 Cookie 写入项目文件。
40
+
41
+ ## 整库验收
42
+
43
+ ```bash
44
+ npm run real:acceptance -- \
45
+ --book-url https://www.yuque.com/<your-login>/<your-book> \
46
+ --dist-dir /tmp/yuque-real-acceptance
47
+ ```
48
+
49
+ 脚本会执行:
50
+
51
+ - `inspect` 真实知识库。
52
+ - 第一次 `download-book --incremental --quiet`。
53
+ - 第二次 `download-book --incremental --quiet`,验证未变化文档跳过。
54
+ - 检查 `index.md` 和 `progress.json` 是否生成。
55
+ - 检查 `resources.files` 中的本地图片和附件是否存在。
56
+ - 输出并保存 JSON 报告到 `reports/real-acceptance-*.json`。
57
+
58
+ ## 单篇或多篇验收
59
+
60
+ ```bash
61
+ npm run real:acceptance -- \
62
+ --doc-url https://www.yuque.com/user/book/doc1 \
63
+ --doc-url https://www.yuque.com/user/book/doc2 \
64
+ --dist-dir /tmp/yuque-real-docs
65
+ ```
66
+
67
+ 报告会额外检查每个下载出的 Markdown 文件:
68
+
69
+ - `download-doc.ok`
70
+ - `download-doc.files`
71
+ - `download-doc-file-1.ok`
72
+ - `download-doc-file-1.size`
73
+ - `download-doc-file-1.preview`
74
+ - `download-doc.resources`
75
+ - `download-doc-resource-1.ok`
76
+
77
+ 如果有多个 `--doc-url`,会按下载结果依次生成 `download-doc-file-N` 检查项。
78
+
79
+ ## 音视频和资源验收
80
+
81
+ 建议选择包含图片、附件、音频或视频卡片的真实文档单独跑:
82
+
83
+ ```bash
84
+ npm run real:acceptance -- \
85
+ --doc-url https://www.yuque.com/user/book/doc-with-media \
86
+ --dist-dir /tmp/yuque-real-media
87
+ ```
88
+
89
+ 重点看报告里的:
90
+
91
+ - `download-doc.warning_summary.total`
92
+ - `download-doc.warning_summary.by_type`
93
+ - `download-doc.warning_summary.retryable_resources`
94
+ - `download-doc.resources.total`
95
+ - `download-doc.resources.by_type`
96
+ - `download-doc.resources.files`
97
+ - `download-doc.retry`
98
+
99
+ 判断方式:
100
+
101
+ - `warning_summary.total = 0`:主文档和资源都没有发现下载告警。
102
+ - `warning_summary.by_type.media > 0`:音频或视频资源有下载失败,需要检查 `retryable_resources`。
103
+ - `warning_summary.by_type.image > 0`:图片资源有下载失败。
104
+ - `warning_summary.by_type.attachment > 0`:附件资源有下载失败。
105
+ - `retryable_resources` 中的 `url` 是后续人工排查或单独补下载的依据。
106
+ - `resources.files` 是已经成功落盘的资源清单,脚本会追加 `download-doc-resource-N` 或 `download-book-resource-N` 文件检查项。
107
+
108
+ 注意:`download-doc.retry` 只针对失败文档 URL;资源级失败目前通过 `warning_summary.retryable_resources` 汇总,还没有独立的资源重试命令。
109
+
110
+ ## 额外 Cookie
111
+
112
+ 如果需要企业私有语雀、公开密码或特殊访问 Cookie:
113
+
114
+ ```bash
115
+ npm run real:acceptance -- \
116
+ --book-url https://www.yuque.com/user/book \
117
+ --cookie-key verified_books \
118
+ --cookie-value '<cookie-value>'
119
+ ```
120
+
121
+ ## 通过标准
122
+
123
+ 报告中的 `ok` 应为 `true`。
124
+
125
+ 整库验收至少应看到:
126
+
127
+ - `inspect-book.ok: true`
128
+ - `download-book-first.ok: true`
129
+ - `download-book-incremental.ok: true`
130
+ - `book-index.ok: true`
131
+ - `book-progress.ok: true`
132
+
133
+ 如果 `warnings` 非空,说明主流程成功,但有图片、附件或音视频资源下载失败,需要人工评估是否接受。
134
+
135
+ 单篇资源验收至少应看到:
136
+
137
+ - `download-doc.ok: true`
138
+ - `download-doc-file-1.ok: true`
139
+ - `download-doc.warning_summary.total: 0`,或能解释每一条资源告警
140
+
141
+ ## 注意
142
+
143
+ - 这个脚本是手动验收,不属于默认自动化测试。
144
+ - 它不会写入语雀线上文档,只读取并下载。
145
+ - 输出目录如果未指定,会使用系统临时目录。
146
+ - 报告里不会保存 Cookie 值。