{"id":26457832,"url":"https://github.com/organic-basics/themequeen","last_synced_at":"2026-04-05T21:05:47.762Z","repository":{"id":49624350,"uuid":"272694703","full_name":"Organic-Basics/themequeen","owner":"Organic-Basics","description":"ThemeQueen is an alternative to Shopify's Themekit, written 100% in Node.js.","archived":false,"fork":false,"pushed_at":"2022-07-23T00:26:26.000Z","size":132,"stargazers_count":2,"open_issues_count":5,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-18T14:54:47.641Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Organic-Basics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-16T11:53:06.000Z","updated_at":"2021-08-02T16:52:07.000Z","dependencies_parsed_at":"2022-09-04T05:00:25.753Z","dependency_job_id":null,"html_url":"https://github.com/Organic-Basics/themequeen","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Organic-Basics%2Fthemequeen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Organic-Basics%2Fthemequeen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Organic-Basics%2Fthemequeen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Organic-Basics%2Fthemequeen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Organic-Basics","download_url":"https://codeload.github.com/Organic-Basics/themequeen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244326209,"owners_count":20435122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-18T23:52:40.984Z","updated_at":"2025-12-30T22:51:49.931Z","avatar_url":"https://github.com/Organic-Basics.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 👸🏻 Themequeen \n\n*Themekit is dead. Long live Themequeen!*\n\nThemequeen is an alternative to Shopify's Themekit, written 100% in Node.js.\n\n![Themequeen in action](https://github.com/Organic-Basics/Themequeen/raw/master/themequeen.gif \"Themequeen in action\")\n\n## Installation\n\n### Yarn \n`yarn add themequeen --dev`\n\n### npm\n\n`npm i themequeen --save-dev`\n\n## Setup\n\nTo start using, you must first _require_ and _initialize_ Themequeen\n\n```\nconst queen = require('themequeen')\n\n// See Options for more on how to configure the initializer\nqueen.init(opts)\n```\n\n### Config\n\nThemequeen uses a similar config setup as themekit. To make it work you need two files: `variables` and `config.yml`.\n\nBoth files need to be located in the same folder as the rest of the theme files. Usually this is the `theme` folder, but you can name it whatever you like.\n\nYou can see the Themequeen `theme` folder for an example of the desired folder structure.\n\n#### config.yml\n\nThemequeen currently only supports theme IDs, passwords and store URLs as part of the config.\nThose are entered into the `config.yml` file located in the same directory as the rest of the theme files.\n\nThe structure is:\n\n```\nthemename:\n  password: ${PASSWORD_VAR}\n  theme_id: ${THEME_ID_VAR}\n  store: ${URL_VARIABLE}\n```\n\n#### variables\n\nTo promote the use of keeping API keys secret, Themequeen also enforces the use of a `variables` file (no file ending) similarly located in the theme directory.\n\n```\nPASSWORD_VAR=123456abcdef\nTHEME_ID_VAR=1234567890\nURL_VARIABLE=devshop.myshopify.com\n```\n\n### Options\nThe following are the possible options for the `init()` function.\n\n```\n// default values listed\n{\n  // Which directory to use when watching and deploying files?\n  // Also determines the location of the variables and config.yml files. \n  themeDir: 'theme/', \n  // Changes the speed of Themequeen uploads to match Shopify Plus API rate limits\n  isShopifyPlus: false\n}\n```\n\n## Usage\n\nThemequeen exposes 4 different functions for development usage:\n`watch`, `deploy`, `open`, and `link`.\n\nThere are 2 different ways to customize their usage:\n1. By using terminal arguments like `--tqenv`, `--tqopen` and `--tqforce`\n2. By supplying new configs via the function call itself\n\nFor #1, see _Command line arguments_. For #2, see _Function configs_.\n\n### Command line arguments\n\nWhen built into a command line interface, like Gulp, Themequeen can watch for specific command line arguments as well. \n\n`--tqenv` allows you to supply a themename to use from the config.yml file. E.g. `--tqenv production`\n\n`--tqopen` tells Themequeen to open a preview link with that theme upon finishing the task. Only works with `watch` and `deploy`.\n\n`--tqforce` tells Themequeen to ignore any warnings of published themes. Provided as a helper for impatient developers. \n\n### Function configs\n\nInstead of relying on the `config.yml` file to give us info on theme configs, Themequeen can also take configs as an argument.\n\nSame rules as `config.yml` apply, except the format is in JSON. So the structure becomes:\n```\n{\n  name: 'themename',\n  password: '123456abcdef',\n  theme_id: '1234567890',\n  store: 'devshop.myshopify.com'\n}\n```\n\n### watch\n\n`queen.watch(themeConfig)`\n\n`themeConfig` is an optional argument. See _Function configs_ for more.\n\nWatches the files in the theme directory, and applies any changes to the Shopify theme. \n\nNew files are added, updated files are changed, and deleted files are removed. \n\nReturns a Promise that resolves upon closing the process.\n\n### deploy\n\n`queen.deploy(themeConfig)`\n\n`themeConfig` is an optional argument. See _Function configs_ for more.\n\nGoes through three processes:\n1. Deletes all files from the Shopify theme not found in the theme directory.\n2. Uploads any files present in the theme directory, but not found in the Shopify theme.\n3. Uploads any files present in both.\n\nReturns a Promise that resolves upon finished deployment.\n\n### open\n\n`queen.open(themeConfig)`\n\n`themeConfig` is an optional argument. See _Function configs_ for more.\n\nOpens a preview link in the user's default browser.\n\nReturns a Promise that resolves upon successfully opening the link.\n\n### link\n\n`queen.link(themeConfig)`\n\n`themeConfig` is an optional argument. See _Function configs_ for more.\n\nReturns a Promise that resolves with a preview link URL for the given theme.\n\n## Differences from themekit\n\nThere are couple of notable differences to Themekit and Themequeen. \n\n|Feature|👸🏻 Themequeen 👸🏻|Themekit|\n|-|:-:|:-:|\n|Warning before updating published themes|✔️|❌|\n|Built in Node.js|✔️|❌|\n|Plays nicely with Gulp and Webpack|✔️|❌|\n|Increased speed for Shopify Plus|✔️|❌|\n|Programmatic first, CLI second|✔️|❌|\n|Cute console.log messages|✔️|❌|\n\n## Contributing\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\n## License\nNo license at all. 100% open source. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forganic-basics%2Fthemequeen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forganic-basics%2Fthemequeen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forganic-basics%2Fthemequeen/lists"}