Shopify CLI 2.x
Shopify CLI is a command-line interface tool that helps you build Shopify themes. It quickly generates Node.js, Ruby on Rails, and PHP apps, app extensions, and Shopify themes. You can also use it to automate many common development tasks.
This documentation explains how to use Shopify CLI for theme development. To learn how to use Shopify CLI for app development, refer to Shopify CLI for apps.
Shopify CLI accelerates your theme development process with the following features:
- Safely preview, test, and share changes to themes using development themes
- Hot reload CSS and section changes, or automatically refresh a page on file change, when previewing a theme
- Initialize a new theme using Dawn as a starting point
- Push and publish themes from the command line
- Run Theme Check on your theme
- Populate test data for your theme, including products, customers, and draft orders
Development themes
Anchor link to section titled "Development themes"Development themes are temporary, hidden themes that are connected to the Shopify store that you're using for development. When you connect your theme to a store as a development theme, you can use that store's data for local testing.
You can create a development theme using the shopify theme serve
command.
You can use development themes on a Shopify store or a development store. Development themes don't count toward your theme limit, and are deleted from the store after seven days of inactivity.
Shopify CLI deletes your development theme when you run shopify logout
. If you want a preview link for the theme that can be accessed after you log out, then you should push your development theme to an unpublished theme on your store.
You can use your development theme to perform the following tasks:
- View changes in real time to a theme that you're developing locally
- Customize and interact with the theme using the Shopify admin theme editor
- Share a password-protected preview of the theme with other developers
Directory structure
Anchor link to section titled "Directory structure"You can run certain theme commands, such as shopify theme serve
, only if the directory that you're using matches the default Shopify theme directory structure. This structure represents a buildless theme, or a theme that has already gone through any necessary file transformations. If you use build tools to generate theme files, then you might need to run commands from the directory that contains the generated files.
The default Shopify theme directory structure is as follows:
Excluding files from Shopify CLI
Anchor link to section titled "Excluding files from Shopify CLI"If you have files in the same repository as your theme that you don't want to interact with using Shopify CLI, then you can add them to a .shopifyignore
at the root of the theme.
.shopifyignore
accepts references to files in the following formats:
- Simple file names:
templates/product.temp.json
- Wildcards:
config/*_secret.json
,*.jpg
- Regular expressions:
/\.(txt|gif|bat)$/
You can also exclude specific files or patterns during a push
or pull
using the --ignore
flag. If files are excluded using .shopifyignore
, then both the contents of .shopifyignore
and the --ignore
flag are respected.
Command reference
Anchor link to section titled "Command reference"Refer to the Shopify CLI theme command reference to explore the commands available to build themes with Shopify CLI.
Install, upgrade or uninstall Shopify CLI
Anchor link to section titled "Install, upgrade or uninstall Shopify CLI"To learn how to install or upgrade Shopify CLI 2.x, migrate from a legacy version, and uninstall Shopify CLI, refer to Upgrade or uninstall Shopify CLI.
Contributing to Shopify CLI
Anchor link to section titled "Contributing to Shopify CLI"Shopify CLI is open source. Learn how to contribute in our GitHub repository.
- Open a GitHub issue - To report bugs or request new features, open an issue in the Shopify CLI repository.
- Shopify Community Forums - Visit our forums to connect with the community and learn more about development using Shopify CLI.