The plugin command is the heart of the Quartz v5 plugin management system. it allows you to install, configure, and update plugins directly from the command line.
All plugins are stored in the .quartz/plugins/ directory, and their versions are tracked in quartz.lock.json.
Subcommands
list
List all currently installed plugins and their versions.
npx quartz plugin listadd
Add a new plugin from a Git repository.
npx quartz plugin add github:username/repoTo install from a specific branch or ref, append #ref to the source:
npx quartz plugin add github:username/repo#my-branch
npx quartz plugin add git+https://github.com/username/repo.git#my-branch
npx quartz plugin add https://github.com/username/repo.git#my-branchYou can also add a plugin from a local directory. This is useful for local development or airgapped environments:
npx quartz plugin add ./path/to/my-plugin
npx quartz plugin add ../sibling-plugin
npx quartz plugin add /absolute/path/to/pluginLocal plugins are symlinked into .quartz/plugins/, so any changes you make to the source directory are reflected immediately without re-installing.
When a branch is specified, it is stored in the lockfile. All subsequent commands (install, update, restore, check, resolve) will respect that branch automatically.
remove
Remove an installed plugin.
npx quartz plugin remove plugin-nameinstall
Install all plugins listed in your quartz.lock.json file. This is useful when setting up the project on a new machine.
npx quartz plugin installupdate
Update specific plugins or all plugins to their latest versions.
npx quartz plugin update plugin-name
npx quartz plugin update # updates allrestore
Restore plugins to the exact versions specified in the lockfile. Unlike install, this will downgrade plugins if the lockfile specifies an older version. This is recommended for CI/CD environments.
npx quartz plugin restoreenable / disable
Toggle a plugin’s status in your quartz.config.yaml without removing its files.
npx quartz plugin enable plugin-name
npx quartz plugin disable plugin-nameconfig
View or modify the configuration for a specific plugin.
# View config
npx quartz plugin config plugin-name
# Set a value
npx quartz plugin config plugin-name --set key=valuecheck
Check if any of your installed plugins have updates available.
npx quartz plugin checkprune
Remove installed plugins that are no longer referenced in your quartz.config.yaml. This is useful for cleaning up after removing plugin entries from your configuration.
Note
The
resolvecommand also removes orphaned plugins as part of its synchronization. Useprunewhen you only want to clean up without installing anything new.
npx quartz plugin pruneUse --dry-run to preview which plugins would be removed without making changes:
npx quartz plugin prune --dry-runresolve
Synchronize your installed plugins with your quartz.config.yaml. This installs plugins that are in your config but missing from the lockfile, and removes plugins that are in the lockfile but no longer referenced in your config.
npx quartz plugin resolveUse --dry-run to preview which plugins would be installed without making changes:
npx quartz plugin resolve --dry-runCommon Workflows
Adding and Enabling a Plugin
To add a new plugin and start using it:
- Add the plugin:
npx quartz plugin add github:quartz-community/example - Enable it:
npx quartz plugin enable example
Updating Everything
To keep your plugins fresh:
npx quartz plugin updateManaging Configuration
If you want to change a plugin setting without opening the YAML file:
npx quartz plugin config explorer --set useSavedState=trueCleaning Up Unused Plugins
If you’ve removed plugins from your config and want to clean up leftover files:
npx quartz plugin prune --dry-run # preview first
npx quartz plugin prune # remove orphaned pluginsSetting Up from Config
When setting up on a new machine or in CI, resolve ensures your installed plugins match your config — installing missing plugins and removing any that are no longer referenced:
npx quartz plugin resolveTesting with Branches
If a plugin author has a fix or feature on a separate branch, you can install it directly without waiting for a release to the default branch:
# Install from a feature branch
npx quartz plugin add github:username/repo#fix/some-bug
# Later, switch back to the default branch by re-adding without a ref
npx quartz plugin remove repo
npx quartz plugin add github:username/repoThe branch ref is tracked in quartz.lock.json, so update and check will continue to follow the specified branch until the plugin is re-added without one.
Both prune and resolve will fall back to quartz.config.default.yaml if no quartz.config.yaml is present.
Local Plugin Development
For local plugin development or airgapped environments, you can add a plugin from a local directory:
npx quartz plugin add ./my-local-pluginLocal plugins are symlinked into .quartz/plugins/, so changes reflect immediately. When you run update, local plugins are rebuilt (npm install + npm run build) without any git operations. The check command will show local plugins with a “local” status instead of checking for remote updates.
To switch a local plugin back to a git source:
npx quartz plugin remove my-local-plugin
npx quartz plugin add github:username/my-local-pluginSubdirectory (Monorepo) Plugins
Some plugins live in a subdirectory of a larger repository rather than at the root. For these, you can specify the plugin source as an object in quartz.config.yaml with a subdir field:
plugins:
- source:
repo: "https://github.com/username/monorepo.git"
subdir: plugin
enabled: trueThis tells Quartz to clone the full repository but install only the contents of the specified subdirectory.
You can combine subdir with ref to pin a branch or tag, and name to override the plugin directory name:
plugins:
- source:
repo: "https://github.com/username/monorepo.git"
subdir: packages/my-plugin
ref: v2.0
name: my-plugin
enabled: trueSee Advanced Source Options for the full reference on object source fields.
Note
The
plugin addCLI command works with string sources. To use the object source format withsubdir, editquartz.config.yamldirectly, then runnpx quartz plugin resolveto install it.
Interactive Mode
Running the plugin command without any subcommand will launch the TUI, which provides a visual interface for all these operations.
npx quartz plugin