{"_id":"@akqa-denmark/shopify-theme-build","_rev":"5-1ad251469c4f7304bc8c422592cb11f4","name":"@akqa-denmark/shopify-theme-build","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@akqa-denmark/shopify-theme-build","version":"0.1.0","keywords":["shopify","theme","vite","build","schema"],"author":{"name":"AKQA Denmark"},"license":"MIT","_id":"@akqa-denmark/shopify-theme-build@0.1.0","maintainers":[{"name":"dni","email":"dennis.nielsen@akqa.com"},{"name":"bjarniolsen","email":"bjarni.olsen@akqa.com"},{"name":"cbrostrom","email":"christian.brostrom@akqa.com"},{"name":"simonlarsson-akqa","email":"simon.larsson@akqa.com"}],"bin":{"shopify-build":"bin/shopify-build.js"},"dist":{"shasum":"c34cfe10de29b1357586e3cf784c7535917fff9e","tarball":"https://registry.npmjs.org/@akqa-denmark/shopify-theme-build/-/shopify-theme-build-0.1.0.tgz","fileCount":12,"integrity":"sha512-jknzEe0QLUGeC/AixWzt9wGibtzbG+vJYrHpRSq6B1Jwt3r9XTlrKN4wLSN/2UveaBmibimnABXJv2/xaQ1ngA==","signatures":[{"sig":"MEQCIFEriGhq6q2V+unPyVdtSdbQWpTiQHNtQPhkJW4tVjm3AiAMELl+o7nVS2Fs324x1MWsnbLGRVWwsTt768/x66aoZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69986},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"gitHead":"393f4fa5661d27fa0d6bfec27ddc0c5e70630217","scripts":{"dev":"tsup --watch","build":"tsup","release":"npx tsx scripts/release.ts","type-check":"tsc --noEmit","release:dry":"npx tsx scripts/release.ts --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"cbrostrom","email":"christian.brostrom@akqa.com"},"_npmVersion":"10.9.8","description":"Shopify theme build pipeline — schema generation, locale merging, and Vite config factory","directories":{},"_nodeVersion":"22.22.3","dependencies":{"jiti":"^2.4.0","chalk":"^5.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vite":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@inquirer/prompts":"^8.5.2","vite-plugin-shopify":"^4.0.0","vite-plugin-full-reload":"^1.2.0"},"peerDependencies":{"vite":"^8.0.0","@tailwindcss/vite":">=4.0.0","vite-plugin-shopify":">=4.0.0","vite-plugin-full-reload":">=1.0.0"},"peerDependenciesMeta":{"@tailwindcss/vite":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shopify-theme-build_0.1.0_1782214402247_0.32317991054638573","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@akqa-denmark/shopify-theme-build","version":"0.1.1","keywords":["shopify","theme","vite","build","schema"],"author":{"name":"AKQA Denmark"},"license":"MIT","_id":"@akqa-denmark/shopify-theme-build@0.1.1","maintainers":[{"name":"dni","email":"dennis.nielsen@akqa.com"},{"name":"bjarniolsen","email":"bjarni.olsen@akqa.com"},{"name":"cbrostrom","email":"christian.brostrom@akqa.com"},{"name":"simonlarsson-akqa","email":"simon.larsson@akqa.com"}],"bin":{"shopify-build":"bin/shopify-build.js"},"dist":{"shasum":"f754201fd268b97936e47ad8bd64ae46a668331e","tarball":"https://registry.npmjs.org/@akqa-denmark/shopify-theme-build/-/shopify-theme-build-0.1.1.tgz","fileCount":12,"integrity":"sha512-pgXzXNzR+KXpo4IKAyUDy/FZl3t8JvDc+G3iNP4gRKe+07DT9OYcfY72SBQgtgznrSu0xRgNknzpG+BtS9DOwg==","signatures":[{"sig":"MEYCIQD478nDb8N4w4KPCvbsmepl+jKwUxK8hikNs1GdaYJcwwIhAKED2MzWiQgCQxCKAKl+jxEXKLHjuQheGKY69c9HFDMm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70114},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"gitHead":"0af25bde52b9ec83fefbb4a78703910ff642d092","scripts":{"dev":"tsup --watch","build":"tsup","release":"npx tsx scripts/release.ts","type-check":"tsc --noEmit","release:dry":"npx tsx scripts/release.ts --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"cbrostrom","email":"christian.brostrom@akqa.com"},"_npmVersion":"10.9.8","description":"Shopify theme build pipeline — schema generation, locale merging, and Vite config factory","directories":{},"_nodeVersion":"22.22.3","dependencies":{"jiti":"^2.4.0","chalk":"^5.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vite":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@inquirer/prompts":"^8.5.2","vite-plugin-shopify":"^4.0.0","vite-plugin-full-reload":"^1.2.0"},"peerDependencies":{"vite":"^8.0.0","@tailwindcss/vite":">=4.0.0","vite-plugin-shopify":">=4.0.0","vite-plugin-full-reload":">=1.0.0"},"peerDependenciesMeta":{"@tailwindcss/vite":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shopify-theme-build_0.1.1_1782220482956_0.4617199002968846","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@akqa-denmark/shopify-theme-build","version":"0.1.2","keywords":["shopify","theme","vite","build","schema"],"author":{"name":"AKQA Denmark"},"license":"MIT","_id":"@akqa-denmark/shopify-theme-build@0.1.2","maintainers":[{"name":"dni","email":"dennis.nielsen@akqa.com"},{"name":"bjarniolsen","email":"bjarni.olsen@akqa.com"},{"name":"cbrostrom","email":"christian.brostrom@akqa.com"},{"name":"simonlarsson-akqa","email":"simon.larsson@akqa.com"}],"bin":{"shopify-build":"bin/shopify-build.js"},"dist":{"shasum":"d59fa533bf70077304853769c9af5702b4df2376","tarball":"https://registry.npmjs.org/@akqa-denmark/shopify-theme-build/-/shopify-theme-build-0.1.2.tgz","fileCount":12,"integrity":"sha512-Y4WSJHp39fX4DLA53Oe0M5+BLqiQ3JpRrxy8yL4X7N/vjMgih8gLSIZTfyD3+CKwxdVGAiViUP7TwR6YpYZhXw==","signatures":[{"sig":"MEUCIQDSJ48VPGKQe+K29K5BeUpLCWlpSjDznQJ2mhEgE0VqPQIgO9zinWfI6VtYUobl0hIwCHkkMLipicA/L5I6Y/DtoSI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70144},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"gitHead":"b4a4028deb051052ae61d3cfe9f259463d676519","scripts":{"dev":"tsup --watch","build":"tsup","release":"npx tsx scripts/release.ts","type-check":"tsc --noEmit","release:dry":"npx tsx scripts/release.ts --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"cbrostrom","email":"christian.brostrom@akqa.com"},"_npmVersion":"10.9.8","description":"Shopify theme build pipeline — schema generation, locale merging, and Vite config factory","directories":{},"_nodeVersion":"22.22.3","dependencies":{"jiti":"^2.4.0","chalk":"^5.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vite":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@inquirer/prompts":"^8.5.2","vite-plugin-shopify":"^4.0.0","vite-plugin-full-reload":"^1.2.0"},"peerDependencies":{"vite":"^8.0.0","@tailwindcss/vite":">=4.0.0","vite-plugin-shopify":">=4.0.0","vite-plugin-full-reload":">=1.0.0"},"peerDependenciesMeta":{"@tailwindcss/vite":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shopify-theme-build_0.1.2_1782222614183_0.015503233868571442","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@akqa-denmark/shopify-theme-build","version":"0.1.3","keywords":["shopify","theme","vite","build","schema"],"author":{"name":"AKQA Denmark"},"license":"MIT","_id":"@akqa-denmark/shopify-theme-build@0.1.3","maintainers":[{"name":"dni","email":"dennis.nielsen@akqa.com"},{"name":"bjarniolsen","email":"bjarni.olsen@akqa.com"},{"name":"cbrostrom","email":"christian.brostrom@akqa.com"},{"name":"simonlarsson-akqa","email":"simon.larsson@akqa.com"}],"bin":{"shopify-build":"bin/shopify-build.js"},"dist":{"shasum":"89cb31936492ce23932ee03baf18b5a232dc33e6","tarball":"https://registry.npmjs.org/@akqa-denmark/shopify-theme-build/-/shopify-theme-build-0.1.3.tgz","fileCount":12,"integrity":"sha512-eNp9CaxuQ/VsIzGsaUX0nbglD04rSPvYAx8DAgLIO1sfquV3os8LvmbtkBGOUl4p1DxWdIQpi6l1ZCbKS8g8yA==","signatures":[{"sig":"MEUCIH8jUW4+H+oSNQmtXga9oZBD+5NAv+qIV9fiXlZDKbbTAiEA8HYn4d40eLGDEEc0RyghsUfa2iSGyvP+adP4jEoic68=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70104},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"gitHead":"07af82b3318de3d25a06892462504745e22d89b0","scripts":{"dev":"tsup --watch","build":"tsup","release":"npx tsx scripts/release.ts","type-check":"tsc --noEmit","release:dry":"npx tsx scripts/release.ts --dry-run","prepublishOnly":"npm run build"},"_npmUser":{"name":"cbrostrom","email":"christian.brostrom@akqa.com"},"_npmVersion":"10.9.8","description":"Shopify theme build pipeline — schema generation, locale merging, and Vite config factory","directories":{},"_nodeVersion":"22.22.3","dependencies":{"jiti":"^2.4.0","chalk":"^5.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.0.0","vite":"^8.0.0","typescript":"^5.7.0","@types/node":"^22.0.0","@inquirer/prompts":"^8.5.2","vite-plugin-shopify":"^4.0.0","vite-plugin-full-reload":"^1.2.0"},"peerDependencies":{"vite":"^8.0.0","@tailwindcss/vite":">=4.0.0","vite-plugin-shopify":">=4.0.0","vite-plugin-full-reload":">=1.0.0"},"peerDependenciesMeta":{"@tailwindcss/vite":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/shopify-theme-build_0.1.3_1782292430178_0.18168433623587021","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@akqa-denmark/shopify-theme-build","version":"0.1.4","description":"Shopify theme build pipeline — schema generation, locale merging, and Vite config factory","type":"module","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","import":"./dist/vite.js"}},"main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"shopify-build":"bin/shopify-build.js"},"scripts":{"build":"tsup","dev":"tsup --watch","type-check":"tsc --noEmit","release":"npx tsx scripts/release.ts","release:dry":"npx tsx scripts/release.ts --dry-run","prepublishOnly":"npm run build"},"dependencies":{"chalk":"^5.4.0","jiti":"^2.4.0"},"peerDependencies":{"@tailwindcss/vite":">=4.0.0","vite":"^8.0.0","vite-plugin-full-reload":">=1.0.0","vite-plugin-shopify":">=4.0.0"},"peerDependenciesMeta":{"@tailwindcss/vite":{"optional":true}},"devDependencies":{"@inquirer/prompts":"^8.5.2","@types/node":"^22.0.0","tsup":"^8.0.0","tsx":"^4.22.4","typescript":"^5.7.0","vite":"^8.0.0","vite-plugin-full-reload":"^1.2.0","vite-plugin-shopify":"^4.0.0"},"keywords":["shopify","theme","vite","build","schema"],"license":"UNLICENSED","author":{"name":"AKQA Denmark"},"publishConfig":{"access":"public"},"_id":"@akqa-denmark/shopify-theme-build@0.1.4","gitHead":"5bf8f9c1f157ca6295bddc2def500090c5890592","_nodeVersion":"22.23.0","_npmVersion":"10.9.8","dist":{"integrity":"sha512-XY0wVHSv+QZgcthsqzz4bBheCdcp7PC0Z0DKhYjvWYc0xrcGuEnxxJz8GX/EmNVqyft1RLD0+z/PSzzidbfvng==","shasum":"672e44e9065d69cb3792cca1611eb59a93f6d278","tarball":"https://registry.npmjs.org/@akqa-denmark/shopify-theme-build/-/shopify-theme-build-0.1.4.tgz","fileCount":12,"unpackedSize":70111,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDQOWJ6EoawPd0LrDNHWOj5HpyRd7HaXTEB9os68qe8cQIhAIvkZihvLNIROPRLeSdsg6zCMEGCv0uM/wSUTKJ3qXOH"}]},"_npmUser":{"name":"cbrostrom","email":"christian.brostrom@akqa.com"},"directories":{},"maintainers":[{"name":"dni","email":"dennis.nielsen@akqa.com"},{"name":"bjarniolsen","email":"bjarni.olsen@akqa.com"},{"name":"cbrostrom","email":"christian.brostrom@akqa.com"},{"name":"simonlarsson-akqa","email":"simon.larsson@akqa.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/shopify-theme-build_0.1.4_1782818911642_0.7808788282588732"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-23T11:33:22.091Z","modified":"2026-06-30T11:28:31.931Z","0.1.0":"2026-06-23T11:33:22.371Z","0.1.1":"2026-06-23T13:14:43.137Z","0.1.2":"2026-06-23T13:50:14.345Z","0.1.3":"2026-06-24T09:13:50.301Z","0.1.4":"2026-06-30T11:28:31.787Z"},"author":{"name":"AKQA Denmark"},"license":"UNLICENSED","keywords":["shopify","theme","vite","build","schema"],"description":"Shopify theme build pipeline — schema generation, locale merging, and Vite config factory","maintainers":[{"name":"dni","email":"dennis.nielsen@akqa.com"},{"name":"bjarniolsen","email":"bjarni.olsen@akqa.com"},{"name":"cbrostrom","email":"christian.brostrom@akqa.com"},{"name":"simonlarsson-akqa","email":"simon.larsson@akqa.com"}],"readme":"# @akqa-denmark/shopify-theme-build\n\nInternal build pipeline for AKQA Denmark Shopify themes. Handles schema generation, locale merging, section group scaffolding, and Vite config for multi-store repositories.\n\n---\n\n## What it does\n\nShopify themes require a specific set of JSON and Liquid files to be generated from TypeScript schema sources before a build or deploy. This package encapsulates that pipeline so it can be shared across projects without duplicating the build directory.\n\nSpecifically, it:\n\n- Injects `{% schema %}` blocks into Liquid files for sections, blocks, and snippets\n- Generates and maintains `theme/config/settings_schema.json` from TS config schemas\n- Generates `theme/sections/{name}-group.json` files for section groups (preserving merchant-managed `sections` and `order` data)\n- Extracts translatable strings from all schema types and merges them into `theme/locales/en.default.schema.json`\n- Provides a Vite config factory (`createViteConfig`) that wires up vite-plugin-shopify, full-reload, tailwind, and a schema watcher plugin — all config-aware\n\n---\n\n## Requirements\n\n- Node >= 22.0.0\n- Vite >= 8.0.0\n\n---\n\n## Installation\n\n```bash\nnpm install @akqa-denmark/shopify-theme-build\n```\n\nPeer dependencies (install as needed):\n\n```bash\nnpm install --save-dev vite vite-plugin-shopify vite-plugin-full-reload\nnpm install --save-dev @tailwindcss/vite  # optional\n```\n\n---\n\n## Setup\n\n### 1. Create `shopify-build.config.ts` at the repo root\n\n```typescript\nimport { defineConfig } from '@akqa-denmark/shopify-theme-build';\n\nexport default defineConfig({\n  stores: [\n    { slug: 'my-store', name: 'My Store' },\n    { slug: 'base', name: 'Base', foundation: true },\n  ],\n  defaultStore: 'my-store',\n});\n```\n\n`foundation: true` marks a store as non-deployable (excluded from `shopify-build manifest`).\n\nFull config options:\n\n```typescript\ninterface BuildConfig {\n  stores: { slug: string; name: string; foundation?: boolean }[];\n  defaultStore: string;\n  storesDirectory?: string;  // default: 'stores'\n  sharedDirectory?: string;  // default: 'shared'\n  build?: {\n    parallel?: boolean;      // default: true\n  };\n  vite?: {\n    port?: number;           // default: 3000\n    bundledDev?: boolean;    // default: false\n  };\n}\n```\n\n### 2. Update `vite.config.ts`\n\n```typescript\nimport { createViteConfig } from '@akqa-denmark/shopify-theme-build/vite';\n\nexport default createViteConfig();\n```\n\nPass overrides to merge with the base config:\n\n```typescript\nexport default createViteConfig({\n  resolve: {\n    alias: [\n      { find: '@', replacement: new URL('./stores/my-store/src', import.meta.url).pathname },\n      { find: /^@shared\\/(.*)/, replacement: new URL('./shared/$1', import.meta.url).pathname },\n    ],\n  },\n});\n```\n\n### 3. Update `package.json` scripts\n\n```json\n{\n  \"scripts\": {\n    \"build:prepare\": \"shopify-build prepare\",\n    \"build:full\": \"shopify-build prepare && vite build\"\n  }\n}\n```\n\nTo target a specific store, use `--store` or set `CURRENT_STORE`:\n\n```bash\nshopify-build prepare --store my-store\nCURRENT_STORE=my-store shopify-build prepare\n```\n\n---\n\n## Directory conventions\n\nThe pipeline expects this structure inside each store directory:\n\n```\nstores/{slug}/\n├── src/\n│   └── schemas/\n│       ├── settings/     → locale data only\n│       ├── configs/      → settings_schema.json entries\n│       ├── sections/     → theme/sections/{name}.liquid schema injection\n│       ├── blocks/       → theme/blocks/{name}.liquid schema injection\n│       ├── section-blocks/ → theme/snippets/{name}.liquid schema injection\n│       └── section-groups/ → theme/sections/{name}-group.json\n└── theme/\n    ├── config/\n    │   └── settings_schema.json  (generated)\n    ├── locales/\n    │   └── en.default.schema.json  (generated)\n    ├── sections/\n    ├── blocks/\n    └── snippets/\n```\n\n---\n\n## CLI\n\n### `shopify-build prepare`\n\nRuns the full schema pipeline for a store.\n\n```bash\nshopify-build prepare\nshopify-build prepare --store georg-jensen\nshopify-build prepare --skip-schemas\nshopify-build prepare --skip-locales\n```\n\n### `shopify-build manifest`\n\nOutputs a JSON manifest of all deployable stores to stdout. Useful for CI matrix generation.\n\n```bash\nshopify-build manifest\n# {\n#   \"stores\": [\n#     { \"slug\": \"my-store\", \"name\": \"My Store\", \"deployable\": true },\n#     { \"slug\": \"base\", \"name\": \"Base\", \"deployable\": false }\n#   ]\n# }\n```\n\n---\n\n## API\n\n```typescript\nimport { defineConfig, resolveConfig, resolveStore, getStorePaths, orchestrate } from '@akqa-denmark/shopify-theme-build';\nimport { createViteConfig } from '@akqa-denmark/shopify-theme-build/vite';\n```\n\n| Export | Description |\n|---|---|\n| `defineConfig(config)` | Type-safe config helper |\n| `resolveConfig(cwd?)` | Loads and validates `shopify-build.config.ts` |\n| `resolveStore(config, explicit?)` | Resolves store from arg, `CURRENT_STORE` env, or `defaultStore` |\n| `getStorePaths(config, store)` | Returns resolved path object for a store |\n| `orchestrate(options)` | Runs the full pipeline programmatically |\n| `createViteConfig(overrides?)` | Returns a Vite `UserConfig` |\n\n---\n\n## Schema file conventions\n\n### Sections and blocks\n\nExport a default object or a function returning an object:\n\n```typescript\n// stores/my-store/src/schemas/sections/hero.ts\nexport default {\n  name: 'Hero',\n  settings: [\n    { type: 'text', id: 'heading', label: 'Heading', defaultLabel: 'Heading' },\n  ],\n};\n```\n\n### Configs\n\nExport a named function in the form `{PascalName}Config`:\n\n```typescript\n// stores/my-store/src/schemas/configs/brand.ts\nexport function BrandConfig() {\n  return {\n    name: 'Brand',\n    settings: [\n      { type: 'color', id: 'primary_color', label: 'Primary colour' },\n    ],\n  };\n}\n```\n\n`theme-info.ts` is handled separately — the pipeline injects `theme_version` from git tags and `theme_name` from the store's `name` in config.\n\n### Section groups\n\nExport a default object with `type` and `name`. The `sections` and `order` fields are managed by the Shopify theme editor and are preserved from any existing file.\n\n```typescript\n// stores/my-store/src/schemas/section-groups/header.ts\nexport default {\n  type: 'header',\n  name: 'Header group',\n};\n```\n\n---\n\n## Version resolution\n\n`theme_version` in `settings_schema.json` is resolved at build time:\n\n1. `RELEASE_TAG` env var (CI deploy — e.g. `v1.18.0` → `1.18.0`)\n2. CI without `RELEASE_TAG` → latest git tag, no suffix\n3. Local dev → latest git tag + `-dev` suffix (e.g. `1.18.0-dev`)\n4. Fallback: `dev`\n\n---\n\n## Development\n\n```bash\nnpm run build       # compile to dist/\nnpm run dev         # watch mode\nnpm run type-check  # tsc --noEmit\n```\n","readmeFilename":"README.md"}