彼得·科洛克 - 博客 - 教程:使用 Nix 和 flake.parts 构建我们的 Astro Starlight 页面

最近将 unwieldy 的 crate2nix 的 README.md 迁移到了更结构化的 GitHub 页面。经过研究,选择了AstroStarlight Theme,因为在达姆施塔特的 NixCon 2023 上听说过 Astro 的好处。

如果希望:

  • 从简单的*.md文件的文档开始,
  • 之后可能用React扩展一些客户端逻辑,这是一个很有吸引力的选择。

开始所需:
这是Tutorial: Using flake-parts to set up a nodejs devshell的后续,需已设置基于 flake 的项目并使用flake.parts,以及设置了带有正确npm版本的 devshell。

创建文档目录:
有了npm,可按照 Starlight 的指导开始操作并回答提示,如创建 Astro 项目、安装依赖、选择 TypeScript 等。

本地开发:
使用基于npm的快速周转工作流程npm run dev,暴露的 Web 服务器会在编辑时更新并显示错误。npmnode由 nix 提供,所有使用 nix 和 direnv 的协作者将拥有相同版本。

用 nix 进行密封构建:
创建flake-module.nix并添加到flake.nix的导入中,确保相关文件已添加到 git 索引。构建时会出现npmDepsHash为空的警告,需更新为正确的值,构建后会在/nix/store中存储文档并提供result符号链接。

.gitignore:
提交更改时会看到result符号链接,需将其添加到.gitignore中,星号可覆盖多个结果的构建。之前的npm_modules等已由 starlight 模板处理。

结论:
用 nix 构建 Starlight 页面很容易,但如果要部署到某处才更有用,下一集将进行部署,可在discourseGitHub issue上提供反馈或提问。

阅读 36
0 条评论