网站已运行 162 · 19小时 · 38 · 27
目录

Shopify theme package 教程:Dawn 打包实测与上传前检查

Shopify theme package 将 Dawn 主题文件打包为 ZIP 的特色封面

主题文件改完以后,下一步通常不是直接上传,而是先得到一个结构正确、可以复核的 ZIP。Shopify CLI 提供的 theme package 正是为这一步准备的:它从本地主题目录读取允许进入主题包的内容,再根据主题名称和版本生成压缩包。

这篇不是只抄命令说明。我用 Shopify CLI 4.7.0 对一个 Dawn 16.0.0 工作副本执行了完整打包,并检查了 ZIP 内的文件数量、顶层目录、自定义 Section、压缩包大小和 SHA-256。下面把这次 Shopify theme package 实测过程整理成可重复的步骤。

Shopify theme package 适合解决什么问题

shopify theme package 会把本地主题整理为可以上传到 Shopify 的 ZIP。它和 theme push 的用途不同:前者只在本地生成文件,不会把主题推送到商店;后者会连接商店并同步主题文件。

  • 交付主题给客户前,生成一份确定的压缩包;
  • 在上传主题库前,确认包内没有混入仓库文件;
  • 在 CI 中保留可下载、可校验的构建产物;
  • 为某次上线记录文件大小和校验值,方便之后追踪。

如果本地代码还没有做静态检查,建议先完成 Shopify Theme Check。打包成功只说明 ZIP 被生成,不等于主题代码没有错误,也不等于真实商店页面已经通过功能测试。

本次实测环境和结果

本次使用 Windows 环境、Shopify CLI 4.7.0 和 Dawn 16.0.0。工作副本保留了此前实际添加的 sections/szymwp-key-points.liquid,因此可以顺便验证自定义 Section 是否进入压缩包。主题目录的分工可以先参考 Dawn 主题目录结构

  • 输出文件:Dawn-16.0.0.zip
  • 压缩包大小:1,186,980 字节,约 1.13 MiB
  • ZIP 条目:354 个
  • SHA-256:B47FA5AD58F3253DAC62063D2CB02DA040CC02C24E0C486A90D117BC0D4CDDCC
  • 自定义 Section:已包含
  • layout/theme.liquid:已包含
  • README.md.github:未包含

包内顶层包含 assetsconfiglayoutlocalessectionssnippetstemplates。Dawn 这次还包含一个根目录的 release-notes.md,所以不要简单假设 ZIP 只能出现目录;最终应以实际清单为准。

第一步:确认 CLI 和主题目录

先在终端确认 Shopify CLI 版本:

shopify version

然后检查即将打包的路径。一个可上传的常规主题至少应使用 Shopify 支持的主题目录结构,其中 layout/theme.liquid 是关键文件。主题使用构建工具时,应把 --path 指向已经完成编译、真正准备上传的输出目录,而不是随手指向源码仓库根目录。

theme/
├── assets/
├── blocks/
├── config/
├── layout/
├── locales/
├── sections/
├── snippets/
└── templates/

blocks 并不是每个旧主题都一定存在,但当前 Shopify 主题架构已经支持独立的 theme blocks。没有使用该能力时,不要为了让目录看起来完整而创建空文件。

第二步:执行 Shopify theme package

在主题目录中运行:

shopify theme package

也可以在其他位置明确传入路径:

shopify theme package --path ./theme

这个命令不需要选择商店,也不会发布主题。实测成功时,终端返回生成位置:

Your local theme was packaged in .../Dawn-16.0.0.zip

文件名来自 config/settings_schema.json 中的 theme_nametheme_version。本次配置是 Dawn 与 16.0.0,因此输出为 Dawn-16.0.0.zip。如果生成的名称不符合预期,先检查主题信息,不要在每次构建后手工改名来掩盖配置问题。

{
  "name": "theme_info",
  "theme_name": "Dawn",
  "theme_version": "16.0.0"
}

第三步:不要只看“打包成功”

Shopify theme package 返回成功以后,我还会做四项检查。

1. 检查核心文件

展开 ZIP 清单,至少确认 layout/theme.liquid、配置文件、正在使用的模板,以及本次修改过的 Section 或 snippet 都存在。本次自定义的 sections/szymwp-key-points.liquid 已进入压缩包。

2. 检查仓库文件是否混入

Dawn 工作副本中存在 .git.githubREADME.mdLICENSE.md 和开发配置。本次 ZIP 没有包含 .git.githubREADME.md。这说明打包命令不是简单地把整个文件夹压缩,但仍应检查清单,而不是靠经验猜测。

3. 记录大小和校验值

文件大小可以帮助发现异常资产,SHA-256 则能确认交付文件是否就是审核过的那一份。Windows PowerShell 可以这样计算:

Get-FileHash .Dawn-16.0.0.zip -Algorithm SHA256

macOS 或 Linux 可以使用:

shasum -a 256 Dawn-16.0.0.zip

4. 再做上传前验证

ZIP 生成后,仍要在开发商店或未发布主题中检查首页、产品页、购物车、主题编辑器设置和手机端。Shopify 对上传主题包还有压缩大小等限制;当前官方主题限制页列出的压缩包上限是 50 MB,但实际项目不应把这个上限当成优化目标。

主题包导入后台后,不要从“上传成功”直接跳到公开发布;可以先按 Shopify 草稿主题预览教程,用真实商品、导航和移动端页面完成上线前复核。

常见问题

需要先登录 Shopify 吗?

单纯执行本地 Shopify theme package 不需要选择商店。涉及 theme pushtheme dev 或其他商店操作时,才需要相应的商店访问权限。

为什么 ZIP 名称不对?

先检查 config/settings_schema.json 中的主题信息。名称或版本为空、格式异常,通常说明主题元数据本身需要整理。

可以把整个项目目录直接交付吗?

源码仓库适合版本管理,上传包适合 Shopify 读取,两者职责不同。项目中如果还有构建脚本、设计源文件、测试数据或凭据,更不能把整个仓库直接当成交付 ZIP。

我的实际打包顺序

  1. 确认工作副本和准备交付的提交;
  2. 运行 Theme Check,并处理会阻断上线的问题;
  3. 在真实开发商店预览关键模板;
  4. 执行 shopify theme package
  5. 检查 ZIP 的核心文件、异常文件、大小和哈希;
  6. 把 ZIP、版本号、校验值和测试结论记录在交付说明中。

Shopify theme package 本身很简单,真正有价值的是把它放进一条可追踪的交付流程。这样拿到的不只是“一个能解压的 ZIP”,而是一份和代码状态、检查结果及版本号对应的主题产物。

n

如果当前起点是商店里的在线主题,可以先参考 Shopify theme pull 教程,把远程原始快照和本地工作副本分开,再进行 Theme Check 与打包。

nnn

官方资料:theme package 命令参考Theme architectureTheme limitsShopify CLI 4.0 Changelog(访问于 2026 年 8 月 26 日;本文实测 Shopify CLI 4.7.0、Dawn 16.0.0)。

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

目录

标签云: