菜单

构建与部署

相关源文件

本文解释了前端开发者面试问题网站的构建和自动部署方式。它涵盖了使用 Eleventy 作为静态网站生成器进行的构建过程,以及使用 GitHub Actions 和 GitHub Pages 进行的部署过程。

有关网站结构本身的更多信息,请参阅网站架构;有关 Eleventy 配置的详细信息,请参阅使用 Eleventy 进行静态网站生成

构建与部署概览

前端开发者面试问题项目采用现代静态网站生成方法,将 Markdown 内容转换为功能齐全的网站。每当更改推送到主分支时,网站都会自动部署到 GitHub Pages。

构建和部署管道

来源:package.json5-9 .github/workflows/gh-pages-build.yml1-27 .gitignore3

构建系统

该项目使用 Eleventy (11ty) 作为其静态网站生成器。Eleventy 处理内容文件(主要是 Markdown),并使用模板和布局将它们转换为静态 HTML 文件。

构建脚本和配置

构建过程在 package.json 中配置,并使用位于 config/eleventy.config.js 的自定义 Eleventy 配置文件。主要的构建命令包含一个 pathprefix 参数,用于确保在部署到 GitHub Pages 时正确的 URL 处理。

该项目定义了两个主要的 npm 脚本

脚本命令目的
buildeleventy --config=config/eleventy.config.js --pathprefix='Front-end-Developer-Interview-Questions/'为生产环境构建站点,带有 GitHub Pages 路径前缀
starteleventy --config=config/eleventy.config.js --serve --port 9090 --quiet启动一个带有自动重载功能的本地开发服务器

来源:package.json6-9 package.json39-48

构建依赖

该项目依赖多个 npm 包来执行构建

依赖项目的
@11ty/eleventy静态网站生成器
@11ty/eleventy-plugin-syntaxhighlight代码语法高亮
clean-cssCSS 压缩
html-minifierHTML 压缩
markdown-itMarkdown 解析
uglify-esJavaScript 压缩

来源:package.json39-48

构建输出

构建过程在 _site 目录中生成静态网站文件。该目录包含完整的网站,包括 HTML、CSS、JavaScript 和其他资源,可供部署。

来源:.gitignore3

部署系统

该项目利用 GitHub Actions 进行持续集成和部署,每当更改推送到主分支时,都会自动构建和部署网站。

GitHub Actions 工作流

部署过程在 GitHub Actions 工作流文件 .github/workflows/gh-pages-build.yml 中定义。此工作流在推送到主分支时触发。

GitHub Actions 部署流程

来源:.github/workflows/gh-pages-build.yml1-27

工作流配置

GitHub Actions 工作流配置有以下关键元素

  1. 触发器: 在推送到主分支时运行
  2. 环境: 使用 Ubuntu 20.04 和 Node.js 16.x
  3. 构建步骤: 使用 TartanLlama/actions-eleventy action,配置与本地构建相同
  4. 部署步骤: 使用 peaceiris/actions-gh-pages 将 _site 目录发布到 gh-pages 分支

来源:.github/workflows/gh-pages-build.yml3-27

代码质量与安全

除了主构建和部署流水线之外,该项目还包括一个使用 GitHub CodeQL 进行代码质量和安全分析的工作流。

CodeQL 分析工作流

CodeQL 工作流自动分析 JavaScript 代码库中潜在的安全漏洞和代码质量问题。此工作流在以下情况下运行:

  • 当代码推送到主分支时
  • 当针对主分支打开拉取请求时
  • 每周计划运行(周日)

来源:.github/workflows/codeql-analysis.yml1-38

与网站架构的集成

构建和部署系统与网站架构集成,以交付最终产品。该过程将内容创建、站点生成和部署连接到一个持续的流水线中。

端到端集成

来源:package.json5-9 .github/workflows/gh-pages-build.yml1-27

总结

前端开发者面试问题项目的构建和部署系统提供了一个自动化、高效的工作流,用于将内容转换为静态网站并部署到 GitHub Pages。这种方法确保了:

  1. 内容自动转换为优化后的网站
  2. 主分支的更改触发自动部署
  3. 部署过程一致且可靠
  4. 代码质量和安全性持续受到监控

该系统一旦设置好,所需的手动干预极少,使贡献者能够专注于内容创建,而不是部署的繁琐事务。

来源:package.json5-9 .github/workflows/gh-pages-build.yml1-27 .github/workflows/codeql-analysis.yml1-38