{"_id":"@conducivemammal/shopify-locale-sync","_rev":"2-d1fb6dfa2fbb62f16df7aaf53384c0ef","name":"@conducivemammal/shopify-locale-sync","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@conducivemammal/shopify-locale-sync","version":"0.1.0","keywords":["shopify","shopify-cli","oclif","locales","translations"],"license":"MIT","_id":"@conducivemammal/shopify-locale-sync@0.1.0","maintainers":[{"name":"conducivemammal","email":"l.merlyn@hotmail.co.uk"}],"bin":{"localesync":"bin/localesync.js"},"dist":{"shasum":"91f900f1d5f983faf5a0c24f7d9a0bca1a5b576a","tarball":"https://registry.npmjs.org/@conducivemammal/shopify-locale-sync/-/shopify-locale-sync-0.1.0.tgz","fileCount":78,"integrity":"sha512-rJG2S+a1Gc4W5sH5zccNAI43oJ2yDxSpbQzFEiS2OQeED+uptYFzL8gb1woEAr7IQQWGSD2KreNQI3XXk7wljg==","signatures":[{"sig":"MEUCIQD+0SPM7WmeoicGoBpZj9VjurHJG/h6x7ImMlvVCkECmgIgGW/dNwU+xR5PuDFa3IiNqyEWQfnqvZQbrjLmQhlHHX4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105673},"type":"module","oclif":{"bin":"shopify","topics":{"theme:locales":{"description":"Keep Shopify theme locale files in sync."}},"dirname":"localesync","commands":"./dist/commands","topicSeparator":" "},"engines":{"node":">=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b9d7e5b3eda1a09c70c5abd238173863ade25c9e","scripts":{"dev":"tsx src/standalone.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && oclif manifest","verify":"npm run lint && npm run typecheck && npm test && npm run build","prepack":"npm run build","manifest":"npm run build","typecheck":"tsc --noEmit","dev:plugin":"npm run build && node bin/run.js","test:watch":"vitest"},"_npmUser":{"name":"conducivemammal","email":"l.merlyn@hotmail.co.uk"},"_npmVersion":"11.9.0","description":"Keep Shopify theme locale files structurally in sync.","directories":{},"_nodeVersion":"24.13.0","dependencies":{"picocolors":"1.1.1","@oclif/core":"^4.14.0","jsonc-parser":"^3.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","oclif":"^4.23.30","eslint":"10.9.0","vitest":"^4.1.11","@eslint/js":"10.0.1","typescript":"^5.9.3","@types/node":"^22.19.11","typescript-eslint":"^8.67.0"},"_npmOperationalInternal":{"tmp":"tmp/shopify-locale-sync_0.1.0_1787616803148_0.7794905750521541","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@conducivemammal/shopify-locale-sync","version":"0.1.1","description":"Keep Shopify theme locale files structurally in sync.","repository":{"type":"git","url":"git+https://github.com/ConduciveMammal/LocaleSync.git"},"keywords":["shopify","shopify-cli","oclif","locales","translations"],"license":"MIT","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"bin":{"localesync":"bin/localesync.js"},"engines":{"node":">=22.12.0"},"scripts":{"build":"tsc -p tsconfig.build.json && oclif manifest","dev":"tsx src/standalone.ts","dev:plugin":"npm run build && node bin/run.js","lint":"eslint .","manifest":"npm run build","prepack":"npm run build","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","verify":"npm run lint && npm run typecheck && npm test && npm run build"},"dependencies":{"@oclif/core":"^4.14.0","jsonc-parser":"^3.3.1","picocolors":"1.1.1"},"devDependencies":{"@eslint/js":"10.0.1","@types/node":"^22.19.11","eslint":"10.9.0","oclif":"^4.23.30","tsx":"^4.23.12","typescript":"^5.9.3","typescript-eslint":"^8.67.0","vitest":"^4.1.11"},"oclif":{"bin":"shopify","dirname":"localesync","commands":"./dist/commands","topicSeparator":" ","topics":{"theme:locales":{"description":"Keep Shopify theme locale files in sync."}}},"publishConfig":{"access":"public"},"gitHead":"3b2c87832f993eb3aca1a97300febafffdb138ed","_id":"@conducivemammal/shopify-locale-sync@0.1.1","bugs":{"url":"https://github.com/ConduciveMammal/LocaleSync/issues"},"homepage":"https://github.com/ConduciveMammal/LocaleSync#readme","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-Nzd3Ib3sbLtgj8VqWziMDgfpCTp1HLvOG2IXpD62pRNvLm5bK6vPdf6TDR0PR3KqfPNeIX0nbORcKGjGFJtLig==","shasum":"6addb9002f60623dbe7d12eef4af5d5142e4dbe4","tarball":"https://registry.npmjs.org/@conducivemammal/shopify-locale-sync/-/shopify-locale-sync-0.1.1.tgz","fileCount":78,"unpackedSize":101344,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB1jNBgh6sEEl3gBICrueOs+pbThyRNLXNjlpzTYyDuyAiAY3metuB3qKDjqswahNRmF8EQtpzIBeyv/d/83geWREw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b488adf1-b71b-44c7-99d6-60f52d053126"}},"directories":{},"maintainers":[{"name":"conducivemammal","email":"l.merlyn@hotmail.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/shopify-locale-sync_0.1.1_1787619946475_0.6866899443872978"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-25T00:13:22.938Z","modified":"2026-08-25T01:05:46.785Z","0.1.0":"2026-08-25T00:13:23.292Z","0.1.1":"2026-08-25T01:05:46.607Z"},"license":"MIT","keywords":["shopify","shopify-cli","oclif","locales","translations"],"description":"Keep Shopify theme locale files structurally in sync.","maintainers":[{"name":"conducivemammal","email":"l.merlyn@hotmail.co.uk"}],"readme":"# LocaleSync\n\nKeep Shopify theme locale files structurally in sync without overwriting translations for matching keys.\n\nLocaleSync adds missing keys, removes obsolete non-plural keys and handles storefront and theme-editor schema locales separately.\n\n## Install\n\nLocaleSync requires Node.js 22.12 or later.\n\nInstall LocaleSync once as a Shopify CLI 4 plugin. The commands will then be available from any Shopify theme:\n\n```bash\nshopify plugins install @conducivemammal/shopify-locale-sync\n```\n\nShopify CLI manages the plugin installation at the user level, so it does not need to be added to each theme's dependencies.\n\n## Usage\n\nCheck a theme before changing any files:\n\n```bash\nshopify theme locales check\n```\n\n> [!IMPORTANT]\n> A sync adds missing keys and removes obsolete non-plural keys. Preview the result before the first write.\n\n```bash\nshopify theme locales sync --dry-run\nshopify theme locales sync\n```\n\nRestore every changed locale file to its state before the first sync:\n\n```bash\nshopify theme locales reset\n```\n\nPass additional options directly to the Shopify CLI command:\n\n```bash\n# Fail CI when differences are found\nshopify theme locales check --fail-on-differences\n\n# Use another theme and return JSON\nshopify theme locales check --path ./themes/example --json\n\n# Export the report\nshopify theme locales check --export ./reports/locales-check.log\n```\n\nAppend `--help` to a command for its complete reference, for example `shopify theme locales check --help`.\n\n## Behaviour\n\nLocaleSync uses each `*.default.json` and `*.default.schema.json` file as its source of truth. It:\n\n- Adds keys missing from target locales\n- Removes non-plural target keys missing from the default locale\n- Preserves translations for matching keys and locale-specific plural categories\n- Preserves comments, trailing commas, indentation and line endings\n- Reports structural conflicts instead of replacing incompatible values\n\nThe first sync stores a restorable baseline under `node_modules/.cache/localesync/backups/`. Checks and dry runs never create backups.\n\n## Exit codes\n\n- `0`: the command completed; `check` also uses this when it finds differences\n- `1`: `check --fail-on-differences` found differences\n- `2`: LocaleSync found a structural conflict or could not complete the command\n\n## Development\n\n```bash\nnpm ci\nnpm run verify\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","homepage":"https://github.com/ConduciveMammal/LocaleSync#readme","repository":{"type":"git","url":"git+https://github.com/ConduciveMammal/LocaleSync.git"},"bugs":{"url":"https://github.com/ConduciveMammal/LocaleSync/issues"}}