@companyio/tooling
v0.1.0
Published
Shared TypeScript, Vitest, and Vite configuration for CompanyIO packages and apps
Readme
@companyio/tooling package
Shared development / build / test configuration for the CompanyIO monorepo.
This package is not a business domain package. It does not own Accounting, Contacts, Fuel, Prisma, auth, or UI.
What belongs here
- TypeScript base / library / backend / frontend configs
- Shared Vitest defaults (Node vs browser)
- Shared Vite defaults for frontend apps
- Guidance for the root pnpm catalog of tooling versions
What does NOT belong here
- Domain schemas →
@companyio/schemas - Domain logic → accounting, contacts, fuel, hr, …
- Prisma / database →
apps/api - Fastify / React as forced transitive runtime deps
- Product UI redesign
TypeScript
{
"extends": "@companyio/tooling/typescript/backend.json",
"compilerOptions": {
"outDir": "./dist",
"rootDir": "./src"
},
"include": ["src"],
"exclude": ["node_modules", "dist", "src/**/*.test.ts"]
}Presets:
| Export | Use for |
| --------------------------------------------- | -------------------------------------------- |
| @companyio/tooling/typescript/base.json | Lowest shared compiler options |
| @companyio/tooling/typescript/library.json | Publishable packages (strict + declarations) |
| @companyio/tooling/typescript/backend.json | Node packages (types: ["node"]) |
| @companyio/tooling/typescript/frontend.json | React libraries/apps (jsx: react-jsx) |
Vitest
import { defineConfig } from 'vitest/config';
import { nodeVitestConfig } from '@companyio/tooling/vitest';
export default defineConfig({
...nodeVitestConfig,
test: {
...nodeVitestConfig.test,
// package overrides
},
});- Node packages:
nodeVitestConfigfrom@companyio/tooling/vitest - Browser packages:
browserVitestConfigfrom@companyio/tooling/vitest
Vite
import { defineConfig } from 'vite';
import { reactAppViteConfig } from '@companyio/tooling/vite';
export default defineConfig({
...reactAppViteConfig,
plugins: [/* app-owned plugins */],
});Vite stays optional: backend packages must not depend on it.
Dependency catalog
Versions for TypeScript, Vitest, Vite, @types/node, ESLint, and Prettier live in the root pnpm-workspace.yaml catalog: block.
Package package.json entries should use:
"typescript": "catalog:",
"vitest": "catalog:"Update the catalog once, then run pnpm install.
Updating shared tooling
- Change the version in root
pnpm-workspace.yaml→catalog. - Adjust shared configs under
packages/tooling/if needed. pnpm install- Run package typecheck / tests / builds.
Packages still list typescript / vitest / vite as direct catalog: devDependencies when they run those tools. @companyio/tooling owns configuration, not the CLI binaries for every consumer.
Install
{
"devDependencies": {
"@companyio/tooling": "workspace:*",
"typescript": "catalog:",
"vitest": "catalog:"
}
}