Files
agent-skills/skills/tsdown/references/option-cjs-default.md
Jason Woltje f5792c40be feat: Complete fleet — 94 skills across 10+ domains
Pulled ALL skills from 15 source repositories:
- anthropics/skills: 16 (docs, design, MCP, testing)
- obra/superpowers: 14 (TDD, debugging, agents, planning)
- coreyhaines31/marketingskills: 25 (marketing, CRO, SEO, growth)
- better-auth/skills: 5 (auth patterns)
- vercel-labs/agent-skills: 5 (React, design, Vercel)
- antfu/skills: 16 (Vue, Vite, Vitest, pnpm, Turborepo)
- Plus 13 individual skills from various repos

Mosaic Stack is not limited to coding — the Orchestrator and
subagents serve coding, business, design, marketing, writing,
logistics, analysis, and more.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 16:27:42 -06:00

1.9 KiB

CJS Default Export

Control how default exports are handled in CommonJS output.

Overview

The cjsDefault option improves compatibility when generating CommonJS modules. When enabled (default), modules with only a single default export use module.exports = ... instead of exports.default = ....

Type

cjsDefault?: boolean  // default: true

Basic Usage

Enabled (Default)

export default defineConfig({
  entry: ['src/index.ts'],
  format: ['cjs'],
  cjsDefault: true,  // default behavior
})

Disabled

export default defineConfig({
  entry: ['src/index.ts'],
  format: ['cjs'],
  cjsDefault: false,
})

How It Works

With cjsDefault: true (Default)

When your module has only a single default export, tsdown transforms:

Source:

// src/index.ts
export default function greet() {
  console.log('Hello, world!')
}

Generated CJS:

// dist/index.cjs
function greet() {
  console.log('Hello, world!')
}
module.exports = greet

Generated Declaration:

// dist/index.d.cts
declare function greet(): void
export = greet

This allows consumers to use const greet = require('your-module') directly.

With cjsDefault: false

The default export stays as exports.default:

// dist/index.cjs
function greet() {
  console.log('Hello, world!')
}
exports.default = greet

Consumers need require('your-module').default.

When to Disable

  • When your module has both default and named exports
  • When you need consistent exports.default behavior
  • When consumers always use ESM imports

Tips

  1. Leave enabled for most libraries (default true)
  2. Disable if you have both default and named exports and need consistent behavior
  3. Test CJS consumers to verify compatibility