@syncify/cli
v1.0.0-alpha.1
Published
The new generation build tool for Shopify theme development.
Downloads
90
Maintainers
Readme
Syncify is a specialized tool designed for Shopify theme development. It offers an array of features that significantly enhance productivity, integration and workflow on the Shopify platform. Originally created to address the in-house mediocrity of OSS (theme dev) offerings from the Shopify team, Syncify exits as the superior alternative delivering an overall better, more flexible, and more powerful approach to webshop development.
Documentation: https://syncify.sh
Examples / Themes
The Syncify Straps github organization provides a collection of usage examples and starting point themes using Syncify. You can use the command line to generate new projects with the available straps. Refer to readme of each strap in the repositories.
Editor Intergration
For an integrated development experience in your text editor, please consider using the VSCode Liquid extension which has built-in support for Syncify. VSCode Liquid exists as a superior alternative to the Shopify backed extension and is maintained and created by the same author of Syncify.
Getting Help?
Join the Shopify Developers Discord and ask your questions in the # syncify
channel under the projects
tab. Connect with other developers, maintainers, and contributors already using Syncify in their projects or within their agency.
Installation
You can install Syncify as a development dependency or globally. There are a couple of different versions available, all of which can be consumed via the NPM Registry. Please consider using pnpm as your package manager for a faster and better experience with Syncify and NodeJS development.
More information at: syncify.sh/releases
Stable Release
The most stable and latest version of Syncify is available for consumption on the NPM Registry.
pnpm add @syncify/cli@latest -g
Nightly Release
The nightly releases of Syncify can be installed on the @next
version via NPM Registry and available within next branch.
pnpm add @syncify/cli@next -g
Global Installations
Global installations of Syncify make the CLI binary available system-wide and are the preferred approach. Syncify will regularly check for version updates and notify you when new ones are available. If you're using a syncify.config.js
(or .ts
) configuration file for individual projects, install the @syncify/config package to access the defineConfig
helper utility.
If you opt for a global installation of the nightly release builds, be aware that there might be breaking changes, and version checks occur more frequently, potentially leading to slower runtimes. For more details on how Syncify manages version control and publishing, please refer to the releases documentation.
Contributing
Contributions are welcome and appreciate! This project is a monorepo managed with pnpm, which handles dependency and workspace management. Dependencies follow the workspace protocol, ensuring a symlinked structure with pnpm managing NPM registry versions.
The packages directory contains modules consumed by the core syncify module. To contribute bug fixes or enhancements, you’ll need to fork or clone the entire project, as there are no plans to introduce and expose packages as separate sub-modules. Development is designed for use with VS Code, and maintaining consistency within this setup is encouraged.
While not required, if you wish to recreate the environment in which this project is developed then you can install and leverage the above additional third-party tooling.
Installation
- Ensure pnpm is installed globally
npm i pnpm -g
- Leverage
pnpm env
if you need to align node versions - Clone this repository
git clone https://github.com/panoply/syncify.git
- Run
pnpm i
in the root directory
The project will be complied and all containing workspace packages will build during the postinstall
operation.
Developing
All packages are compiled with ESBuild via tsup. You can cd
into any package or alternatively you can run pnpm dev
from workspace root to begin development on the core logic which lives in the /syncify directory. Projects contained the /packages directory are consumed by the core package (i.e, @syncify/cli
) and are also available in isolated via the NPM Registry.
Per Package
pnpm dev Watch and build modes
pnpm build Build mode only (production)
Almost all packages will expose the above commands via
package.json
script, with some exceptions depending on module. Thepnpm build
command however is available within all modules.
Recursive (Workspace Root)
pnpm build Build production bundles for all modules and packages
Targeting (Workspace Root)
pnpm @acquire <dev|build> Targets the acquire config bundle
pnpm @kill <dev|build> Targets the process kill package
pnpm @update <dev|build> Targets the version check utility
pnpm @uws <dev|build> Targets the uWebsockets repackage
pnpm @hot <dev|build> Targets the HOT Reloading client
pnpm @turndown <dev|build> Targets the reversed markdown parser
pnpm @json <dev|build> Targets the JSON parser and differ
pnpm @timer <dev|build> Targets the timing utility
pnpm @ansi <dev|build> Targets the CLI enhancement package
Author / License
Syncify was created and is maintained by Νικολας Σαββιδης. Shopify has no affiliation with this project nor do they fund Syncify. Choosing to leverage Syncify helps keep independent projects alive and sends a clear message to Shopify and the teams tasked with enhancing theme development.
Acknowledgements
Special thanks to a couple of talented developers who have helped with Syncify. This project has been in the making for several years and if not for these individuals, it wouldn't of made it this far.
Donate / Sponsor
If you would like to donate or help support this project, then reach out to the folks working at Shopify on X, via the Developer Community or in the Partner slack and tell them that you use Syncify instead of the Shopify CLI
If you are an individual who would prefer to help financially, then please donate something to your local animal shelter and tell me about it on X. If you are a business, agency or acting on behalf of an enterprise then you can reach me via email or message me on X.
License
The project ships under Apache License, Version 2.0.