Releases: rolldown/tsdown
v0.22.3
v0.22.2
v0.22.1
v0.22.0
🚨 Breaking Changes
- Drop Node.js < 22.18.0 support, make unrun optional, add tsx config loader - by @sxzz (a1042)
- dts: Auto-enable dts when tsconfig declaration is true - by @sxzz in #872 (085f0)
- publint: Use pkg from publint results, require publint v0.3.8+ - by @sxzz (413bb)
🚀 Features
- Upgrade rolldown to 1.0.0-rc.18 - by @sxzz (66085)
- Upgrade rolldown to v1.0.0 - by @sxzz (fabba)
- exports: Auto-enable bin detection by default - by @sxzz in #873 (abda9)
🐞 Bug Fixes
- Explicitly drop node 23 support - by @sxzz (85e65)
- debug: Enhance debug logging for pack tarball - by @sxzz and Copilot (5de04)
- exports: Detect types fields nested in conditional exports - by @sxzz (82fa1)
- pkg: Fix duplicate configuration warning logic - by @ho991217 and @sxzz in #935 (6a0d9)
🔄 Migration Guide
Node.js version
Upgrade to Node.js 22.18.0 or later. Bun and Deno remain supported (experimental).
unrun is no longer bundled
If your environment relies on the unrun config loader (i.e. you're on a Node version without native TypeScript support and use the default auto loader), install it manually:
npm i -D unrun
# or, alternatively, the new tsx loader:
npm i -D tsxIf you use Node.js 22.18.0+ with native TypeScript support, no change is needed — the auto loader will pick native.
dts auto-enabled from tsconfig
If your tsconfig.json has compilerOptions.declaration: true but you do not want tsdown to emit .d.ts files, opt out explicitly:
// tsdown.config.ts
export default defineConfig({
dts: false,
})exports.bin auto-detection
Any entry chunk containing a shebang (e.g. #!/usr/bin/env node) now causes tsdown to write a bin field in package.json automatically. The semantics differ slightly from explicit bin: true:
| Value | Single shebang | Multiple shebangs | No shebangs |
|---|---|---|---|
| (unset) | Auto-set bin | Warn, skip | Silent |
true |
Auto-set bin | Throw | Warn |
false |
No bin | No bin | No bin |
To opt out entirely:
export default defineConfig({
exports: { bin: false },
})Links
v0.22.0-beta.3
No significant changes
View changes on GitHub
v0.22.0-beta.2
v0.22.0-beta.1
🚨 Breaking Changes
- Drop Node.js < 22.18.0 support, make unrun optional, add tsx config loader - by @sxzz (a1042)
- dts: Auto-enable dts when tsconfig declaration is true - by @sxzz in #872 (085f0)
- publint: Use pkg from publint results, require publint v0.3.8+ - by @sxzz (413bb)
Migration Guide
Node.js version
Upgrade to Node.js 22.18.0 or later. Bun and Deno remain supported (experimental).
unrun is no longer bundled
If your environment relies on the unrun config loader (i.e. you're on a Node version without native TypeScript support and use the default auto loader), install it manually:
npm i -D unrun
# or, alternatively, the new tsx loader:
npm i -D tsxIf you use Node.js 22.18.0+ with native TypeScript support, no change is needed — the auto loader will pick native.
dts auto-enabled from tsconfig
If your tsconfig.json has compilerOptions.declaration: true but you do not want tsdown to emit .d.ts files, opt out explicitly:
// tsdown.config.ts
export default defineConfig({
dts: false,
})exports.bin auto-detection
Any entry chunk containing a shebang (e.g. #!/usr/bin/env node) now causes tsdown to write a bin field in package.json automatically. The semantics differ slightly from explicit bin: true:
| Value | Single shebang | Multiple shebangs | No shebangs |
|---|---|---|---|
| (unset) | Auto-set bin | Warn, skip | Silent |
true |
Auto-set bin | Throw | Warn |
false |
No bin | No bin | No bin |
To opt out entirely:
export default defineConfig({
exports: { bin: false },
})🚀 Features
🐞 Bug Fixes
- debug: Enhance debug logging for pack tarball - by @sxzz and Copilot (5de04)
- exports: Detect types fields nested in conditional exports - by @sxzz (82fa1)
View changes on GitHub
v0.21.10
v0.21.9
🚀 Features
- Upgrade rolldown - by @sxzz (2d74e)
- config: Track transitive config dependencies for watch reload - by @sxzz in #919 (16e27)
- exports: Add bin to publishConfig when devExports is enabled - by @sxzz in #911 (60592)
- plugin: Add
tsdownConfigandtsdownConfigResolvedplugin hooks - by @sxzz in #918 (665e5)
🐞 Bug Fixes
- Skip package.json writting when content is deeply equal - by @ocavue and @sxzz in #913 (d8e1c)
- Skip Node.js version check in Bun - by @sxzz (38afd)
- css: Detect css modules from full id for vue virtual sfc styles - by @sxzz in #917 (e6021)
View changes on GitHub
v0.21.8
🚀 Features
- Upgrade rolldown - by @sxzz (7f887)
- attw: Improve
ignoreRulestype to autocomplete known values - by @mrlubos in #892 (c8f5c) - create-tsdown: Add Vite Plus template option - by @sxzz (daed0)
- exports: Add
extensionsoption for subpath export keys - by @SinhSinhAn and @sxzz in #899 (1bb7a) - target: Add support for
baseline-widely-availabletarget - by @sxzz in #896 (d6a16)
🐞 Bug Fixes
- Export type only for cjs dts re-export - by @sxzz (25510)
- Exclude shim file from bundled dependency hint - by @sxzz in #909 (3f8de)
- dts: Skip cjs dts reexport for non-entry chunks - by @sxzz (5fee2)