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>
3.6 KiB
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
# Single entry
tsdown src/index.ts
# Multiple entries
tsdown src/index.ts src/cli.ts
# Glob patterns
tsdown 'src/*.ts'
Config File
Single Entry
export default defineConfig({
entry: 'src/index.ts',
})
Multiple Entries (Array)
export default defineConfig({
entry: ['src/entry1.ts', 'src/entry2.ts'],
})
Named Entries (Object)
export default defineConfig({
entry: {
main: 'src/index.ts',
utils: 'src/utils.ts',
cli: 'src/cli.ts',
},
})
Output files will match the keys:
dist/main.mjsdist/utils.mjsdist/cli.mjs
Glob Patterns
Match multiple files dynamically using glob patterns:
All TypeScript Files
export default defineConfig({
entry: 'src/**/*.ts',
})
Exclude Test Files
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):
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 (!):
export default defineConfig({
entry: {
'hooks/*': ['src/hooks/*.ts', '!src/hooks/index.ts'],
},
})
Multiple positive and negation patterns:
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:
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:
// ✅ Correct
entry: 'src/utils/*.ts'
// ❌ Wrong on Windows
entry: 'src\\utils\\*.ts'
Common Patterns
Library with Main Export
export default defineConfig({
entry: 'src/index.ts',
format: ['esm', 'cjs'],
dts: true,
})
Library with Multiple Exports
export default defineConfig({
entry: {
index: 'src/index.ts',
client: 'src/client.ts',
server: 'src/server.ts',
},
format: ['esm', 'cjs'],
dts: true,
})
CLI Tool
export default defineConfig({
entry: {
cli: 'src/cli.ts',
},
format: ['esm'],
platform: 'node',
})
Preserve Directory Structure
Use with unbundle: true to keep file structure:
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.mjssrc/utils/helper.ts→dist/utils/helper.mjs
Tips
- Use glob patterns for multiple related files
- Use object syntax for custom output names
- Exclude test files with negation patterns
!**/*.test.ts - Combine with unbundle to preserve directory structure
- Use named entries for better control over output filenames