网站已运行 162 · 20小时 · 41 · 25
目录

Shopify Theme Check 使用教程:Dawn 实测与 CI 阈值

Shopify Theme Check 扫描 Liquid 代码并显示通过与警告的特色封面

Shopify Theme Check 是检查 Liquid 和 JSON 主题代码的官方工具。它不会替你证明页面已经在真实商店里正常运行,但能在上传主题之前发现语法、未定义对象、废弃写法和部分性能问题。本文不只列命令:我用 Shopify CLI 4.7.0 对本地 Dawn 16.0.0 跑了两轮检查,记录默认阈值与严格阈值为何会得到不同退出码。

这次 Shopify Theme Check 实测了什么

测试目录来自我此前拆解过的 Dawn 主题。本地副本基于 Dawn 16.0.0、Git 提交 258f00f,另外保留了本站 Section 实作文件,因此结果代表这个具体工作目录,不应直接当成所有 Dawn 16.0.0 副本的统一结论。

项目本次环境
操作系统Windows
Shopify CLI4.7.0
主题Dawn 16.0.0
Dawn 提交258f00f
默认检查结果0 error、11 warning、退出码 0
--fail-level warning同样 11 个 warning、退出码 1

这里最值得注意的不是“有 11 个警告”,而是同一份代码在不同失败阈值下可以返回不同退出码。如果准备把 Theme Check 放进 GitHub Actions 或其他 CI 流程,必须先明确团队要阻止 error,还是连 warning 也要阻止。

先确认 Shopify CLI 与主题目录

Shopify 当前文档要求安装 Node.js 22.12 或更高版本,并通过 npm、Yarn、pnpm 或 Homebrew 安装 Shopify CLI。已经安装时先检查版本;命令不存在时再升级或重新安装,不必为了 Theme Check 先登录商店。

node --version
shopify version
shopify theme check --help

Theme Check 是静态代码分析。只要本地目录是完整主题结构,运行 theme check 本身不需要把主题上传到商店。需要真实商店数据、预览链接和热更新时,才进入 shopify theme dev 的登录与开发主题流程。关于目录之间怎样参与渲染,可以先看本站的 Shopify Dawn 主题目录结构

运行第一次完整检查

进入主题根目录后直接运行:

shopify theme check

如果终端当前不在主题目录,可显式指定路径。这样更适合自动脚本,也能减少“检查了错误目录”的误判:

shopify theme check --path ./dawn

需要保存机器可读结果时使用 JSON 输出:

shopify theme check --path ./dawn --output json

我的工作目录返回 8 个涉及文件,共计 11 个 warning、0 个 error。警告包含 OrphanedSnippetVariableNameUnusedAssignUndefinedObject。默认失败级别为 error,因此这轮命令退出码仍然是 0。

为什么有 warning,命令仍然成功

--fail-level 决定从哪个严重级别开始让命令以非零状态结束。默认值是 error,所以只有 warning 并不会让默认检查失败。如果 CI 要求 warning 也必须处理,可以运行:

shopify theme check --path ./dawn --fail-level warning

我对同一目录执行这条命令后,报告内容仍是 0 error 和 11 warning,但退出码变成 1。这证明退出码不仅取决于问题数量,还取决于你设置的失败阈值。

使用场景建议命令
本地日常检查shopify theme check
保存 JSON 报告shopify theme check -o json
CI 阻止 errorshopify theme check --fail-level error
CI 连 warning 也阻止shopify theme check --fail-level warning
查看启用的检查项shopify theme check --list

warning 应该怎么处理

不要看到 warning 就批量关闭检查,更不要直接把 --auto-correct 当成“全部修复”。我通常按下面顺序判断:

  1. 先读检查名称和文件位置:确认它指向自己的改动、上游 Dawn 文件,还是仅在特定渲染上下文中成立的对象。
  2. 再判断是否影响运行:Liquid 语法错误与未知标签应优先处理;命名风格或可能未使用的变量需要结合调用链判断。
  3. 只做可解释的修改:若修改会改变商品、购物车或 Section 行为,应在开发主题中继续预览和回归测试。
  4. 最后才考虑局部忽略:确实属于工具无法理解的上下文时,用精确注释或配置限定范围,并在代码审查中写明原因。

例如 UndefinedObject 不一定等于线上必然报错。某些对象可能由 Section、layout 或运行环境提供,而静态分析无法完整推导。相反,自己新写的 snippet 报 UnusedAssign,通常就值得回到调用链确认变量是否真的遗漏。本站的 Shopify Liquid snippet 与 render 参数实作展示了如何把变量来源写得更清楚。

用 .theme-check.yml 管理项目规则

项目需要长期维护时,可以在主题根目录添加 .theme-check.yml。官方配置支持继承推荐规则、忽略目录,以及按检查项设置启用状态、严重级别和文件范围。先让 CLI 生成基础配置:

shopify theme check --init

下面是一个刻意保持简单的示例:

extends:
  - theme-check:recommended

ignore:
  - node_modules/**

UnusedAssign:
  severity: warning

如果主题源文件会先从 src 构建到 dist,应通过 root 指向真正需要检查的输出目录。不要用大范围 ignore 掩盖第三方或历史代码;排除范围越大,Theme Check 能提供的保护越少。

把 Theme Check 放进实际开发流程

Theme Check 最适合放在三个位置:

  • 写 Liquid、Section 或 snippet 时,在本地随时运行;
  • 提交 Git 前运行一次完整检查;
  • 在 CI 中用明确的 --fail-level 阻止不符合团队规则的合并。

它不能替代真实预览。Theme Check 通过后,仍要在开发主题中检查 Section 配置、Block 排序、商品数据、购物车行为和手机端布局。若正在做可视化模块,可以结合本站的 Shopify Section 和 Block 实作继续测试编辑器行为。

几个常见问题

运行 Shopify Theme Check 必须登录商店吗?

检查本地完整主题目录时不需要商店登录。涉及 theme devtheme pulltheme push 等商店操作时才需要相应权限和认证。

0 error 是否代表主题可以直接上线?

不是。它只说明当前规则没有发现达到 error 级别的问题。真实数据、交互、兼容性、性能和移动端仍需在预览商店中验证。

可以直接使用 –auto-correct 吗?

可以先在独立 Git 分支尝试,但必须审查 diff 并重新测试。自动修正只适合工具能确定的改动,无法替代对业务逻辑和主题结构的判断。

本次结论

Shopify Theme Check 的核心价值不是追求一张“全绿”报告,而是把 Liquid 和 JSON 的静态问题提前到上传之前。本次 Dawn 目录在默认 error 阈值下以 0 退出,在 warning 阈值下以 1 退出,说明 CI 配置必须明确失败级别。先修真正影响运行的问题,再对需要保留的上下文警告做小范围、可解释的配置,比全局关闭检查更可靠。

静态检查完成后,如果要把审核过的工作副本整理成可上传 ZIP,可以继续看 Shopify theme package 教程

如果你正在为集合页设置每页商品数量,可以继续看 Shopify Liquid paginate 与 Dawn 分页实测,里面记录了 PaginationSize 阈值从 60 调回 24 的前后结果。

官方资料:Shopify Theme Check 概览Shopify CLI theme check 命令参考Theme Check 配置说明Shopify CLI 4.0 更新日志(访问日期:2026 年 8 月 25 日;实测环境:Shopify CLI 4.7.0、Dawn 16.0.0,提交 258f00f

数臻源码猫咪图标
目录
数臻源码猫咪图标

目录

标签云: