Pre-configured tooling for JavaScript and TypeScript library development.
A monorepo of shared configs and build tools used across Vitus Labs projects. Each package is published independently to npm and can be used standalone.
| Package | Description |
|---|---|
@vitus-labs/tools-core |
Shared utilities for config loading, package metadata, and path resolution |
@vitus-labs/tools-typescript |
Shared TypeScript configuration (strict, ES2024, Bundler resolution) |
@vitus-labs/tools-lint |
Shared Biome configuration for formatting and linting |
@vitus-labs/tools-rollup |
Build tooling powered by Rollup with TypeScript, DTS bundling, and multi-platform output |
@vitus-labs/tools-rolldown |
Build tooling powered by Rolldown — faster Rust-based alternative with built-in TS support |
@vitus-labs/tools-vitest |
Shared Vitest configuration with coverage thresholds and sensible defaults |
@vitus-labs/tools-storybook |
Preconfigured Storybook 10 with auto-discovery and rocketstories integration |
@vitus-labs/tools-nextjs |
Opinionated Next.js config wrapper with security headers and sensible defaults |
@vitus-labs/tools-nextjs-images |
Image optimization loaders for Next.js with webpack (webp, lqip, responsive, svg sprites) |
@vitus-labs/tools-atlas |
Dependency graph visualizer and monorepo health analyzer with ECharts and AI-readable reports |
@vitus-labs/tools-favicon |
CLI tool for generating favicons from a source image |
bun install# Build all packages
bun run pkgs:build
# Run tests
bun test
# Typecheck all packages
bun run typecheck
# Format code
bun run format
# Lint code
bun run lint
# Publish a release (from main)
bun run release
# Clean install
bun run pkgs:clean{
"extends": "@vitus-labs/tools-typescript/lib"
}{
"$schema": "https://biomejs.dev/schemas/2.4.7/schema.json",
"extends": ["@vitus-labs/tools-lint/biome"]
}Add the CLI commands to your package's scripts:
{
"scripts": {
"build": "vl_build",
"dev": "vl_build-watch"
}
}Or with Rolldown:
{
"scripts": {
"build": "vl_rolldown_build",
"dev": "vl_rolldown_build-watch"
}
}Both tools read configuration from vl-tools.config.mjs (key: build) and support the same config-merging pattern via @vitus-labs/tools-core.
// vitest.config.ts
import { createVitestConfig } from '@vitus-labs/tools-vitest'
export default createVitestConfig()// next.config.ts
import { withVitusLabs } from '@vitus-labs/tools-nextjs'
export default withVitusLabs({
// standard next.config.ts options still work
experimental: { ppr: true },
})Configure via vl-tools.config.mjs (key: next) for security headers, image optimization, and transpilePackages.
Add CLI commands to your scripts:
{
"scripts": {
"stories": "vl_stories",
"stories:build": "vl_stories-build"
}
}Use the pre-built Storybook config in .storybook/main.ts:
export { default } from '@vitus-labs/tools-storybook/storybook/main'Configure via vl-tools.config.mjs (key: stories):
export default {
stories: {
framework: 'next',
rocketstories: {
module: '@my-org/rocketstories',
export: 'storyOf',
},
},
}This monorepo uses Lerna with fixed versioning — all packages share the same version number.
- Stable releases are published from
main - Prerelease versions (
alpha,beta) can be published fromfeature/*andrelease/*branches