{"_id":"@charcuterie/vitest-config","_rev":"7-a0090e005b5a65f0e5aed0223b58310e","name":"@charcuterie/vitest-config","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@charcuterie/vitest-config","version":"1.0.0","license":"MIT","_id":"@charcuterie/vitest-config@1.0.0","maintainers":[{"name":"sawtaytoes","email":"saturn2888+npm@gmail.com"}],"homepage":"https://github.com/Sawtaytoes/charcuterie#readme","bugs":{"url":"https://github.com/Sawtaytoes/charcuterie/issues"},"dist":{"shasum":"7a6841d3511311f8e42a439b9104f693c6c958fb","tarball":"https://registry.npmjs.org/@charcuterie/vitest-config/-/vitest-config-1.0.0.tgz","fileCount":3,"integrity":"sha512-e4AvGyxVGOg4InBYK2xGsYo2tUzH1ff16huON3yjbOtRVsl+MgFsd3HqlKGdaCmGXs9xG4BoV36UqSK9A3kF6w==","signatures":[{"sig":"MEUCIDafefb65URUUeeS7PN0RDe1KuXqfKOQKkg7N/kgEy54AiEAw3HQXydK943JgWCPtjsFrrgvIrPEYTY3Rk06WAmMYNo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2751},"main":"./src/index.js","type":"module","exports":{".":"./src/index.js","./*":"./src/*"},"scripts":{"typecheck":"tsc --noEmit"},"_npmUser":{"name":"sawtaytoes","email":"saturn2888+npm@gmail.com"},"repository":{"url":"git+https://github.com/Sawtaytoes/charcuterie.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"11.16.0","description":"A shared Vitest config factory for the Charcuterie fleet — call createVitestConfig(overrides) instead of hand-rolling vitest.config.ts.","directories":{},"_nodeVersion":"24.18.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^25.6.2"},"peerDependencies":{"vitest":">=3"},"_npmOperationalInternal":{"tmp":"tmp/vitest-config_1.0.0_1786160401646_0.9969219477340354","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@charcuterie/vitest-config","version":"1.0.1","license":"MIT","_id":"@charcuterie/vitest-config@1.0.1","maintainers":[{"name":"sawtaytoes","email":"saturn2888+npm@gmail.com"}],"homepage":"https://github.com/Sawtaytoes/charcuterie#readme","bugs":{"url":"https://github.com/Sawtaytoes/charcuterie/issues"},"dist":{"shasum":"434cd2c4b720cba7eaa3260005a724654a68c681","tarball":"https://registry.npmjs.org/@charcuterie/vitest-config/-/vitest-config-1.0.1.tgz","fileCount":4,"integrity":"sha512-J4ufIJeazcKQZB+kxZScYaR15pgZ2KcF93cmYT7C9ja+F1KEUq8E24GyY4ql2ixeoBLC+tc6XnV92vcdvae75Q==","signatures":[{"sig":"MEQCIF1+VIuXKYnFM7anrqHpNmp/aGYRWMaIzyuWy07NK+jGAiAgXeY1CILuBjk9nnmU5NEgayPx9IqwCQtDj6xM3vIf3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@charcuterie%2fvitest-config@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3107},"main":"./src/index.js","type":"module","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./*":"./src/*"},"scripts":{"typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17b3e438-d3fe-40ed-8a9c-21816c05bbea"}},"repository":{"url":"git+https://github.com/Sawtaytoes/charcuterie.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"11.19.0","description":"A shared Vitest config factory for the Charcuterie fleet — call createVitestConfig(overrides) instead of hand-rolling vitest.config.ts.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^25.6.2"},"peerDependencies":{"vitest":">=3"},"_npmOperationalInternal":{"tmp":"tmp/vitest-config_1.0.1_1786162867366_0.9701221977028105","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@charcuterie/vitest-config","version":"1.1.0","license":"MIT","_id":"@charcuterie/vitest-config@1.1.0","maintainers":[{"name":"sawtaytoes","email":"saturn2888+npm@gmail.com"}],"homepage":"https://github.com/Sawtaytoes/charcuterie#readme","bugs":{"url":"https://github.com/Sawtaytoes/charcuterie/issues"},"bin":{"charcuterie-check-optimize-deps":"src/cli/checkOptimizeDeps.js"},"dist":{"shasum":"12e624692a5ae1c4808b9b8dff4e46211f3151d7","tarball":"https://registry.npmjs.org/@charcuterie/vitest-config/-/vitest-config-1.1.0.tgz","fileCount":8,"integrity":"sha512-6NHZX4iujQ23fqETluVjFNhrVQBn0DqC+SiOuKJfhKRlct2boT6hJkYi0zUsUpFR/YWf4QlhUVF0EaEnUFYUAg==","signatures":[{"sig":"MEYCIQCAZpv2NnePrs548iiRpwJP1BZqZMuykyQzB7fHntniVQIhAIbaaXXosprwUDgNGgS38ucCVPKBWLPpafIomI4gToqL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@charcuterie%2fvitest-config@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18839},"main":"./src/index.js","type":"module","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./*":"./src/*","./check-optimize-deps":{"types":"./src/checkOptimizeDeps.d.ts","default":"./src/checkOptimizeDeps.js"}},"scripts":{"typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17b3e438-d3fe-40ed-8a9c-21816c05bbea"}},"repository":{"url":"git+https://github.com/Sawtaytoes/charcuterie.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"11.19.0","description":"A shared Vitest config factory for the Charcuterie fleet — call createVitestConfig(overrides) instead of hand-rolling vitest.config.ts.","directories":{},"_nodeVersion":"26.7.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^25.6.2"},"peerDependencies":{"vitest":">=3"},"_npmOperationalInternal":{"tmp":"tmp/vitest-config_1.1.0_1786786026030_0.4604786794185667","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@charcuterie/vitest-config","version":"1.1.1","license":"MIT","_id":"@charcuterie/vitest-config@1.1.1","maintainers":[{"name":"sawtaytoes","email":"saturn2888+npm@gmail.com"}],"homepage":"https://github.com/Sawtaytoes/charcuterie#readme","bugs":{"url":"https://github.com/Sawtaytoes/charcuterie/issues"},"bin":{"charcuterie-check-optimize-deps":"src/cli/checkOptimizeDeps.js"},"dist":{"shasum":"9d1040a2e2e953d8c575a3475f74e7b746906ba1","tarball":"https://registry.npmjs.org/@charcuterie/vitest-config/-/vitest-config-1.1.1.tgz","fileCount":9,"integrity":"sha512-6B+GmC2WV2ydET8biiV7QUuxHFx9X6CLnf8WBncfa98R3eH64661QHsQvxr2qayR1L8PNn55af7e98/SK+BA/g==","signatures":[{"sig":"MEUCIQCZHA/MMktRoj1auToBQzDFzEaQe9tFdx9Kn4zWO8eieQIgRyuDoWR99i/fVrelz6onOs2I/kjEzccd2tFCYHNgShU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@charcuterie%2fvitest-config@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19703},"main":"./src/index.js","type":"module","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./*":"./src/*","./check-optimize-deps":{"types":"./src/checkOptimizeDeps.d.ts","default":"./src/checkOptimizeDeps.js"}},"scripts":{"typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17b3e438-d3fe-40ed-8a9c-21816c05bbea"}},"repository":{"url":"git+https://github.com/Sawtaytoes/charcuterie.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"11.19.0","description":"A shared Vitest config factory for the Charcuterie fleet — call createVitestConfig(overrides) instead of hand-rolling vitest.config.ts.","directories":{},"_nodeVersion":"26.8.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","playwright":"^1.61.1","typescript":"^6.0.3","@types/node":"^25.6.2","@vitest/browser":"^4.1.8","@vitest/browser-playwright":"^4.1.8"},"peerDependencies":{"vitest":">=3","playwright":">=1.40","@vitest/browser":">=3","@vitest/browser-playwright":">=3"},"_npmOperationalInternal":{"tmp":"tmp/vitest-config_1.1.1_1788936150040_0.2967167475450807","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@charcuterie/vitest-config","version":"1.1.2","license":"MIT","_id":"@charcuterie/vitest-config@1.1.2","maintainers":[{"name":"sawtaytoes","email":"saturn2888+npm@gmail.com"}],"homepage":"https://github.com/Sawtaytoes/charcuterie#readme","bugs":{"url":"https://github.com/Sawtaytoes/charcuterie/issues"},"bin":{"charcuterie-check-optimize-deps":"src/cli/checkOptimizeDeps.js"},"dist":{"shasum":"a149f5a1327dedaceeaea9d001ff41318b7d8071","tarball":"https://registry.npmjs.org/@charcuterie/vitest-config/-/vitest-config-1.1.2.tgz","fileCount":9,"integrity":"sha512-eSSjxcCVM43Z5Kf/kKq/SH5LU2Bx3pW9y0oqwExEFkeiE5RQ851lSFfTU5AKR4k+ADOVM9vP6xpcAEZ8dISb0Q==","signatures":[{"sig":"MEUCIQDKlAWKv7JXM9whk2FBXmumTUPxpwYpN60U2QQxAF/5VgIgb7OmWX/cpHJNtoLcPhCdMEivh+gvFP3qdDH7xwwesEQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC2F45GHpcaLHdWxJYmfXmCLMfR9RYRfoqxhZjeC2GM5AIhAPLH+JoVpIi0jMRHFrVLVF0LFgQ3jNlVYaMkzs1ZmM1Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@charcuterie%2fvitest-config@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20993},"main":"./src/index.js","type":"module","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./*":"./src/*","./check-optimize-deps":{"types":"./src/checkOptimizeDeps.d.ts","default":"./src/checkOptimizeDeps.js"}},"scripts":{"typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17b3e438-d3fe-40ed-8a9c-21816c05bbea"}},"repository":{"url":"git+https://github.com/Sawtaytoes/charcuterie.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"11.19.1","description":"A shared Vitest config factory for the Charcuterie fleet — call createVitestConfig(overrides) instead of hand-rolling vitest.config.ts.","directories":{},"_nodeVersion":"26.9.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","playwright":"^1.61.1","typescript":"^6.0.3","@types/node":"^25.6.2","@vitest/browser":"^4.1.8","@vitest/browser-playwright":"^4.1.8"},"peerDependencies":{"vitest":">=3","playwright":">=1.40","@vitest/browser":">=3","@vitest/browser-playwright":">=3"},"_npmOperationalInternal":{"tmp":"tmp/vitest-config_1.1.2_1790056925257_0.7091195362394058","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@charcuterie/vitest-config","version":"1.2.0","license":"MIT","_id":"@charcuterie/vitest-config@1.2.0","maintainers":[{"name":"sawtaytoes","email":"saturn2888+npm@gmail.com"}],"homepage":"https://github.com/Sawtaytoes/charcuterie#readme","bugs":{"url":"https://github.com/Sawtaytoes/charcuterie/issues"},"bin":{"charcuterie-check-optimize-deps":"src/cli/checkOptimizeDeps.js"},"dist":{"shasum":"e29c7ba67b1f77fe18ffa3126ba76915ff56f129","tarball":"https://registry.npmjs.org/@charcuterie/vitest-config/-/vitest-config-1.2.0.tgz","fileCount":9,"integrity":"sha512-enBjtnhipFCPJ5eSr8HSV4g2UDH3Vr8KtMry6klWdImm0Ak15D03jJC2ZZXN5UNJt3mKwqSPxEhGdlG02oDnqA==","signatures":[{"sig":"MEUCIQDPSn7+mFrv3HwcqVDM5K+fXT33ltLq2032aryZX1bnlAIgd5T+CZCOTj1t0IDugIgusQnK2vteaxWSGXSvx7nBoFM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIE9NDIQyUpGnCHikuWbSf0O1tbudkAM51/OrtBZyDAb5AiEAgWpeg3rPVBc9XjkVtr9iXrh7dyJRdxU0P4O9vuwwJGw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@charcuterie%2fvitest-config@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":23575},"main":"./src/index.js","type":"module","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./*":"./src/*","./check-optimize-deps":{"types":"./src/checkOptimizeDeps.d.ts","default":"./src/checkOptimizeDeps.js"}},"scripts":{"typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17b3e438-d3fe-40ed-8a9c-21816c05bbea"}},"repository":{"url":"git+https://github.com/Sawtaytoes/charcuterie.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"11.19.1","description":"A shared Vitest config factory for the Charcuterie fleet — call createVitestConfig(overrides) instead of hand-rolling vitest.config.ts.","directories":{},"_nodeVersion":"26.9.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","playwright":"^1.61.1","typescript":"^6.0.3","@types/node":"^25.6.2","@vitest/browser":"^4.1.8","@vitest/browser-playwright":"^4.1.8"},"peerDependencies":{"vitest":">=3","playwright":">=1.40","@vitest/browser":">=3","@vitest/browser-playwright":">=3"},"_npmOperationalInternal":{"tmp":"tmp/vitest-config_1.2.0_1790063593787_0.04311077495247684","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"_id":"@charcuterie/vitest-config@1.3.0","bin":{"charcuterie-check-optimize-deps":"src/cli/checkOptimizeDeps.js"},"bugs":{"url":"https://github.com/Sawtaytoes/charcuterie/issues"},"dist":{"shasum":"bd751e6e355a298dc46583e3b943c27a9ebd9a19","tarball":"https://registry.npmjs.org/@charcuterie/vitest-config/-/vitest-config-1.3.0.tgz","fileCount":12,"integrity":"sha512-5CQ8AjlRXwrJGFlFYp9Xhbvb2a8s1Lhv/TYfkWiRnAyofpBm8kt18wJT6YQ+i/cpSHH0Kg+zrgTwbwOCSqFopQ==","signatures":[{"sig":"MEYCIQDEFL+QCCHnIsNgPgQln0m4Bwx6nTAxdZ/oMJn0LPve8AIhAI22x9nz2bdsK97aiJnu5uMm/b2DXIKjPLWgsCskjT3W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCdy9uvww5ED2EQeUgFLj4Wl8p6ewUnYzpsEuWygKm7lgIhANBDu++YGAvUiXlBMcPfhzV61P6Xy7lqKPIiRVSresmf"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@charcuterie%2fvitest-config@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":31314},"main":"./src/index.js","name":"@charcuterie/vitest-config","type":"module","types":"./src/index.d.ts","exports":{".":{"types":"./src/index.d.ts","default":"./src/index.js"},"./*":"./src/*","./check-optimize-deps":{"types":"./src/checkOptimizeDeps.d.ts","default":"./src/checkOptimizeDeps.js"}},"license":"MIT","scripts":{"typecheck":"tsc --noEmit"},"version":"1.3.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:17b3e438-d3fe-40ed-8a9c-21816c05bbea"}},"homepage":"https://github.com/Sawtaytoes/charcuterie#readme","repository":{"url":"git+https://github.com/Sawtaytoes/charcuterie.git","type":"git","directory":"packages/vitest-config"},"_npmVersion":"11.19.1","description":"A shared Vitest config factory for the Charcuterie fleet — call createVitestConfig(overrides) instead of hand-rolling vitest.config.ts.","directories":{},"maintainers":[{"name":"sawtaytoes","email":"saturn2888+npm@gmail.com"}],"_nodeVersion":"26.9.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.8","playwright":"^1.61.1","typescript":"^6.0.3","@types/node":"^25.6.2","@vitest/browser":"^4.1.8","@vitest/browser-playwright":"^4.1.8"},"peerDependencies":{"vitest":">=3","playwright":">=1.40","@vitest/browser":">=3","@vitest/browser-playwright":">=3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vitest-config_1.3.0_1790068629942_0.35857541894384437"}}},"time":{"created":"2026-08-08T03:40:01.552Z","modified":"2026-09-22T09:17:10.431Z","1.0.0":"2026-08-08T03:40:01.769Z","1.0.1":"2026-08-08T04:21:07.508Z","1.1.0":"2026-08-15T09:27:06.174Z","1.1.1":"2026-09-09T06:42:30.167Z","1.1.2":"2026-09-22T06:02:05.350Z","1.2.0":"2026-09-22T07:53:13.887Z","1.3.0":"2026-09-22T09:17:10.039Z"},"bugs":{"url":"https://github.com/Sawtaytoes/charcuterie/issues"},"license":"MIT","homepage":"https://github.com/Sawtaytoes/charcuterie#readme","repository":{"url":"git+https://github.com/Sawtaytoes/charcuterie.git","type":"git","directory":"packages/vitest-config"},"description":"A shared Vitest config factory for the Charcuterie fleet — call createVitestConfig(overrides) instead of hand-rolling vitest.config.ts.","maintainers":[{"name":"sawtaytoes","email":"saturn2888+npm@gmail.com"}],"readme":"# @charcuterie/vitest-config\n\nA shared Vitest config **factory** for the Charcuterie fleet. Config that is code ships\nas a function, not a static file — the shared defaults use Chromium through Playwright,\nwith globals, excludes, and v8 coverage; each app supplies its own delta.\n\n## Usage\n\n```ts\n// vitest.config.ts\nimport { createVitestConfig } from \"@charcuterie/vitest-config\"\n\nexport default createVitestConfig({\n  test: {\n    setupFiles: [\"./src/test/setup.ts\"],\n  },\n})\n```\n\nOverrides are **deep-merged** over the base (via Vitest's own `mergeConfig`), so passing\n`test.exclude` extends rather than replaces the shared excludes only where you intend.\n\n`vitest`, `@vitest/browser`, `@vitest/browser-playwright`, and `playwright` are peer\ndependencies. The app owns their versions. Renovate bumps this package's ranges fleet-wide\nwhen the shared defaults change.\n\n## `optimizeDeps.include` drift — the parity check\n\nA repo running Vitest **browser mode** pre-declares its dependencies in\n`optimizeDeps.include`. Vite discovers dependencies lazily, so one that is *not*\ndeclared gets found part-way through a run, which triggers a re-optimization and\nreloads the page underneath the running tests. It surfaces as one of:\n\n```\nTypeError: Cannot read properties of null (reading 'useMemoCache')\nTypeError: Failed to fetch dynamically imported module: …?v=<hash>\n```\n\nNeither message names the missing dependency. It is a **race**, not a determinate\nbreak, so an incomplete list passes until it doesn't — and a warm `node_modules/.vite`\nmeans it passes *more* often locally than in CI.\n\n**Each subpath is its own entry.** `@charcuterie/logic` in the list does not cover\n`@charcuterie/logic/query`.\n\nTwo fleet repos carried a comment describing this hazard and drifted anyway. A comment\nasking a human to remember is not a mechanism; this is.\n\n### Wiring it up\n\nExport the list from its own module so a plain Node process can read it without\nloading a Vite config:\n\n```js\n// packages/web/optimizeDeps.js\nexport const optimizeDepsInclude = [\n  \"@charcuterie/logic\",\n  \"@charcuterie/logic/query\",\n  \"react\",\n  // …\n]\n```\n\n```ts\n// packages/web/vitest.config.ts\nimport { optimizeDepsInclude } from \"./optimizeDeps.js\"\n\nexport default defineConfig({\n  // …\n  optimizeDeps: { include: optimizeDepsInclude },\n})\n```\n\nThen run the check **after** the suite, in the same CI job — the optimizer writes its\nmetadata as it discovers, so before a run there is nothing to compare and mid-run the\npicture is incomplete:\n\n```yaml\n- run: yarn vitest run\n- run: yarn charcuterie-check-optimize-deps ./packages/web/optimizeDeps.js --cache-dir packages/web/node_modules/.vite\n```\n\n`--cache-dir` defaults to `node_modules/.vite`. Point it at the **package's** cache:\nit lives beside the package, not at the repo root, and clearing or reading the wrong\none is how a \"cold\" run passes while proving nothing.\n\nIt exits `1` listing the specifiers to add. Pass `--allow-extra` to tolerate declared\nentries that were never optimized (stale, but harmless at runtime).\n\nThe same check is available programmatically:\n\n```js\nimport { checkOptimizeDepsParity } from \"@charcuterie/vitest-config/check-optimize-deps\"\n\nconst { missing, extra } = checkOptimizeDepsParity({\n  cacheDir: \"packages/web/node_modules/.vite\",\n  include: optimizeDepsInclude,\n})\n```\n","readmeFilename":"README.md"}