Skip to content

vitus-labs/tools

@vitus-labs/tools

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.

Packages

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

Getting Started

Prerequisites

Installation

bun install

Scripts

# 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

Usage

TypeScript

{
  "extends": "@vitus-labs/tools-typescript/lib"
}

Biome (Lint + Format)

{
  "$schema": "https://biomejs.dev/schemas/2.4.7/schema.json",
  "extends": ["@vitus-labs/tools-lint/biome"]
}

Rollup / Rolldown

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

// vitest.config.ts
import { createVitestConfig } from '@vitus-labs/tools-vitest'

export default createVitestConfig()

Next.js

// 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.

Storybook

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',
    },
  },
}

Versioning

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 from feature/* and release/* branches

License

MIT

About

Tooling for better DX experience!

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors