{"_id":"@buding0904/vitepad","_rev":"6-69134fc404fd6fb579d92f25e9d9ae18","name":"@buding0904/vitepad","dist-tags":{"latest":"0.3.2"},"versions":{"0.2.0":{"name":"@buding0904/vitepad","version":"0.2.0","keywords":["vite","cli","playground","frontend","tailwindcss","react","vue","svelte","solid"],"author":{"name":"buding0904"},"license":"MIT","_id":"@buding0904/vitepad@0.2.0","maintainers":[{"name":"mao.zheng","email":"zhengmao0613@163.com"}],"homepage":"https://github.com/buding0904/vitepad#readme","bugs":{"url":"https://github.com/buding0904/vitepad/issues"},"bin":{"vitepad":"dist/cli.js"},"dist":{"shasum":"3b07eae4f8ae2896e9ce06f7df227d2e5d7a5576","tarball":"https://registry.npmjs.org/@buding0904/vitepad/-/vitepad-0.2.0.tgz","fileCount":19,"integrity":"sha512-s4CeJWcLexOHmiVy2Gu7PSRpkdY1ug5qoDcB/a5zYyO6S51KAXj5CF/Jmbu7wN/mgBpqVxwyiFP3kluQDCdWSA==","signatures":[{"sig":"MEUCICbF1mzw4ECWZCpRjJNK56zSawcSBfKtJajidZfOw6vpAiEA4kdxUE0m77Y2BV46cG9J8C2YpbuHURXUnaKpwaAaaVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":365245},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"645aaced788b60ceb70017f8cf9ccb92beb28149","scripts":{"dev":"tsup --watch","build":"tsup && tsc --emitDeclarationOnly --declaration --declarationMap","smoke":"node ./test/smoke.mjs","commit":"czg","release":"release-it","typecheck":"tsc --noEmit","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"mao.zheng","email":"zhengmao0613@163.com"},"repository":{"url":"git+https://github.com/buding0904/vitepad.git","type":"git"},"_npmVersion":"10.9.3","description":"Run a single frontend entry file in a temporary Vite playground.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"vite":"latest","picocolors":"latest","tailwindcss":"latest","@tailwindcss/vite":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.3","devDependencies":{"czg":"latest","tsup":"latest","release-it":"^19.0.0","typescript":"^5.9.3","@types/node":"latest","release-it-pnpm":"latest","@release-it/conventional-changelog":"latest"},"_npmOperationalInternal":{"tmp":"tmp/vitepad_0.2.0_1779118964624_0.39373770123376284","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@buding0904/vitepad","version":"0.2.1","keywords":["vite","cli","playground","frontend","tailwindcss","react","vue","svelte","solid"],"author":{"name":"buding0904"},"license":"MIT","_id":"@buding0904/vitepad@0.2.1","maintainers":[{"name":"mao.zheng","email":"zhengmao0613@163.com"}],"homepage":"https://github.com/buding0904/vitepad#readme","bugs":{"url":"https://github.com/buding0904/vitepad/issues"},"bin":{"vitepad":"dist/cli.js"},"dist":{"shasum":"dbd0017438925f830aaebcaa1095851e9ac8d5e9","tarball":"https://registry.npmjs.org/@buding0904/vitepad/-/vitepad-0.2.1.tgz","fileCount":19,"integrity":"sha512-tJtCRvGPjNnvV8CFtdNd0f0+mY/+3uap6ZvcqwTOCeuzsFdny85AsBYBOb6oBr+BCkNL4Ouv688Nty/a555PUA==","signatures":[{"sig":"MEUCIQCF0QjjbyD6TlgXw1hNgjpdnialY0TJtWM1kSUc2Pn1aQIgJTiFGkWrUKijDYVFq7lsMpkutr8WxaYi1jFm9M43r4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":370903},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"f7005ae7ffc0ef19087e3ef8347d3b3d236dc4f2","scripts":{"dev":"tsup --watch","build":"tsup && tsc --emitDeclarationOnly --declaration --declarationMap","smoke":"node ./test/smoke.mjs","commit":"czg","release":"release-it","typecheck":"tsc --noEmit","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"mao.zheng","email":"zhengmao0613@163.com"},"repository":{"url":"git+https://github.com/buding0904/vitepad.git","type":"git"},"_npmVersion":"10.9.3","description":"Run a single frontend entry file in a temporary Vite playground.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"vite":"latest","picocolors":"latest","tailwindcss":"latest","@tailwindcss/vite":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.3","devDependencies":{"czg":"latest","tsup":"latest","release-it":"^19.0.0","typescript":"^5.9.3","@types/node":"latest","release-it-pnpm":"latest","@release-it/conventional-changelog":"latest"},"_npmOperationalInternal":{"tmp":"tmp/vitepad_0.2.1_1779119908123_0.6558397651684673","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@buding0904/vitepad","version":"0.2.2","keywords":["vite","cli","playground","frontend","tailwindcss","react","vue","svelte","solid"],"author":{"name":"buding0904"},"license":"MIT","_id":"@buding0904/vitepad@0.2.2","maintainers":[{"name":"mao.zheng","email":"zhengmao0613@163.com"}],"homepage":"https://github.com/buding0904/vitepad#readme","bugs":{"url":"https://github.com/buding0904/vitepad/issues"},"bin":{"vitepad":"dist/cli.js"},"dist":{"shasum":"3339d77d9ffd3832341c37666ff6b6d76a594e9d","tarball":"https://registry.npmjs.org/@buding0904/vitepad/-/vitepad-0.2.2.tgz","fileCount":19,"integrity":"sha512-1UH1hhyKd3k5/bsBEoec/R7TFh0bS+V1VP7ccWjKNXdQsLK0wrfcTK5yYIZwG8mw8G+sUXZpcn/DgDII39JLYA==","signatures":[{"sig":"MEQCIC+zg3yYITLcGyCQjpEFcx66Foqmxc2AxkqW4CFqCACmAiAELqLE2ZHhTI/jXQ88+v6gRc/6/RSUmO5PCIcp2EWuPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":404628},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"8fa64d5b8043fa87747cd286e27f6432acccd1f5","scripts":{"dev":"tsup --watch","build":"tsup && tsc --emitDeclarationOnly --declaration --declarationMap","smoke":"node ./test/smoke.mjs","commit":"czg","release":"release-it","typecheck":"tsc --noEmit","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"mao.zheng","email":"zhengmao0613@163.com"},"repository":{"url":"git+https://github.com/buding0904/vitepad.git","type":"git"},"_npmVersion":"10.9.3","description":"Run a single frontend entry file in a temporary Vite playground.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"vite":"latest","picocolors":"latest","tailwindcss":"latest","@tailwindcss/vite":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.3","devDependencies":{"czg":"latest","tsup":"latest","release-it":"^19.0.0","typescript":"^5.9.3","@types/node":"latest","release-it-pnpm":"latest","@release-it/conventional-changelog":"latest"},"_npmOperationalInternal":{"tmp":"tmp/vitepad_0.2.2_1779120796293_0.5464189770441665","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@buding0904/vitepad","version":"0.3.0","keywords":["vite","cli","playground","frontend","tailwindcss","react","vue","svelte","solid"],"author":{"name":"buding0904"},"license":"MIT","_id":"@buding0904/vitepad@0.3.0","maintainers":[{"name":"mao.zheng","email":"zhengmao0613@163.com"}],"homepage":"https://github.com/buding0904/vitepad#readme","bugs":{"url":"https://github.com/buding0904/vitepad/issues"},"bin":{"vitepad":"dist/cli.js"},"dist":{"shasum":"b8f05ad6461fc8169900ed5840b2849740946402","tarball":"https://registry.npmjs.org/@buding0904/vitepad/-/vitepad-0.3.0.tgz","fileCount":19,"integrity":"sha512-jCdhJX+Aq3Yf28my40FHEvmWuNz+lftK+R1VqR4XkZirPN9XV03QXjuJXEGfE/MVB0WufyYgvOBkPP6q+/CY0w==","signatures":[{"sig":"MEYCIQDF5vA2GG8p8AiZ+W2N1qb4NGult7+GF9CtcbaImoZZTgIhAK2DiBL6TobdLqQjREeKgnjvV4U2ESNXbBQKy1+BFuVw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":397537},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"30dccac288ec3b12afd9013d6ff58ff7b0e5efc2","scripts":{"dev":"tsup --watch","build":"tsup && tsc --emitDeclarationOnly --declaration --declarationMap","smoke":"node ./test/smoke.mjs","commit":"czg","release":"release-it","typecheck":"tsc --noEmit","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"mao.zheng","email":"zhengmao0613@163.com"},"repository":{"url":"git+https://github.com/buding0904/vitepad.git","type":"git"},"_npmVersion":"10.9.3","description":"Run a single frontend entry file in a temporary Vite playground.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"vite":"latest","picocolors":"latest","tailwindcss":"latest","@tailwindcss/vite":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.3","devDependencies":{"czg":"latest","tsup":"latest","release-it":"^19.0.0","typescript":"^5.9.3","@types/node":"latest","release-it-pnpm":"latest","@release-it/conventional-changelog":"latest"},"_npmOperationalInternal":{"tmp":"tmp/vitepad_0.3.0_1779121546284_0.4261000889515787","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@buding0904/vitepad","version":"0.3.1","keywords":["vite","cli","playground","frontend","unocss","react","vue","svelte","solid"],"author":{"name":"buding0904"},"license":"MIT","_id":"@buding0904/vitepad@0.3.1","maintainers":[{"name":"mao.zheng","email":"zhengmao0613@163.com"}],"homepage":"https://github.com/buding0904/vitepad#readme","bugs":{"url":"https://github.com/buding0904/vitepad/issues"},"bin":{"vitepad":"dist/cli.js"},"dist":{"shasum":"fe4e9d54430425d51ec019d611d88f3a2af828d4","tarball":"https://registry.npmjs.org/@buding0904/vitepad/-/vitepad-0.3.1.tgz","fileCount":19,"integrity":"sha512-JGU+a6DjgbHjMoiT9bQ/27Ylk7tk2I3+2t4VNolGLFoO613bA4A40ZtFtujuJYlpaQlm/OJAtOvnLtVrcmaoCw==","signatures":[{"sig":"MEUCIDrlEdBshZDyDgXt4hi1/gj1+6TniiRBiGuJFJ3VV1G+AiEAxyV4X4VtALOj49nvBmALTOgIiku9V+7ZJHdLtQ8YopM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":362897},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"a8e6ae08461faf7ad174e6c0d2f75ad2104626c3","scripts":{"dev":"tsup --watch","build":"tsup && tsc --emitDeclarationOnly --declaration --declarationMap","smoke":"node ./test/smoke.mjs","commit":"czg","release":"release-it","typecheck":"tsc --noEmit","prepublishOnly":"pnpm run build"},"_npmUser":{"name":"mao.zheng","email":"zhengmao0613@163.com"},"repository":{"url":"git+https://github.com/buding0904/vitepad.git","type":"git"},"_npmVersion":"10.9.3","description":"Run a single frontend entry file in a temporary Vite playground.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"vite":"latest","unocss":"latest","picocolors":"latest"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.15.3","devDependencies":{"czg":"latest","tsup":"latest","release-it":"^19.0.0","typescript":"^5.9.3","@types/node":"latest","release-it-pnpm":"latest","@release-it/conventional-changelog":"latest"},"_npmOperationalInternal":{"tmp":"tmp/vitepad_0.3.1_1779276738301_0.1642811195883085","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@buding0904/vitepad","version":"0.3.2","description":"Run a single frontend entry file in a temporary Vite playground.","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"bin":{"vitepad":"dist/cli.js"},"scripts":{"build":"tsup && tsc --emitDeclarationOnly --declaration --declarationMap","dev":"tsup --watch","typecheck":"tsc --noEmit","smoke":"node ./test/smoke.mjs","commit":"czg","release":"release-it","prepublishOnly":"pnpm run build"},"keywords":["vite","cli","playground","frontend","unocss","react","vue","svelte","solid"],"author":{"name":"buding0904"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/buding0904/vitepad.git"},"bugs":{"url":"https://github.com/buding0904/vitepad/issues"},"homepage":"https://github.com/buding0904/vitepad#readme","publishConfig":{"access":"public"},"dependencies":{"picocolors":"latest","unocss":"latest","vite":"latest"},"devDependencies":{"@release-it/conventional-changelog":"latest","@types/node":"latest","czg":"latest","release-it":"^19.0.0","release-it-pnpm":"latest","tsup":"latest","typescript":"^5.9.3"},"packageManager":"pnpm@9.15.3","_id":"@buding0904/vitepad@0.3.2","gitHead":"6a04e4201f73ea98243319edd2c7bc305889534f","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-StwV9rUBr/O9lpnsfurpK9ocQRshwBshGLhsHgObVBr8glrTwEDq5A3bz0wMvHQPeQtutcVTmDQKUgcXSyw4xA==","shasum":"b267c1594746b7a1014cab802ca78e91d3925322","tarball":"https://registry.npmjs.org/@buding0904/vitepad/-/vitepad-0.3.2.tgz","fileCount":27,"unpackedSize":389692,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHcIjZKQakLRPe2KG1pRzNlZVRSJ2dtkE3qt2TLu532DAiEAgCXVen1tKBaXf37huCvfvuxIjEVkwTj/6U6JroJAuas="}]},"_npmUser":{"name":"mao.zheng","email":"zhengmao0613@163.com"},"directories":{},"maintainers":[{"name":"mao.zheng","email":"zhengmao0613@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vitepad_0.3.2_1779506588656_0.8948540873263351"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-18T15:42:44.512Z","modified":"2026-05-23T03:23:08.941Z","0.2.0":"2026-05-18T15:42:44.785Z","0.2.1":"2026-05-18T15:58:28.272Z","0.2.2":"2026-05-18T16:13:16.488Z","0.3.0":"2026-05-18T16:25:46.428Z","0.3.1":"2026-05-20T11:32:18.491Z","0.3.2":"2026-05-23T03:23:08.842Z"},"bugs":{"url":"https://github.com/buding0904/vitepad/issues"},"author":{"name":"buding0904"},"license":"MIT","homepage":"https://github.com/buding0904/vitepad#readme","keywords":["vite","cli","playground","frontend","unocss","react","vue","svelte","solid"],"repository":{"type":"git","url":"git+https://github.com/buding0904/vitepad.git"},"description":"Run a single frontend entry file in a temporary Vite playground.","maintainers":[{"name":"mao.zheng","email":"zhengmao0613@163.com"}],"readme":"<div align=\"center\">\n  <h1>vitepad</h1>\n\n  <p><strong>Run any single frontend file with Vite</strong></p>\n\n  <p>\n    <a href=\"https://www.npmjs.com/package/@buding0904/vitepad\"><img src=\"https://img.shields.io/npm/v/@buding0904/vitepad.svg\" alt=\"npm version\" /></a>\n    <a href=\"./LICENSE\"><img src=\"https://img.shields.io/npm/l/@buding0904/vitepad.svg\" alt=\"license\" /></a>\n    <img src=\"https://img.shields.io/badge/frameworks-React%20%7C%20Preact%20%7C%20Solid%20%7C%20Vue%20%7C%20Svelte-blue\" alt=\"frameworks\" />\n    <img src=\"https://img.shields.io/badge/UnoCSS-enabled-22c55e\" alt=\"UnoCSS\" />\n  </p>\n</div>\n\n---\n\n`vitepad` creates a temporary Vite playground for one entry file. Use it to preview a component, test a small main entry, or compare the same file across different framework versions without creating a project or changing the current project's dependencies.\n\nUnoCSS is enabled by default. Framework packages are resolved to exact npm versions, downloaded on demand, and cached under `~/.cache/vitepad/frameworks`. No ESLint, Biome, Husky, or formatting pipeline is included.\n\n## Features\n\n**Single-file Vite runner**\n\n- Run `App.tsx`, `App.vue`, `App.svelte`, `main.ts`, `demo.js`, and similar files directly\n- `.js`, `.mjs`, `.cjs`, `.ts`, `.mts`, and `.cts` are treated as main entry files\n- `.jsx`, `.tsx`, `.vue`, and `.svelte` are treated as App component files and mounted into `#root`\n- Extra Vite config can be merged with `--config`\n\n**Frameworks**\n\n- Built-in component wrappers for React, Preact, Solid, Vue, and Svelte\n- JSX/TSX framework inference from imports, with React as the fallback\n- Explicit framework selection with `--framework react`, `--framework vue`, etc.\n- Version specs are supported, such as `react@18`, `vue@3.4`, `svelte@5`, or `react@latest`\n\n**Version testing**\n\n- Test the same component against different framework versions without touching `package.json`\n- `latest` and semver ranges are resolved to exact versions before caching\n- Cache keys use exact versions, for example `react-19.2.6`\n\n**Styling and environment**\n\n- UnoCSS is available by default through `unocss/vite` with `presetUno`\n- Framework dependencies are exposed through the temporary Vite workspace\n- Missing framework packages are linked into local `node_modules` for editor type resolution\n- Existing local packages are left untouched, and `package.json` is not modified\n- No linting or formatting toolchain is installed\n\n## Install\n\n```bash\nnpm install -g @buding0904/vitepad\n```\n\n```bash\npnpm add -g @buding0904/vitepad\n```\n\n```bash\nyarn global add @buding0904/vitepad\n```\n\n## Quick Start\n\n```bash\nvitepad ./App.tsx\nvitepad ./App.vue\nvitepad ./App.svelte\nvitepad ./main.ts\n```\n\nNo install needed:\n\n```bash\nnpx @buding0904/vitepad ./App.tsx\npnpm dlx @buding0904/vitepad ./App.vue\n```\n\n## Framework Version Testing\n\nRun the same entry with different framework versions:\n\n```bash\nvitepad ./App.tsx --framework react@18\nvitepad ./App.tsx --framework react@19\nvitepad ./App.tsx --framework react@latest\n```\n\n```bash\nvitepad ./App.vue --framework vue@3.4\nvitepad ./App.vue --framework vue@latest\n```\n\n```bash\nvitepad ./App.svelte --framework svelte@4\nvitepad ./App.svelte --framework svelte@5\n```\n\n## CLI\n\n```bash\nvitepad <entry> [options]\n```\n\n### Options\n\n| Option | Description |\n|--------|-------------|\n| `<entry>` | Entry file to run |\n| `-f, --framework <name>` | `auto`, `react`, `preact`, `solid`, `vue`, `svelte`, or `vanilla`; version specs are supported, e.g. `react@18` |\n| `-p, --port <number>` | Dev server port (default: `8000`) |\n| `--strictPort` | Exit if the configured port is already in use |\n| `--host <host>` | Dev server host (default: `0.0.0.0`) |\n| `-c, --config <file>` | Merge an extra Vite config file |\n| `-h, --help` | Show help |\n\nExamples:\n\n```bash\nvitepad ./App.tsx --framework react@18 --port 3000\nvitepad ./App.vue --host 127.0.0.1\nvitepad ./App.svelte --config ./vite.extra.js\nvitepad ./App.tsx --framework react@latest\n```\n\n## Editor Types\n\nVSCode's TypeScript server resolves imports and JSX types from the opened file's directory tree, not from vitepad's temporary Vite workspace. To keep editor diagnostics aligned with the file you run, vitepad looks from the entry file directory up through its parent directories for framework packages before linking anything. If a package cannot be resolved from that directory tree, vitepad creates a lightweight symlink inside the entry file directory's `node_modules`.\n\nFor React, vitepad links `react`, `react-dom`, `@types/react`, and `@types/react-dom` when they are missing. Existing packages are left untouched, so a project that already has React installed keeps using its local version for editor types. Runtime dependencies still come from vitepad's cache, and vitepad does not write to `package.json`.\n\nIf multiple vitepad processes run React entries in the same directory with different React versions, runtime behavior is still isolated per process. Editor links are shared by that directory, so whichever version is linked first is the version VSCode sees; later runs keep existing local packages instead of replacing them.\n\n## Entry Rules\n\n| Extension | Mode | Behavior |\n|-----------|------|----------|\n| `.js`, `.mjs`, `.cjs` | main | Imported as the app entry |\n| `.ts`, `.mts`, `.cts` | main | Imported as the app entry |\n| `.jsx`, `.tsx` | component | Mounted as an App component |\n| `.vue` | component | Mounted with Vue |\n| `.svelte` | component | Mounted with Svelte |\n\nFor main entry files, the file is responsible for mounting itself. For component entry files, vitepad creates the framework-specific mount code.\n\n## Cache\n\nFramework versions are resolved before installation:\n\n```bash\nvitepad ./App.tsx --framework react\n# react@latest -> react@19.2.6\n```\n\nFramework caches are stored in:\n\n```text\n~/.cache/vitepad/frameworks\n```\n\nExample cache directory:\n\n```text\n~/.cache/vitepad/frameworks/react-19.2.6\n```\n\nIf a framework version is not cached, vitepad downloads it and prints install progress. The user's `package.json` is left untouched. Missing framework packages may be symlinked into local `node_modules` so editors can resolve imports and JSX types.\n\n## Local Development\n\n```bash\npnpm install\npnpm run build\npnpm run typecheck\npnpm run smoke\n```\n\n`pnpm run smoke` starts temporary Vite servers for main, React, Preact, Solid, Vue, and Svelte entries. It downloads framework caches on first run.\n\nTo test the CLI globally before publishing:\n\n```bash\npnpm run build\npnpm link --global\n```\n\nThen run it from another project:\n\n```bash\ncd /path/to/project\nvitepad ./src/App.tsx\n```\n\nUninstall the linked global command:\n\n```bash\npnpm remove --global @buding0904/vitepad\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}