Skip to content

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 ​

bash
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 ​

  1. Discovers TypeScript files in your source directory
  2. Compiles with TypeScript for type checking and declaration files
  3. Bundles with Rollup for optimized output
  4. Updates package.json with correct exports
  5. 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:

json
{
  "exports": {
    ".": {
      "import": "./dist/index.mjs",
      "types": "./dist/index.d.ts"
    }
  }
}

Multiple files:

json
{
  "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 ​

bash
# Standard TypeScript library
itty build

Production Ready ​

bash
# Minified with both ESM and CJS
itty build --minify --hybrid

Custom Directories ​

bash
# Build from lib/ to build/
itty build --from=lib --out=build

Without Source Maps ​

bash
# Skip source maps for production
itty build --no-sourcemap --minify

Integration with Scripts ​

Add to your package.json:

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:

json
{
  "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