al-folio 提交代码后 Prettier 格式检查工作流失败怎么处理?
【免费下载链接】al-folioA beautiful, simple, clean, and responsive Jekyll theme for academics项目地址: https://gitcode.com/GitHub_Trending/al/al-folio
使用 al-folio(一个面向学术个人主页的 Jekyll 主题)时,你本地的站点构建和预览一切正常,但创建 commit 提交或发起 PR 后,GitHub Actions 里的 Prettier 格式检查失败,报错形如prettier code formatter workflow run failed for main branch。这类失败和你的代码逻辑无关,而是提交的代码没有通过 Prettier 格式化检查。本文按“看失败 diff → 本地修复 → 本地验证 → 重新提交”的顺序,说明如何处理并在自己的仓库中关闭这项检查。
为什么工作流会失败
自 PR #2048 起,al-folio 使用 Prettier 对仓库代码做格式约束,所有新提交的代码必须符合其规范(见 docs/CONTRIBUTING.md)。
检查由 Prettier code formatter 工作流 执行:它在向master/main分支的push和pull_request事件上触发,在 ubuntu-latest 上安装prettier和@shopify/prettier-plugin-liquid后执行npx prettier . --check,对整个仓库做格式检查。检查使用的规则来自仓库根目录的 .prettierrc:
plugins: ["@shopify/prettier-plugin-liquid"] printWidth: 150 trailingComma: "es5"即启用了 Shopify 的 Liquid 模板插件(al-folio 大量使用 Liquid 模板),行宽 150。.prettierignore 列出的文件不参与检查,例如**/*.min.js、**/*.min.css、lighthouse_results/**、_data/citations.yml等。
所以只要推送的文件(包括.md、Liquid 模板、.yml等)与这套配置不一致,--check就会失败,而本地“能跑”并不等于“格式合规”。
先看失败 diff,确认需要改哪里
检查失败后,工作流会自动生成一份 diff,不需要猜哪里有问题:
- 失败时先运行
npx prettier . --write把仓库文件按配置改写; - 用
git diff -- . ':(exclude)package-lock.json' ':(exclude)package.json'生成diff.txt; - 用
diff2html-cli生成diff.html,并上传为名为HTML Diff的 artifact,保留 7 天(retention-days: 7); - 如果触发事件是
pull_request,工作流还会派发prettier-failed-on-pr事件,由 prettier-comment-on-pr.yml 在 PR 上自动评论,附带指向失败 run 和 diff 文件的链接。
操作路径:打开失败的 Prettier action run,下载HTML Diffartifact(或直接在 PR 里看自动评论),diff 中列出的就是需要修改的具体位置。注意 artifact 只保留 7 天,过期后需要在本地重新跑一遍下面的修复流程。
本地修复格式
docs/FAQ.md 给出了三条路径,按需选择:
手动运行 Prettier(最直接的修复方式)
如果本机没有 Docker 环境,先安装 Node(latest version),FAQ 建议通过 nvm 安装 Node 管理器和 Node。然后在项目目录内安装 Prettier:
npm install prettier或者全局安装:
npm install -g prettier安装后对当前目录执行格式修复(--write会直接改写不符合格式的文件):
npx prettier . --write仓库 package.json 的 devDependencies 中锁定的版本是prettier: ^3.8.0和@shopify/prettier-plugin-liquid: ^1.10.0。工作流本身安装的是prettier与@shopify/prettier-plugin-liquid的最新版本;如果想让本地环境与仓库的依赖集合一致,用npm ci按package-lock.json安装后再检查(见下文验证一节)。
Docker 开发容器
如果你按 docs/INSTALL.md 中 Local setup with development containers 一节使用 Docker + 开发容器本地运行,开发容器内已经自带 Prettier,直接执行npx prettier . --write即可,无需额外安装。
IDE 集成
如果你不使用 Docker,也可以把 Prettier 集成到你常用的 IDE(通过 Prettier 编辑器扩展),让编辑时自动保持格式合规。FAQ 只说明了这条路径的存在,具体扩展按你所用 IDE 选择。
提交前验证
按 docs/CONTRIBUTING.md 的 Local Validation 一节,在项目根目录执行:
npm ci npm run lint:prettier其中npm ci会按package-lock.json安装包括 Prettier 和 Liquid 插件在内的全部 devDependencies;lint:prettier在 package.json 中定义为prettier . --check,与工作流执行的检查命令一致。本地检查不再报格式问题后,把修复提交推送回分支,工作流会重新触发,观察 "Prettier Check" 这一步通过即表示该问题已解决。
不想启用这项检查时
如果你维护的是基于 al-folio 的站点仓库(而非主题本身),FAQ 提供了关闭方式:删除你仓库中的.github/workflows/prettier.yml文件。副作用是从此以后该仓库的 push / PR 不再执行 Prettier 格式检查,团队内代码格式将不再有 CI 约束,请自行评估。
另外注意一个常见混淆:仓库里还有一个Prettify gh-pages工作流(prettier-html.yml),它只在手动workflow_dispatch时运行、只格式化gh-pages分支的 HTML 文件,与 push 后自动触发的检查失败无关,不要把它当作失败来源去排查。
【免费下载链接】al-folioA beautiful, simple, clean, and responsive Jekyll theme for academics项目地址: https://gitcode.com/GitHub_Trending/al/al-folio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考