在 Look Scanned,我们不断改进基础设施,以提供更好的文档和更安全的开发实践。今天,我们很高兴分享 How-To 文档站点的重大升级详情:从自定义的 Vue + Vite 应用程序迁移到 VitePress,同时通过 npm Trusted Publishers 增强 CI/CD 安全性。
📚 为什么迁移到 VitePress
我们的 How-To 文档站点(github.com/lookscanned/how-to)是 Look Scanned 的综合使用指南。虽然之前的 Vue + Vite 设置运行良好,但我们认识到 VitePress 更适合内容驱动的文档站点。
什么是 VitePress?
VitePress 是专门为文档设计的静态站点生成器。它基于 Vite 和 Vue 3 构建,结合了两者的优势:闪电般快速的开发体验和开箱即用的强大文档功能。
迁移的主要优势
🎯 更适合文档的架构
- 基于文件的路由:每个 markdown 文件自动成为一个页面,使内容组织直观
- 内置文档功能:目录、搜索、国际化等功能预配置完成
- 静态站点生成:预渲染的 HTML 提供出色的 SEO 和即时页面加载
⚡ 改进的开发体验
- 即时热重载:开发过程中更改立即显示
- Markdown 优先:专注于内容,而非组件搭建
- Vue 组件支持:需要时,仍可在 markdown 中使用自定义 Vue 组件
🔧 更易维护
- 更清晰的结构:文档遵循约定,减少贡献者的认知负担
- 更稳定的构建:VitePress 的约定式结构带来更可复现的构建
- 更好的协作:团队成员无需深入了解 Vue 即可贡献文档
🔒 通过 npm Trusted Publishers 提升安全性
在 VitePress 迁移的同时,我们实施了一项关键的安全改进:使用 OIDC 身份验证的 npm Trusted Publishers。
传统 npm Token 的问题
以前,向 npm 发布包需要在仓库 secrets 中存储长期有效的 NPM_TOKEN。这种方法有几个缺点:
- 安全风险:token 可能被意外暴露或泄露
- 管理开销:token 需要手动轮换和更新
- 审计困难:难以追踪谁在何时发布了什么
解决方案:基于 OIDC 的可信发布
npm Trusted Publishers 利用 OpenID Connect (OIDC) 直接从 GitHub Actions 实现安全的无 token 发布。其工作原理如下:
- 无需存储密钥:GitHub Actions 向 npm 请求短期凭证,而非保存 token
- 身份验证:npm 验证发布请求来自授权的 GitHub 仓库
- 自动凭证管理:凭证自动签发并快速过期
实际效益
这一变更为我们的开发工作流带来了立竿见影的改进:
- ✅ 无需管理 token:不再需要创建、存储或轮换 npm token
- ✅ 减少攻击面:短期凭证最大限度地降低暴露风险
- ✅ 更好的可审计性:每次发布操作都与特定的 GitHub Actions 运行相关联
- ✅ 现代最佳实践:符合零信任安全原则
技术说明:为支持 npm Trusted Publishers,我们将 CI 配置更新为使用 Node.js lts/*,确保具有 OIDC 身份验证所需的最新 npm 版本。
📦 发布时间线
迁移通过 2025 年 12 月 19 日的三个版本完成:
- v2.0.0:从 Vue + Vite 迁移到 VitePress 的核心更改(破坏性变更)
- v2.0.1:CI 修复,以使用正确的 Node.js 版本支持 npm Trusted Publishers
- v2.0.2:通过将
@fontsource/noto-mono移至 devDependencies 来提升性能
🌍 持续的多语言支持
重要说明:我们的 How-To 文档生成的多语言 PDF 一直被用作 Look Scanned 主应用程序中的示例文件(可在 lookscanned.io/en/scan 获取)。此次 VitePress 迁移不改变该功能——它只是为维护和改进文档基础设施提供了更好的基础。
💡 这对用户意味着什么
如果您使用 Look Scanned 的文档:
- 相同的访问方式,更好的体验:文档仍在相同的 URL,但加载和导航得到改进
- 更可靠:静态站点生成意味着更快的加载和更好的稳定性
- 更好的搜索和发现:VitePress 的内置搜索帮助您更快找到答案
- 持续的 PDF 支持:多语言 PDF 生成一如既往地继续
🚀 下一步计划
随着基础设施升级完成,我们将重点放在内容改进上:
- 扩展用例:更多实用示例和分步指南
- 一致性改进:优化多语言术语以提高清晰度
- 增强 PDF 导出:改进跨浏览器 PDF 生成体验
立即试用 Look Scanned
Look Scanned 提供基于浏览器的隐私优先 PDF 扫描效果,无需将文件上传到任何地方。改进的文档使入门变得比以往任何时候都容易。
👉 访问 lookscanned.io,在浏览器中体验快速、安全的文档扫描。