4.2 KiB
Shopify CLI plugin
This plugin adds aliases, helper functions and completion for the Shopify CLI.
To use it, add shopify to the plugins array in your zshrc file:
plugins=(... shopify)
Requirements
Shopify CLI 4.0 or newer, installed
and on your PATH. The plugin does nothing if it is not:
npm install -g @shopify/cli
# or
brew tap shopify/shopify && brew install shopify-cli
Aliases
| Alias | Command | Description |
|---|---|---|
shop |
shopify |
The Shopify CLI itself |
Functions
| Function | Description |
|---|---|
shopd |
Runs theme dev, app dev or hydrogen dev, whichever fits the current project |
shopi |
Shows what the current project is connected to |
shopify_here |
Prints the kind of Shopify project you are in and the commands worth running in it |
shopify |
Wraps the CLI to confirm before irreversible commands. See Settings |
shopd and shopi work out which topic applies by looking at the project you
are standing in, so you do not have to remember whether this directory is a
theme, an app or a Hydrogen storefront. They complete like the command they
stand in for, so in a theme shopd --<TAB> offers the flags of
shopify theme dev.
Completion
Every command completes with a description of what it does, at every level, and
so do their flags, short forms and allowed values. --environment completes
from the [environments.*] sections of your local shopify.theme.toml or
shopify.app.toml.
The Shopify CLI ships no completion generator of its own, so _shopify is
generated from shopify commands --json and kept in this repository. It targets
Shopify CLI 4.x.
Settings
Set these with zstyle in your zshrc, before Oh My Zsh is sourced.
Confirming destructive commands
zstyle ':omz:plugins:shopify' confirm-destructive no
By default the plugin asks for confirmation before three irreversible operations:
shopify theme pushwith--live/-lor--publish/-p, which overwrites or publishes the live storefrontshopify theme delete, which the CLI's own help describes as impossible to undoshopify app deploy --allow-deletes, which can permanently remove extensions
Nothing else is intercepted, and the prompt is skipped when the command already
carries --force/-f or when stdin is not a terminal, so scripts, pipelines
and CI are unaffected. Set the style to no to turn the prompt off entirely.
Completing theme IDs
zstyle ':omz:plugins:shopify' dynamic-theme-completion yes
Off by default. When enabled, --theme is completed from
shopify theme list --json, showing each theme's name and role next to its ID
instead of making you copy IDs by hand. It is opt-in because it runs the CLI and
makes a network call when you press Tab, and because it needs you to
be authenticated. Results are cached for five minutes.
Disabling the aliases
This works for every Oh My Zsh plugin:
zstyle ':omz:plugins:shopify' aliases no
Caveats
shopifyis a shell function here. Runcommand shopifyto reach the binary directly.- When a project has its own copy of the CLI in
node_modules/.bin/shopify, that one is used in preference to the global install. App and Hydrogen projects normally pin the CLI inpackage.json, and running a different global version against them is a common source of confusing errors. --passwordand--store-passwordare unrelated, and you often need both.--passwordis the CLI's own authentication token, from the Theme Access app or the Admin API.--store-passwordis the password for a password-protected storefront.shopify theme pushdeletes remote files that are missing locally, andshopify theme pulldeletes local files that are missing remotely, unless you pass--nodelete/-n. The plugin does not prompt for these.