Files
agent-skills/skills/tsdown/references/option-entry.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

212 lines
3.6 KiB
Markdown

# Entry Points
Configure which files to bundle as entry points.
## Overview
Entry points are the starting files for the bundling process. Each entry point generates a separate bundle.
## Usage Patterns
### CLI
```bash
# Single entry
tsdown src/index.ts
# Multiple entries
tsdown src/index.ts src/cli.ts
# Glob patterns
tsdown 'src/*.ts'
```
### Config File
#### Single Entry
```ts
export default defineConfig({
entry: 'src/index.ts',
})
```
#### Multiple Entries (Array)
```ts
export default defineConfig({
entry: ['src/entry1.ts', 'src/entry2.ts'],
})
```
#### Named Entries (Object)
```ts
export default defineConfig({
entry: {
main: 'src/index.ts',
utils: 'src/utils.ts',
cli: 'src/cli.ts',
},
})
```
Output files will match the keys:
- `dist/main.mjs`
- `dist/utils.mjs`
- `dist/cli.mjs`
## Glob Patterns
Match multiple files dynamically using glob patterns:
### All TypeScript Files
```ts
export default defineConfig({
entry: 'src/**/*.ts',
})
```
### Exclude Test Files
```ts
export default defineConfig({
entry: ['src/*.ts', '!src/*.test.ts'],
})
```
### Object Entries with Glob Patterns
Use glob wildcards (`*`) in both keys and values. The `*` in the key acts as a placeholder replaced with the matched file name (without extension):
```ts
export default defineConfig({
entry: {
// Maps src/foo.ts → dist/lib/foo.js, src/bar.ts → dist/lib/bar.js
'lib/*': 'src/*.ts',
},
})
```
#### Negation Patterns in Object Entries
Values can be an array with negation patterns (`!`):
```ts
export default defineConfig({
entry: {
'hooks/*': ['src/hooks/*.ts', '!src/hooks/index.ts'],
},
})
```
Multiple positive and negation patterns:
```ts
export default defineConfig({
entry: {
'utils/*': [
'src/utils/*.ts',
'src/utils/*.tsx',
'!src/utils/index.ts',
'!src/utils/internal.ts',
],
},
})
```
**Warning:** Multiple positive patterns in an array value must share the same base directory.
### Mixed Entries
Mix strings, glob patterns, and object entries in an array:
```ts
export default defineConfig({
entry: [
'src/*',
'!src/foo.ts',
{ main: 'index.ts' },
{ 'lib/*': ['src/*.ts', '!src/bar.ts'] },
],
})
```
Object entries take precedence when output names conflict.
### Windows Compatibility
Use forward slashes `/` instead of backslashes `\` on Windows:
```ts
// ✅ Correct
entry: 'src/utils/*.ts'
// ❌ Wrong on Windows
entry: 'src\\utils\\*.ts'
```
## Common Patterns
### Library with Main Export
```ts
export default defineConfig({
entry: 'src/index.ts',
format: ['esm', 'cjs'],
dts: true,
})
```
### Library with Multiple Exports
```ts
export default defineConfig({
entry: {
index: 'src/index.ts',
client: 'src/client.ts',
server: 'src/server.ts',
},
format: ['esm', 'cjs'],
dts: true,
})
```
### CLI Tool
```ts
export default defineConfig({
entry: {
cli: 'src/cli.ts',
},
format: ['esm'],
platform: 'node',
})
```
### Preserve Directory Structure
Use with `unbundle: true` to keep file structure:
```ts
export default defineConfig({
entry: ['src/**/*.ts', '!**/*.test.ts'],
unbundle: true,
format: ['esm'],
dts: true,
})
```
This will output files matching the source structure:
- `src/index.ts``dist/index.mjs`
- `src/utils/helper.ts``dist/utils/helper.mjs`
## Tips
1. **Use glob patterns** for multiple related files
2. **Use object syntax** for custom output names
3. **Exclude test files** with negation patterns `!**/*.test.ts`
4. **Combine with unbundle** to preserve directory structure
5. **Use named entries** for better control over output filenames