@lazyconfig/presets
Single-install meta-package that bundles the full lazyconfig toolchain. Install once and get TypeScript, ESLint, Jest, Rollup, Prettier, Commitlint, and API Extractor configurations — all pre-configured and ready to use.
All presets are re-exported through @lazyconfig/presets/* subpath exports, so you only need this one package installed.
Installation
# pnpm
pnpm add -D @lazyconfig/presets
# npm
npm install --save-dev @lazyconfig/presets
# yarn
yarn add --dev @lazyconfig/presets
# bun
bun add --dev @lazyconfig/presets
Included presets
| Subpath export | Description |
|---|---|
@lazyconfig/presets/tsconfig/* |
TypeScript compiler presets |
@lazyconfig/presets/eslint |
ESLint flat config factory |
@lazyconfig/presets/jest |
Jest config factory |
@lazyconfig/presets/rollup |
Rollup config factory |
@lazyconfig/presets/prettier |
Prettier preset |
@lazyconfig/presets/commitlint |
Commitlint config |
@lazyconfig/presets/api-extractor |
API Extractor base config |
@lazyconfig/presets/tsconfig/*
Reusable TypeScript compiler presets. Extend the preset that matches your project type.
Requirements
No peer dependencies.
| Tool | Version | Notes |
|---|---|---|
typescript |
>=5.0 |
Must be installed in your project |
| Node.js | >=18 |
Required by the node preset only |
Presets
| Preset | Path | Use case |
|---|---|---|
base |
@lazyconfig/presets/tsconfig/base |
Foundation for all other presets |
node |
@lazyconfig/presets/tsconfig/node |
Node.js applications and CLI tools |
lib |
@lazyconfig/presets/tsconfig/lib |
Framework-agnostic libraries |
react |
@lazyconfig/presets/tsconfig/react |
React applications |
Usage
// tsconfig.json — Node.js application
{
"extends": "@lazyconfig/presets/tsconfig/node",
"compilerOptions": {
"outDir": "dist",
"rootDir": "src"
},
"include": ["src"]
}
// tsconfig.json — library consumed by bundlers
{
"extends": "@lazyconfig/presets/tsconfig/lib",
"compilerOptions": {
"outDir": "out-tsc",
"rootDir": "src"
},
"include": ["src"]
}
// tsconfig.json — React application
{
"extends": "@lazyconfig/presets/tsconfig/react",
"include": ["src"]
}
Build-time constants (env)
Provides ambient types for __DEV__ and __PROD__ constants injected by bundlers:
{
"compilerOptions": {
"types": ["@lazyconfig/presets/tsconfig/env"]
}
}
@lazyconfig/presets/eslint
ESLint flat config factory with opt-in presets for TypeScript, React, accessibility, Node.js, and Prettier.
Requirements
| Package | Version | Required | Enables |
|---|---|---|---|
eslint |
^10 |
Yes | Core ESLint engine |
@eslint/js |
^10 |
Yes | Built-in ESLint rules |
typescript-eslint |
^8 |
Optional | TypeScript-aware rules (typescript: true) |
globals |
^17 |
Optional | Global variable definitions (typescript: true) |
eslint-plugin-react |
^7 |
Optional | React rules (react: true) |
eslint-plugin-react-hooks |
^5 |
Optional | React hooks rules (react: true) |
eslint-plugin-jsx-a11y |
^6 |
Optional | Accessibility rules (a11y: true) |
eslint-plugin-n |
^18 |
Optional | Node.js rules (node: true) |
eslint-config-prettier |
^10 |
Optional | Disables formatting rules that conflict with Prettier (prettier: true) |
Install only what you plan to use:
# required
pnpm add -D eslint @eslint/js
# TypeScript support
pnpm add -D typescript-eslint globals
# React support
pnpm add -D eslint-plugin-react eslint-plugin-react-hooks
# accessibility support
pnpm add -D eslint-plugin-jsx-a11y
# Node.js support
pnpm add -D eslint-plugin-n globals
# Prettier conflict resolution
pnpm add -D eslint-config-prettier
Usage
// eslint.config.ts
import { defineConfig } from "@lazyconfig/presets/eslint";
export default defineConfig({
typescript: true,
node: true,
prettier: true,
});
// with React and accessibility
import { defineConfig } from "@lazyconfig/presets/eslint";
export default defineConfig({
typescript: true,
react: true,
a11y: true,
prettier: true,
});
@lazyconfig/presets/jest
Jest config factory with opt-in TypeScript (SWC), browser environment, coverage, and JUnit reporting.
Requirements
| Package | Version | Required | Enables |
|---|---|---|---|
jest |
^30 |
Yes | Core test runner |
@swc/core |
^1 |
Optional | TypeScript transformation (typescript: true) |
@swc/jest |
^0.2 |
Optional | SWC Jest transform (typescript: true) |
jest-environment-jsdom |
^30 |
Optional | Browser environment (browser: true) |
jest-junit |
^17 |
Optional | JUnit XML reporting (junit: true) |
Install only what you plan to use:
# required
pnpm add -D jest
# TypeScript transformation (recommended)
pnpm add -D @swc/core @swc/jest
# browser environment
pnpm add -D jest-environment-jsdom
# JUnit XML reporting
pnpm add -D jest-junit
Usage
// jest.config.js
import { defineConfig } from "@lazyconfig/presets/jest";
export default defineConfig({
typescript: true,
coverage: true,
junit: {
outputDirectory: "reports/unit",
outputName: "test-results.xml",
suiteName: "My test suite",
},
});
@lazyconfig/presets/rollup
Declarative, format-aware Rollup config factory with opt-in pre-configured plugins.
Requirements
| Package | Version | Required | Enables |
|---|---|---|---|
rollup |
^4.0.0 |
Yes | Core bundler |
@rollup/plugin-node-resolve |
^16.0.0 |
Optional | plugins.node — resolves bare module specifiers |
@rollup/plugin-babel |
^7.0.0 |
Optional | plugins.babel — Babel transpilation |
@rollup/plugin-json |
^6.0.0 |
Optional | plugins.json — JSON file imports |
@rollup/plugin-replace |
^6.0.0 |
Optional | plugins.replace — string replacement at build time |
@rollup/plugin-terser |
^1.0.0 |
Optional | plugins.terser — output minification |
Install only what you plan to use:
# required
pnpm add -D rollup
# node resolution and Babel transpilation
pnpm add -D @rollup/plugin-node-resolve @rollup/plugin-babel
# JSON imports
pnpm add -D @rollup/plugin-json
# string replacement and minification
pnpm add -D @rollup/plugin-replace @rollup/plugin-terser
Usage
// rollup.config.ts
import { defineConfig } from "@lazyconfig/presets/rollup";
export default defineConfig({
bundles: [{ input: "src/index.ts", file: "my-lib", name: "MyLib" }],
external: ["react"],
plugins: { node: true, babel: true },
formats: { es: true, cjs: true },
});
@lazyconfig/presets/prettier
Shared Prettier preset for consistent code formatting.
Requirements
No peer dependencies.
| Tool | Version | Notes |
|---|---|---|
prettier |
^3 |
Must be installed in your project |
pnpm add -D prettier
Usage
// .prettierrc.json
"@lazyconfig/presets/prettier"
@lazyconfig/presets/commitlint
Commitlint configuration enforcing Conventional Commits.
Requirements
No peer dependencies.
| Tool | Version | Notes |
|---|---|---|
@commitlint/cli |
^20 |
Must be installed in your project |
@commitlint/config-conventional |
^20 |
Must be installed in your project |
pnpm add -D @commitlint/cli @commitlint/config-conventional
Usage
// commitlint.config.cjs
module.exports = {
extends: ["@lazyconfig/presets/commitlint"],
};
@lazyconfig/presets/api-extractor
Shared API Extractor base configuration for generating rolled-up .d.ts declaration files.
Requirements
No peer dependencies.
| Tool | Version | Notes |
|---|---|---|
@microsoft/api-extractor |
>=7.0.0 |
Must be installed in your project |
pnpm add -D @microsoft/api-extractor
Usage
// api-extractor.json
{
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
"extends": "@lazyconfig/presets/src/api-extractor.json",
"mainEntryPointFilePath": "<projectFolder>/out-tsc/src/index.d.ts",
"dtsRollup": {
"enabled": true,
"untrimmedFilePath": "<projectFolder>/dist/<unscopedPackageName>.index.d.ts"
}
}
License
MIT