
package-configuration
Configure workspace apps or packages to match the repo-wide Vite/Vitest/Turbo conventions (aliases,
Package configuration reference
Follow this skill whenever you touch tooling for an app or package (Vite, Vitest, or Turbo). The guidance keeps tooling aligned with existing workspace conventions.
Vite + Vitest wiring
-
Start from the React app templates in
apps/mvvm-reactandapps/task-flow-ui. The Vite configs there define the alias maps (e.g., linking@repo/models,@repo/view-models,@web-loom/mvvm-core,@web-loom/ui-core, etc., to../../packages/...) and the plugin stack (@vitejs/plugin-react-swc). Extend the alias resolver whenever you expose a new shared package; keepoptimizeDeps.includein sync when dependencies must be pre-bundled. Seereferences/vite-and-vitest.mdfor the patterns. -
Vitest uses the same alias map so tests resolve workspace packages the way builds do. The shared
testconfig blocks (globals,jsdomenvironment, coverage filters,setupFiles) are already captured inapps/mvvm-react/vitest.config.ts.
Turbo repository pipelines
- Root
turbo.jsongoverns caching and task dependencies (build,lint,check-types,test,dev). Keep new tasks aligned with these definitions: e.g.,devis markedcache: falseandpersistent: true, whiletestdepends on^build. When adding a new app/package, give it the standard scripts (dev,build,lint,test,check-types) so Turbo can orchestrate it out-of-the-box. Refer toturbo.jsonfor inputs/outputs and to the rootpackage.jsonscripts (e.g.,npm run dev,npm run test) that wrapturbo run.
TypeScript + workspace sharing
-
Every package relies on
@repo/typescript-configvariants (base.json,react-library.json, etc.). Extend or compose those configs when adding new tsconfig(s). Make suretsconfig.jsonreferences the correct rootpackages/typescript-config. When publishing or building, runnpm run check-types/tsc --noEmitvia Turbo so emitteddistartifacts stay accurate. -
Share code through the
apps/*andpackages/*workspace layout defined in the rootpackage.json. Depend on packages with workspace ranges ("@repo/shared": "*") and export from each package viaexports/main/typesso Vite/Vitest/Turbo resolve them correctly.
Verification checklist
npm run lint,npm run check-types,npm run test(or filtered Turbo task) succeed from the workspace root.npm run dev(orturbo run dev --filter=<app>...) starts the intended app—watch the console for alias resolution warnings.- Any new package gets referenced aliases updated in the Vite/Vitest configs and the
packages/typescript-configsetups.
See references/vite-and-vitest.md for concrete config snippets derived from the existing apps.