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>
128 lines
2.9 KiB
Markdown
128 lines
2.9 KiB
Markdown
# Package Validation (publint & attw)
|
|
|
|
Validate your package configuration and type declarations before publishing.
|
|
|
|
## Overview
|
|
|
|
tsdown integrates with [publint](https://publint.dev/) and [Are the types wrong?](https://arethetypeswrong.github.io/) (attw) to catch common packaging issues. Both are optional dependencies.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
# publint only
|
|
npm install -D publint
|
|
|
|
# attw only
|
|
npm install -D @arethetypeswrong/core
|
|
|
|
# both
|
|
npm install -D publint @arethetypeswrong/core
|
|
```
|
|
|
|
## publint
|
|
|
|
Checks that `package.json` fields (`exports`, `main`, `module`, `types`) match your actual output files.
|
|
|
|
### Enable
|
|
|
|
```ts
|
|
export default defineConfig({
|
|
publint: true,
|
|
})
|
|
```
|
|
|
|
### Configuration
|
|
|
|
```ts
|
|
export default defineConfig({
|
|
publint: {
|
|
level: 'error', // 'warning' | 'error' | 'suggestion'
|
|
},
|
|
})
|
|
```
|
|
|
|
### CLI
|
|
|
|
```bash
|
|
tsdown --publint
|
|
```
|
|
|
|
## attw (Are the types wrong?)
|
|
|
|
Verifies TypeScript declarations are correct across different module resolution strategies (`node10`, `node16`, `bundler`).
|
|
|
|
### Enable
|
|
|
|
```ts
|
|
export default defineConfig({
|
|
attw: true,
|
|
})
|
|
```
|
|
|
|
### Configuration
|
|
|
|
```ts
|
|
export default defineConfig({
|
|
attw: {
|
|
profile: 'node16', // 'strict' | 'node16' | 'esm-only'
|
|
level: 'error', // 'warn' | 'error'
|
|
ignoreRules: ['false-cjs', 'cjs-resolves-to-esm'],
|
|
},
|
|
})
|
|
```
|
|
|
|
### Profiles
|
|
|
|
| Profile | Description |
|
|
|---------|-------------|
|
|
| `strict` | Requires all resolutions to pass (default) |
|
|
| `node16` | Ignores `node10` resolution failures |
|
|
| `esm-only` | Ignores `node10` and `node16-cjs` resolution failures |
|
|
|
|
### Ignore Rules
|
|
|
|
Suppress specific problem types with `ignoreRules`:
|
|
|
|
| Rule | Description |
|
|
|------|-------------|
|
|
| `no-resolution` | Module could not be resolved |
|
|
| `untyped-resolution` | Resolution succeeded but has no types |
|
|
| `false-cjs` | Types indicate CJS but implementation is ESM |
|
|
| `false-esm` | Types indicate ESM but implementation is CJS |
|
|
| `cjs-resolves-to-esm` | CJS resolution points to an ESM module |
|
|
| `fallback-condition` | A fallback/wildcard condition was used |
|
|
| `cjs-only-exports-default` | CJS module only exports a default |
|
|
| `named-exports` | Named exports mismatch between types and implementation |
|
|
| `false-export-default` | Types declare a default export that doesn't exist |
|
|
| `missing-export-equals` | Types are missing `export =` for CJS |
|
|
| `unexpected-module-syntax` | File uses unexpected module syntax |
|
|
| `internal-resolution-error` | Internal resolution error in type checking |
|
|
|
|
### CLI
|
|
|
|
```bash
|
|
tsdown --attw
|
|
```
|
|
|
|
## CI Integration
|
|
|
|
Both tools support CI-aware options:
|
|
|
|
```ts
|
|
export default defineConfig({
|
|
publint: 'ci-only',
|
|
attw: {
|
|
enabled: 'ci-only',
|
|
profile: 'node16',
|
|
level: 'error',
|
|
},
|
|
})
|
|
```
|
|
|
|
Both tools require a `package.json` in your project directory.
|
|
|
|
## Related Options
|
|
|
|
- [CI Environment](advanced-ci.md) - CI-aware option details
|
|
- [Package Exports](option-package-exports.md) - Auto-generate exports field
|