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>
This commit is contained in:
281
skills/tsdown/references/option-config-file.md
Normal file
281
skills/tsdown/references/option-config-file.md
Normal file
@@ -0,0 +1,281 @@
|
||||
# Configuration File
|
||||
|
||||
Centralize and manage build settings with a configuration file.
|
||||
|
||||
## Overview
|
||||
|
||||
tsdown searches for config files automatically in the current directory and parent directories.
|
||||
|
||||
## Supported File Names
|
||||
|
||||
tsdown looks for these files (in order):
|
||||
- `tsdown.config.ts`
|
||||
- `tsdown.config.mts`
|
||||
- `tsdown.config.cts`
|
||||
- `tsdown.config.js`
|
||||
- `tsdown.config.mjs`
|
||||
- `tsdown.config.cjs`
|
||||
- `tsdown.config.json`
|
||||
- `tsdown.config`
|
||||
- `package.json` (in `tsdown` field)
|
||||
|
||||
## Basic Configuration
|
||||
|
||||
### TypeScript Config
|
||||
|
||||
```ts
|
||||
// tsdown.config.ts
|
||||
import { defineConfig } from 'tsdown'
|
||||
|
||||
export default defineConfig({
|
||||
entry: ['src/index.ts'],
|
||||
format: ['esm', 'cjs'],
|
||||
dts: true,
|
||||
clean: true,
|
||||
})
|
||||
```
|
||||
|
||||
### JavaScript Config
|
||||
|
||||
```js
|
||||
// tsdown.config.js
|
||||
export default {
|
||||
entry: ['src/index.ts'],
|
||||
format: ['esm', 'cjs'],
|
||||
dts: true,
|
||||
}
|
||||
```
|
||||
|
||||
### JSON Config
|
||||
|
||||
```json
|
||||
// tsdown.config.json
|
||||
{
|
||||
"entry": ["src/index.ts"],
|
||||
"format": ["esm", "cjs"],
|
||||
"dts": true
|
||||
}
|
||||
```
|
||||
|
||||
### Package.json Config
|
||||
|
||||
```json
|
||||
// package.json
|
||||
{
|
||||
"name": "my-library",
|
||||
"tsdown": {
|
||||
"entry": ["src/index.ts"],
|
||||
"format": ["esm", "cjs"],
|
||||
"dts": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Multiple Configurations
|
||||
|
||||
Build multiple outputs with different settings:
|
||||
|
||||
```ts
|
||||
export default defineConfig([
|
||||
{
|
||||
entry: 'src/index.ts',
|
||||
format: ['esm', 'cjs'],
|
||||
platform: 'node',
|
||||
dts: true,
|
||||
},
|
||||
{
|
||||
entry: 'src/browser.ts',
|
||||
format: ['iife'],
|
||||
platform: 'browser',
|
||||
globalName: 'MyLib',
|
||||
minify: true,
|
||||
},
|
||||
])
|
||||
```
|
||||
|
||||
Each configuration runs as a separate build.
|
||||
|
||||
## Dynamic Configuration
|
||||
|
||||
Use a function for conditional config:
|
||||
|
||||
```ts
|
||||
export default defineConfig((options) => {
|
||||
const isDev = options.watch
|
||||
|
||||
return {
|
||||
entry: ['src/index.ts'],
|
||||
format: ['esm', 'cjs'],
|
||||
minify: !isDev,
|
||||
sourcemap: isDev,
|
||||
clean: !isDev,
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
Available options:
|
||||
- `watch` - Whether watch mode is enabled
|
||||
- Other CLI flags passed to config
|
||||
|
||||
## Config Loaders
|
||||
|
||||
Control how TypeScript config files are loaded:
|
||||
|
||||
### Auto Loader (Default)
|
||||
|
||||
Uses native TypeScript support if available, otherwise falls back to `unrun`:
|
||||
|
||||
```bash
|
||||
tsdown # Uses auto loader
|
||||
```
|
||||
|
||||
### Native Loader
|
||||
|
||||
Uses runtime's native TypeScript support (Node.js 23+, Bun, Deno):
|
||||
|
||||
```bash
|
||||
tsdown --config-loader native
|
||||
```
|
||||
|
||||
### Unrun Loader
|
||||
|
||||
Uses [unrun](https://gugustinette.github.io/unrun/) library for loading:
|
||||
|
||||
```bash
|
||||
tsdown --config-loader unrun
|
||||
```
|
||||
|
||||
**Tip:** Use `unrun` loader if you need to load TypeScript configs without file extensions in Node.js.
|
||||
|
||||
## Custom Config Path
|
||||
|
||||
Specify a custom config file location:
|
||||
|
||||
```bash
|
||||
tsdown --config ./configs/build.config.ts
|
||||
# or
|
||||
tsdown -c custom-config.ts
|
||||
```
|
||||
|
||||
## Disable Config File
|
||||
|
||||
Ignore config files and use CLI options only:
|
||||
|
||||
```bash
|
||||
tsdown --no-config src/index.ts --format esm
|
||||
```
|
||||
|
||||
## Extend Vite/Vitest Config (Experimental)
|
||||
|
||||
Reuse existing Vite or Vitest configurations:
|
||||
|
||||
```bash
|
||||
# Extend vite.config.*
|
||||
tsdown --from-vite
|
||||
|
||||
# Extend vitest.config.*
|
||||
tsdown --from-vite vitest
|
||||
```
|
||||
|
||||
**Note:** Only specific options like `resolve` and `plugins` are reused. Test thoroughly as this feature is experimental.
|
||||
|
||||
## Workspace / Monorepo
|
||||
|
||||
Build multiple packages with a single config:
|
||||
|
||||
```ts
|
||||
export default defineConfig({
|
||||
workspace: 'packages/*',
|
||||
entry: ['src/index.ts'],
|
||||
format: ['esm', 'cjs'],
|
||||
dts: true,
|
||||
})
|
||||
```
|
||||
|
||||
Each package directory matching the glob pattern will be built with the same configuration.
|
||||
|
||||
## Common Patterns
|
||||
|
||||
### Library with Multiple Builds
|
||||
|
||||
```ts
|
||||
export default defineConfig([
|
||||
// Node.js build
|
||||
{
|
||||
entry: ['src/index.ts'],
|
||||
format: ['esm', 'cjs'],
|
||||
platform: 'node',
|
||||
dts: true,
|
||||
},
|
||||
// Browser build
|
||||
{
|
||||
entry: ['src/browser.ts'],
|
||||
format: ['iife'],
|
||||
platform: 'browser',
|
||||
globalName: 'MyLib',
|
||||
},
|
||||
])
|
||||
```
|
||||
|
||||
### Development vs Production
|
||||
|
||||
```ts
|
||||
export default defineConfig((options) => ({
|
||||
entry: ['src/index.ts'],
|
||||
format: ['esm', 'cjs'],
|
||||
minify: !options.watch,
|
||||
sourcemap: options.watch ? true : false,
|
||||
clean: !options.watch,
|
||||
}))
|
||||
```
|
||||
|
||||
### Monorepo Root Config
|
||||
|
||||
```ts
|
||||
// Root tsdown.config.ts
|
||||
export default defineConfig({
|
||||
workspace: 'packages/*',
|
||||
entry: ['src/index.ts'],
|
||||
format: ['esm', 'cjs'],
|
||||
dts: true,
|
||||
clean: true,
|
||||
// Shared config for all packages
|
||||
})
|
||||
```
|
||||
|
||||
### Per-Package Override
|
||||
|
||||
```ts
|
||||
// packages/special/tsdown.config.ts
|
||||
export default defineConfig({
|
||||
entry: ['src/index.ts'],
|
||||
format: ['esm'], // Override: only ESM
|
||||
platform: 'browser', // Override: browser only
|
||||
})
|
||||
```
|
||||
|
||||
## Config Precedence
|
||||
|
||||
When multiple configs exist:
|
||||
|
||||
1. CLI options (highest priority)
|
||||
2. Config file specified with `--config`
|
||||
3. Auto-discovered config files
|
||||
4. Package.json `tsdown` field
|
||||
5. Default values
|
||||
|
||||
## Tips
|
||||
|
||||
1. **Use TypeScript config** for type checking and autocomplete
|
||||
2. **Use defineConfig** helper for better DX
|
||||
3. **Export arrays** for multiple build configurations
|
||||
4. **Use functions** for dynamic/conditional configs
|
||||
5. **Keep configs simple** - prefer convention over configuration
|
||||
6. **Use workspace** for monorepo builds
|
||||
7. **Test experimental features** thoroughly before production use
|
||||
|
||||
## Related Options
|
||||
|
||||
- [Entry](option-entry.md) - Configure entry points
|
||||
- [Output Format](option-output-format.md) - Output formats
|
||||
- [Watch Mode](option-watch-mode.md) - Watch mode configuration
|
||||
Reference in New Issue
Block a user