{"_id":"@0x57/viteplus-config","_rev":"3-383efebcd73918f3018ec2f3e7148f58","name":"@0x57/viteplus-config","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.1":{"name":"@0x57/viteplus-config","version":"0.0.1","_id":"@0x57/viteplus-config@0.0.1","maintainers":[{"name":"ianmitchell","email":"ian.mitchel1@live.com"}],"dist":{"shasum":"90d02d527952ca1e40aad5de6b7691675b47bfa2","tarball":"https://registry.npmjs.org/@0x57/viteplus-config/-/viteplus-config-0.0.1.tgz","fileCount":2,"integrity":"sha512-cYPXhkt8lGmASq9zgbw6dFVqb635XV49uFj/GeqSdhtbjP6Q9c3eosODpYwGPXvLV/+97Nb+yFTPy9gYjdAV4w==","signatures":[{"sig":"MEYCIQCZxsn/PLgTlrRW4qymN21+oipkeQz3hgVpYwdUc4GSrQIhAPItNbBsjyniNH4BytApLcW2kSLP0166kup27ckUCRsj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179},"type":"module","exports":"./index.js","_npmUser":{"name":"ianmitchell","email":"ian.mitchel1@live.com"},"_npmVersion":"11.17.0","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/viteplus-config_0.0.1_1786391553399_0.8580406744567379","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@0x57/viteplus-config","version":"0.1.0","_id":"@0x57/viteplus-config@0.1.0","maintainers":[{"name":"ianmitchell","email":"ian.mitchel1@live.com"}],"homepage":"https://github.com/IanMitchell/viteplus-config#readme","bugs":{"url":"https://github.com/IanMitchell/viteplus-config/issues"},"dist":{"shasum":"9e97b05669975737b8949c30a8e05a7919f95dc6","tarball":"https://registry.npmjs.org/@0x57/viteplus-config/-/viteplus-config-0.1.0.tgz","fileCount":19,"integrity":"sha512-v0gw2xs0psx5WYi9BLqWIqJoAuuAJd5vyo1Ko5ifNJrMggNx7LregAoZr9SAMuhLMusy+MT8ZBq7Qwu2GF7Huw==","signatures":[{"sig":"MEQCIDmiKFtCAcovkykOBwAYkiYf0fuILuS5CZmJc0MiAzQWAiBO1oqw3TmgduoCeuqJhKz5CVDneGZl5ikrdrFF3FCIIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0x57%2fviteplus-config@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":110744},"type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./oxfmt":{"types":"./dist/oxfmt/index.d.ts","default":"./dist/oxfmt/index.js"},"./oxlint":{"types":"./dist/oxlint/index.d.ts","default":"./dist/oxlint/index.js"},"./oxlint/next":{"types":"./dist/oxlint/next.d.ts","default":"./dist/oxlint/next.js"},"./package.json":"./package.json","./typescript/base.json":"./typescript/base.json","./typescript/nextjs.json":"./typescript/nextjs.json","./typescript/browser.json":"./typescript/browser.json","./typescript/library.json":"./typescript/library.json"},"gitHead":"21ebaad2c130c56a1235cfbb404384743d03e75e","scripts":{"prepack":"vp pack"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c901d110-01a3-40fd-8ee4-7eba8f356733"}},"repository":{"url":"git+https://github.com/IanMitchell/viteplus-config.git","type":"git"},"_npmVersion":"11.17.0","description":"Shared Vite+ configuration used by 0x57 projects","directories":{},"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"semver":"7.8.5","valibot":"1.4.2","vite-plus":"0.2.8","@types/bun":"1.3.14","typescript":"7.0.2","@types/semver":"7.8.0"},"peerDependencies":{"vite-plus":"0.2.8"},"_npmOperationalInternal":{"tmp":"tmp/viteplus-config_0.1.0_1786405126655_0.33348547334919076","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"_id":"@0x57/viteplus-config@0.2.0","bugs":{"url":"https://github.com/IanMitchell/viteplus-config/issues"},"dist":{"shasum":"599c74e493c40ef7e0f394735df34672d1e066ba","tarball":"https://registry.npmjs.org/@0x57/viteplus-config/-/viteplus-config-0.2.0.tgz","fileCount":19,"integrity":"sha512-NBKm7Yvh6yNTqRKuyIVmOgujNx1CVsQsg9IGg37ksxBy8lKB7mSLUb12iP+xEMWWBz7r6N8pIYYqYJNEDVfOOg==","signatures":[{"sig":"MEUCIQC6RG/KRsM+DQzZuIP/4OjgRUK+wnIWRxnnUOZA/RjV9gIgaDbWwb2mVfNUaPhM/x+Wgg5KTWUa4QlCrL3b7nG0BE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDa+l049FxoGzdfnjHH3Tn9H7HN9Ssu4uAkq+MhTs1g0AIhAKl7Z5mgnheVhd1GO8769SjsvPQiEIzFy/pDLPuidXRJ"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0x57%2fviteplus-config@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112631},"name":"@0x57/viteplus-config","type":"module","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./oxfmt":{"types":"./dist/oxfmt/index.d.ts","default":"./dist/oxfmt/index.js"},"./oxlint":{"types":"./dist/oxlint/index.d.ts","default":"./dist/oxlint/index.js"},"./oxlint/next":{"types":"./dist/oxlint/next.d.ts","default":"./dist/oxlint/next.js"},"./package.json":"./package.json","./typescript/base.json":"./typescript/base.json","./typescript/nextjs.json":"./typescript/nextjs.json","./typescript/browser.json":"./typescript/browser.json","./typescript/library.json":"./typescript/library.json"},"gitHead":"db7ade6d23f126f250589934bdb52a93b87fb36d","scripts":{"prepack":"vp pack"},"version":"0.2.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"c901d110-01a3-40fd-8ee4-7eba8f356733"}},"homepage":"https://github.com/IanMitchell/viteplus-config#readme","repository":{"url":"git+https://github.com/IanMitchell/viteplus-config.git","type":"git"},"_npmVersion":"11.19.0","description":"Shared Vite+ configuration used by 0x57 projects","directories":{},"maintainers":[{"name":"ianmitchell","email":"ian.mitchel1@live.com"}],"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"semver":"7.8.5","valibot":"1.5.0","vite-plus":"1.0.0","@types/bun":"1.4.2","typescript":"7.0.2","@types/semver":"7.8.0"},"peerDependencies":{"vite-plus":"1.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/viteplus-config_0.2.0_1790789119608_0.04942342462981175"}}},"time":{"created":"2026-08-10T19:52:33.221Z","modified":"2026-09-30T17:25:20.226Z","0.0.1":"2026-08-10T19:52:33.546Z","0.1.0":"2026-08-10T23:38:46.781Z","0.2.0":"2026-09-30T17:25:19.715Z"},"bugs":{"url":"https://github.com/IanMitchell/viteplus-config/issues"},"homepage":"https://github.com/IanMitchell/viteplus-config#readme","repository":{"url":"git+https://github.com/IanMitchell/viteplus-config.git","type":"git"},"description":"Shared Vite+ configuration used by 0x57 projects","maintainers":[{"name":"ianmitchell","email":"ian.mitchel1@live.com"}],"readme":"# @0x57/viteplus-config\n\nShared Vite+, Oxlint, Oxfmt, and TypeScript configuration used by [0x57](https://0x57.studio) projects.\n\n## Usage\n\n```sh\nbun add -D @0x57/viteplus-config vite-plus\n```\n\n```ts\nimport { config } from \"@0x57/viteplus-config\";\nimport { mergeConfig } from \"vite-plus\";\n\nexport default mergeConfig(config, {\n\tstaged: {\n\t\t\"*\": \"vp check --fix\",\n\t},\n\trun: {\n\t\tcache: true,\n\t\ttasks: {\n\t\t\tbuild: {\n\t\t\t\tcommand: \"vpr -r build\",\n\t\t\t},\n\t\t},\n\t},\n\tfmt: {\n\t\tsortTailwindcss: {\n\t\t\tstylesheet: \"./app/globals.css\",\n\t\t},\n\t},\n\tlint: {\n\t\toverrides: [\n\t\t\t{\n\t\t\t\tfiles: [\"**/*.test.ts\"],\n\t\t\t\trules: {\n\t\t\t\t\t\"vitest/no-conditional-expect\": \"off\",\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n});\n```\n\n`mergeConfig` recursively merges objects and appends arrays, with the project configuration\ntaking precedence over the shared defaults.\n\nThe formatter and linter configs can be imported independently from\n`@0x57/viteplus-config/oxfmt` and `@0x57/viteplus-config/oxlint`. Next.js-specific lint\nrules are available from `@0x57/viteplus-config/oxlint/next`.\n\n### Next.js lint rules\n\nMerge the Next.js lint preset into the shared configuration for a Next.js project:\n\n```ts\nimport { config } from \"@0x57/viteplus-config\";\nimport { config as nextLint } from \"@0x57/viteplus-config/oxlint/next\";\nimport { mergeConfig } from \"vite-plus\";\n\nexport default mergeConfig(config, {\n\tlint: nextLint,\n});\n```\n\n### Oxlint and Oxfmt without Vite+\n\nInstall the native Oxlint and Oxfmt CLIs alongside this package:\n\n```sh\nbun add -D @0x57/viteplus-config oxlint oxfmt\n```\n\nCreate `oxlint.config.ts` and extend the shared lint configuration:\n\n```ts\nimport { config } from \"@0x57/viteplus-config/oxlint\";\nimport { defineConfig } from \"oxlint\";\n\nexport default defineConfig({\n\textends: [config],\n});\n```\n\nCreate `oxfmt.config.ts` and export the shared formatter configuration:\n\n```ts\nimport { config } from \"@0x57/viteplus-config/oxfmt\";\nimport { defineConfig } from \"oxfmt\";\n\nexport default defineConfig(config);\n```\n\nPoint the native CLIs at those files in `package.json`:\n\n```json\n{\n\t\"scripts\": {\n\t\t\"format\": \"oxfmt --config oxfmt.config.ts .\",\n\t\t\"format:check\": \"oxfmt --config oxfmt.config.ts --check .\",\n\t\t\"lint\": \"oxlint --config oxlint.config.ts .\"\n\t}\n}\n```\n\nThese commands use Oxlint and Oxfmt directly; a `vite.config.ts` and the Vite+ CLI are not\nneeded.\n\nExtend a TypeScript preset from the `typescript` subpath:\n\n```json\n{\n\t\"extends\": \"@0x57/viteplus-config/typescript/library.json\"\n}\n```\n\n## Codebase Assumptions\n\nProjects use ECMAScript modules, prefer named exports, and include file extensions on relative\nTypeScript imports.\n\nReact projects use React Compiler. The lint configuration reports compiler bailouts and leaves\ncompiler-managed JSX allocation checks to the compiler.\n\n### Environment validation\n\nDirect `process.env` access is restricted to files named `environment.ts`. These modules are\nexpected to define and validate the application's environment with `createEnv` from\n`@t3-oss/env-core` or `@t3-oss/env-nextjs`, passing the runtime environment through that\nvalidation boundary. Other modules should import the validated `env` export instead of reading\n`process.env` directly.\n\n## Development\n\nInstall dependencies and run the complete consumer-facing verification suite:\n\n```sh\nvp install --frozen-lockfile\nvp test\nvp check\nvp pack\n```\n\nVerification runs the tests, checks formatting, lint and type diagnostics, then builds the\npackage.\n","readmeFilename":"README.md"}