Build Command
The itty build
command compiles TypeScript files to optimized JavaScript bundles using Rollup and TypeScript. It automatically handles modern package distribution requirements with zero configuration.
Basic Usage
itty build # Build from src/ to dist/
itty build --minify # Build with minification
itty build --hybrid # Build both ESM and CJS
itty build --from=lib --out=build # Custom directories
How it Works
- Discovers TypeScript files in your source directory
- Compiles with TypeScript for type checking and declaration files
- Bundles with Rollup for optimized output
- Updates package.json with correct exports
- Generates sourcemaps and minified versions (optional)
Output Structure
For a single file project:
dist/
├── index.mjs # ESM bundle
├── index.d.ts # TypeScript declarations
└── index.mjs.map # Source map
For multi-file projects:
dist/
├── index.mjs
├── index.d.ts
├── utils.mjs
├── utils.d.ts
└── *.mjs.map
Package.json Integration
The build command automatically updates your package.json
exports:
Single file:
{
"exports": {
".": {
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
}
}
}
Multiple files:
{
"exports": {
".": {
"import": "./dist/index.mjs",
"types": "./dist/index.d.ts"
},
"./utils": {
"import": "./dist/utils.mjs",
"types": "./dist/utils.d.ts"
}
}
}
Configuration Options
--from
Source directory for TypeScript files
- Default:
src
- Example:
--from=lib
Specifies which directory contains your TypeScript source files.
--hybrid
Enable dual ESM/CJS output
- Default:
false
(ESM only) - Example:
--hybrid
Generates both ESM (.mjs) and CommonJS (.cjs) bundles for maximum compatibility.
--minify
Enable code minification
- Default:
false
- Example:
--minify
Compresses the output using Terser for smaller bundle sizes.
--out
Output directory
- Default:
dist
- Example:
--out=build
Specifies where compiled files should be written.
--sourcemap
Generate source maps
- Default:
true
- Example:
--no-sourcemap
Controls whether source maps are generated for debugging.
Examples
Basic Library Build
# Standard TypeScript library
itty build
Production Ready
# Minified with both ESM and CJS
itty build --minify --hybrid
Custom Directories
# Build from lib/ to build/
itty build --from=lib --out=build
Without Source Maps
# Skip source maps for production
itty build --no-sourcemap --minify
Integration with Scripts
Add to your package.json
:
{
"scripts": {
"build": "itty build",
"build:prod": "itty build --minify --hybrid",
"build:dev": "itty build --sourcemap"
}
}
TypeScript Configuration
The build command works with your existing tsconfig.json
. Recommended settings:
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "node",
"declaration": true,
"outDir": "./dist",
"strict": true
},
"include": ["src/**/*"]
}
Error Handling
Common build errors and solutions:
- No TypeScript files found - Check your
--from
directory contains.ts
files - TypeScript compilation errors - Fix type errors shown in output
- Module resolution issues - Verify your
tsconfig.json
module settings - Permission errors - Ensure write access to output directory