Skip to Content
🎉 探索 Shopify 的无限可能 结构化知识 + 实战案例,持续更新中...
进阶教程Shopify本地修改主题开发指南

Shopify 主题本地开发环境搭建

直接在 Shopify 在线主题编辑器里改代码能跑通简单需求,但任何稍微复杂的主题项目最终都会绕到本地开发——三个核心痛点决定了这一点:

在线编辑器的局限影响
无智能代码提示Liquid 标签 / 过滤器记不全,靠搜索文档非常慢
无热更新每改一次都要手动刷新,简单页面也容易改错
无版本控制多人协作冲突无法解决,回滚只能靠”我记得改了什么”

本地开发的核心收益:完整的 IDE 支持、Hot Reload、Git 版本控制、Theme Check 自动校验、可重用的脚本流程(构建 / 部署 / Lint)。

配套阅读

工作流速查

阶段命令频率
首次配置npm install -g @shopify/cli@latest一次性
登录第一次执行 theme pull 时触发一次性
拉主题shopify theme pull -s <store-name>项目启动 / 同步更新时
本地开发shopify theme dev日常开发
代码校验shopify theme check提交前 / CI
推送shopify theme push(交互式选目标)部署时

重要避免 shopify theme push -l(直接推线上)——任何人为操作失误都会直接影响生产环境。推荐工作流是 push 到一个预发主题,在 Admin Theme Library 预览确认后再发布为正式主题。

主题搭建

环境要求

在开始本地开发之前,请确保您的开发环境满足以下条件:

  • Node.js 版本 18.16.0 或更高(推荐使用nvm管理)
  • 科学的网络环境(科学上网,开启TUN模式,关闭防火墙)
  • 代码编辑器 (推荐 VS Code,支持Liquid语法高亮)

安装 Shopify CLI

npm install -g @shopify/cli@latest

验证安装

shopify version # 输出示例: 3.77.1

拉取主题

前置条件

  • 确保有Shopify开发者账号(合作伙伴)
  • 对目标店铺有权限

登录 Shopify CLI

首次使用时需要登录 Shopify 账户。执行任何需要认证的命令时,如果未登录会自动触发登录流程:

shopify theme pull -s [store-name]

系统会显示类似以下的登录提示:

To run this command, log in to Shopify. User verification code: HNKZ-DQXZ 👉 Press any key to open the login page on your browser Opened link to start the auth process: https://accounts.shopify.com/activate-with-code?device_code%5Buser_code%5D=HNKZ-DQXZ

登录步骤:

  1. 按任意键:系统会自动在浏览器中打开登录页面
  2. 输入验证码:在浏览器页面中输入显示的验证码(如:HNKZ-DQXZ)
  3. Shopify 账户登录:使用您的 Shopify 开发者账户登录
  4. 授权应用:确认授权 Shopify CLI 访问您的账户
  5. 完成认证:返回终端,登录流程完成

登录成功后,CLI 会保存认证信息,后续操作无需重复登录。

从店铺拉取主题

shopify theme pull -s [store-name]

其中 [store-name] 为您的店铺名称,可以在店铺管理页面的 URL 中找到。

登录成功后,系统会自动获取您有权限访问的店铺列表,然后显示该店铺中可用的主题:

shopify theme pull -s your-store ? Select a theme to open: Type to search... Development > Development (development-theme) Live Live Theme Unpublished Draft Theme

您可以选择不同类型的主题:

  • Live - 当前在线使用的主题
  • Unpublished - 未发布的草稿主题
  • Development - 开发测试主题

选择后将下载完整的主题文件结构到本地目录。

本地启动

启动开发服务器

shopify theme dev

如果遇到启动问题,可以尝试以下解决方法:

  • 检查网络连接:确保网络稳定,必要时使用科学上网工具
  • 关闭防火墙:临时关闭本地防火墙或添加例外规则

启动成功后的控制台

启动成功后,您将看到类似以下的控制台输出:

success ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ Preview your theme (t) │ http://127.0.0.1:9292 Next steps Share your theme preview (p) [1] https://your-store.myshopify.com/?preview_theme_id=123456789 Customize your theme at the theme editor (e) [2] │ Preview your gift cards (g) [3] │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ [1] https://your-store.myshopify.com/?preview_theme_id=123456789 [2] https://your-store.myshopify.com/admin/themes/123456789/editor?hr=9292 [3] http://127.0.0.1:9292/gift_cards/preview

此时本地服务器 http://127.0.0.1:9292 已成功启动,您可以通过修改文件内容实现实时热更新预览。

主题文件结构

theme/ ├── assets/ # CSS, JS, 图片文件 ├── config/ # 主题设置配置 ├── layout/ # 布局模板 ├── locales/ # 多语言文件 ├── sections/ # 可重用的内容块 ├── snippets/ # 代码片段 ├── templates/ # 页面模板 └── templates/customers/ # 客户相关页面

开发注意事项

重要提醒

当您点击主题编辑器链接时,会打开一个临时的开发主题。在此环境中的修改不会影响到现有的线上主题,这提供了一个安全的测试环境。

关键注意事项:在主题编辑器中进行的修改会更新到临时主题的文件结构中,但不会自动同步到本地项目。一旦关闭本地开发服务,在编辑器中的修改可能会丢失。

保存编辑器修改

为了保存在主题编辑器中的修改,您需要手动同步临时主题的内容到本地项目:

  1. 创建一个新的文件夹
  2. 使用 shopify theme pull -s [store-name] 拉取临时主题
  3. 将相关文件(特别是 templates 目录)的内容合并到您的本地项目中

调试技巧

在Liquid模板中添加调试信息:

{% comment %} 调试变量 {% endcomment %} {{ product | json }} {% comment %} 条件调试 {% endcomment %} {% if settings.debug_mode %} <div class="debug-info"> {{ page_title }} </div> {% endif %}

部署主题

开发完成后,您需要将本地的修改推送到 Shopify 商店的指定主题中。

查看主题列表

首先查看商店中现有的主题:

shopify theme list

推送方式

交互式推送(推荐):

shopify theme push

执行后会提示您选择目标主题,这是最安全的方式。

推送到指定主题

shopify theme push -t [theme-id]

其中 [theme-id] 可以通过 shopify theme list 命令获取。

推送到线上主题(高风险):

shopify theme push -l

⚠️ 警告:此命令会直接更新当前线上主题,操作不可撤销,请谨慎使用。

常见问题和解决方案

登录问题

如果遇到 Shopify CLI 登录失败:

  • 验证码问题:确保正确输入终端显示的验证码(区分大小写)
  • 浏览器问题:如果自动打开失败,手动复制链接到浏览器
  • 网络问题:确保科学上网工具正常工作(开启TUN模式,关闭防火墙)
  • 权限问题:确认使用的是有店铺访问权限的开发者账户

启动问题

如果遇到 shopify theme dev 启动失败:

  • 检查网络连接,确保可以访问 Shopify 服务
  • 验证 Node.js 版本是否符合要求(≥18.16.0)
  • 临时关闭防火墙或添加应用例外
  • 检查是否正确登录了 Shopify CLI(可运行 shopify auth logout 后重新登录)

同步问题

如果遇到文件同步异常:

# 强制拉取最新文件,覆盖本地修改 shopify theme pull --force

临时主题管理

保存主题编辑器中修改的标准流程:

  1. 在主题编辑器中完成所需修改
  2. 创建新的工作目录
  3. 使用 shopify theme pull -s [store-name] 拉取临时主题
  4. 手动合并相关文件到本地项目

部署注意事项

  • 避免直接推送到线上shopify theme push -l 会立即更新生产环境
  • 使用测试流程:先推送到开发或测试主题进行验证
  • 确认目标主题:使用 shopify theme list 查看并确认目标主题ID

开发工具

推荐 VS Code 扩展

  • Shopify Liquid: 提供 Liquid 语法高亮和代码提示
  • GitLens: Git 版本控制可视化
  • Prettier: 代码格式化

有用的 Shopify CLI 命令

# 检查主题文件 shopify theme check # 格式化代码 shopify theme format # 查看主题信息 shopify theme info

常见问题(FAQ)

Q:Shopify CLI 登录卡住 / 报 “User verification code” 失败怎么办? A:常见三个原因——(1)浏览器自动打开失败:手动复制终端里的链接到浏览器;(2)验证码区分大小写:终端显示的是 HNKZ-DQXZ 就要原样输入;(3)网络问题:访问 accounts.shopify.com 需要稳定国际网络,建议开启 TUN 模式 / 全局代理。

Q:theme dev 启动后浏览器空白 / 资源 404? A:90% 是网络问题——theme dev 需要从 Shopify CDN 拉资源 + 与你的店铺保持长连接。临时关闭本地防火墙、关闭其他占用 9292 端口的进程、确认 Node ≥ 18.16。

Q:在主题编辑器(Admin)里改了 section,本地代码没有同步过来? A:这是标准坑。Admin 主题编辑器的修改保存在 Shopify 服务端的临时主题里,不会自动同步到本地。需要手动:

  1. shopify theme pull -s <store-name> 选择临时主题
  2. 把变更(特别是 templates/config/settings_data.json)合并到本地仓库
  3. 重新 commit

Q:theme push 到底应该推到哪个主题? A:永远不要直接推到 Live 主题。推荐工作流:

  1. 先在店铺 Admin 创建一个 “Preview” 主题
  2. shopify theme push -t <preview-theme-id> 推到 preview
  3. 在 Admin Theme Library 点击”预览”全面检查
  4. 没问题后在 Admin 中”发布”为正式主题(即可一键回滚)

Q:本地能否做 Theme Check? A:可以。shopify theme check 是官方静态检查工具,能查出 Liquid 语法错误、性能问题(如 N+1 查询)、Accessibility 缺失等。强烈建议配置到 .husky/pre-commit 钩子,阻止低质量代码被提交。

Q:多人协作 / Git 仓库该怎么组织? A:参考 主题工程化:目录与 npm 脚本,核心建议:(1).shopifyignore 排除 config/settings_data.json(避免运营在 Admin 的设置被覆盖);(2)每个主题对应一个 git 分支;(3)发布前跑 Theme Check + Prettier。

Q:AI(Cursor / Claude Code)能直接写 Liquid 主题吗? A:可以但需要 Shopify AI Toolkit 加持——参考 Shopify AI Toolkit 使用指南。直接让通用聊天模型写 Liquid 经常出现”凭训练数据猜字段名”的错误。AI Toolkit 让 AI 对照官方 Schema 生成,更可靠。

Q:为什么 theme push 后看不到变化? A:通常是浏览器 / Shopify CDN 缓存。强制刷新(Cmd/Ctrl + Shift + R);CDN 边缘缓存最多 1–2 分钟会自动刷新。如果是 assets/ 下的 JS / CSS,建议在 theme.liquid 引用时加 ?v={{ 'now' | date: '%s' }} 做版本指纹(注意:影响 CDN 缓存命中率,仅开发期用)。


延伸阅读


小结:Shopify CLI + 本地开发是任何非玩具级主题项目的标配。三个最容易踩的坑:(1)忘记同步 Admin 编辑器里的修改;(2)push -l 直推 Live;(3)没跑 Theme Check 就提交。把这三条写进团队 SOP,长期开发效率与质量都会上一个台阶。

最后更新时间: