@kcconfigs/tsdown
v0.2.6
Published
Shared tsdown configuration
Maintainers
Readme
@kcconfigs/tsdown
Shared tsdown configuration with a typed
defineConfig helper and composable plugins for common package build setups.
Prerequisites
- tsdown as a peer dependency
Optional peer dependencies used by specific checks/features:
publint@arethetypeswrong/coreunplugin-unusedunrun
Installation
pnpm add --save-dev tsdown @kcconfigs/tsdownInstall optional peers only when you use related features:
pnpm add --save-dev publint @arethetypeswrong/core unplugin-unused unrunUsage
Quick start
Create tsdown.config.ts:
import { defineConfig } from "@kcconfigs/tsdown";
import { entryPlugin, nodePlugin } from "@kcconfigs/tsdown/plugins";
export default defineConfig({}, entryPlugin(["./src/index.ts"]), nodePlugin());Default behavior
defineConfig() starts from an internal base config and appends internal
normalizers. Current defaults include:
entry:./src/index.tswith test/example excludesplatform:"neutral"outDir:"dist"clean:trueminify:truefailOnWarn:truepublint.enabled:true(warning level)unused.enabled:true(warning level; checksdependenciesandpeerDependencies)attw.enabled:true
Plugins
You can import plugins from @kcconfigs/tsdown/plugins or direct subpaths
like @kcconfigs/tsdown/plugins/node.
| Plugin | Import | Description |
| ------ | ------ | ----------- |
| attwPlugin(config) | @kcconfigs/tsdown/plugins | Configure attw (@arethetypeswrong/core) options |
| browserPlugin() | @kcconfigs/tsdown/plugins | Set platform to browser |
| cssPlugin(option?) | @kcconfigs/tsdown/plugins | Build CSS/SCSS entry as index.css with ESM output |
| debugPlugin() | @kcconfigs/tsdown/plugins | Disable minification and set debug env flags |
| depsPlugin(config) | @kcconfigs/tsdown/plugins | Configure dependency externalization via deps |
| dtsPlugin(config) | @kcconfigs/tsdown/plugins | Configure declaration generation (dts) |
| entryPlugin(entry, useDefault?) | @kcconfigs/tsdown/plugins | Override entries and optionally append default excludes |
| formatPlugin(format) | @kcconfigs/tsdown/plugins | Configure output formats |
| nodePlugin() | @kcconfigs/tsdown/plugins | Set platform to node |
| outputPlugin(outDir) | @kcconfigs/tsdown/plugins | Override output directory |
| overridePlugin(...configs) | @kcconfigs/tsdown/plugins | Merge additional tsdown config objects |
| publintPlugin(config) | @kcconfigs/tsdown/plugins | Configure publint checks |
| unusedPlugin(config) | @kcconfigs/tsdown/plugins | Configure unused dependency checks |
Examples
Node package build with custom output and unused dependency ignore list:
import { defineConfig } from "@kcconfigs/tsdown";
import {
entryPlugin,
nodePlugin,
outputPlugin,
unusedPlugin,
} from "@kcconfigs/tsdown/plugins";
export default defineConfig(
{},
entryPlugin(["./src/index.ts", "./src/cli.ts"]),
nodePlugin(),
outputPlugin("dist"),
unusedPlugin({
ignore: ["publint", "@arethetypeswrong/core", "unplugin-unused", "unrun"],
}),
);CSS-only package build:
import { defineConfig } from "@kcconfigs/tsdown";
import { cssPlugin } from "@kcconfigs/tsdown/plugins";
export default defineConfig({}, cssPlugin({ lang: "scss" }));