Skip to content

Releases: rolldown/tsdown

v0.21.0

05 Mar 08:58
v0.21.0
5145496

Choose a tag to compare

v0.21.0 - Notable Changes

Breaking Changes

Dependency options renamed to deps namespace

The dependency-related options have been moved under a new deps namespace with clearer names:

  • external -> deps.neverBundle
  • noExternal -> deps.alwaysBundle
  • inlineOnly -> deps.onlyAllowBundle
  • skipNodeModulesBundle -> deps.skipNodeModulesBundle

Before:

export default defineConfig({
  external: ['vue'],
  noExternal: ['lodash'],
})

After:

export default defineConfig({
  deps: {
    neverBundle: ['vue'],
    alwaysBundle: ['lodash'],
  },
})

The old options still work but are deprecated and will emit warnings.

failOnWarn default changed from 'ci-only' to false

If you relied on the previous behavior where warnings would fail the build in CI environments, you now need to explicitly set failOnWarn: true or failOnWarn: 'ci-only' in your config.

Node.js < 22.18.0 deprecated

tsdown now emits a deprecation warning when running on Node.js versions below 22.18.0. Plan to upgrade your Node.js version accordingly.

New Features

Experimental Node.js SEA executable bundling (exe)

tsdown can now bundle your TypeScript project into a standalone executable using Node.js Single Executable Applications (SEA). A new @tsdown/exe package provides cross-platform executable building support. See the exe documentation for details.

export default defineConfig({
  exe: true, // or { useCodeCache: true, useSnapshot: true }
})

Full CSS pipeline with @tsdown/css

CSS handling has been reimplemented as a native Rolldown plugin and extracted into the @tsdown/css package, providing a complete CSS pipeline with Lightning CSS and PostCSS support via the css.transformer option. See the CSS documentation for details.

inlinedDependencies field in package.json

When using the exports feature, tsdown now auto-generates an inlinedDependencies field in your package.json, listing dependencies that are bundled into the output.

Object option for customExports

customExports now supports an object format for more fine-grained control over the generated exports field.

Migration Guide

  1. Update dependency options: Rename external -> deps.neverBundle, noExternal -> deps.alwaysBundle, etc.
  2. Check failOnWarn: If you need warnings to fail the build in CI, explicitly set failOnWarn: 'ci-only' or failOnWarn: true.
  3. Upgrade Node.js: Ensure you're running Node.js >= 22.18.0 to avoid deprecation warnings.

Links


   🚨 Breaking Changes

  • Change failOnWarn default from 'ci-only' to false  -  by @sxzz (ad8db)
  • exe: Require Node >=25.7 and default format to esm  -  by @sxzz in #798 (0173c)

   🚀 Features

   🐞 Bug Fixes

    View changes on GitHub

v0.21.0-beta.5

05 Mar 03:59
v0.21.0-beta.5
9440739

Choose a tag to compare

v0.21.0-beta.5 Pre-release
Pre-release

v0.21.0-beta.5 - Notable Changes

Breaking Changes

Dependency options renamed to deps namespace

The dependency-related options have been moved under a new deps namespace with clearer names:

  • external -> deps.neverBundle
  • noExternal -> deps.alwaysBundle
  • inlineOnly -> deps.onlyAllowBundle
  • skipNodeModulesBundle -> deps.skipNodeModulesBundle

Before:

export default defineConfig({
  external: ['vue'],
  noExternal: ['lodash'],
})

After:

export default defineConfig({
  deps: {
    neverBundle: ['vue'],
    alwaysBundle: ['lodash'],
  },
})

The old options still work but are deprecated and will emit warnings.

failOnWarn default changed from 'ci-only' to false

If you relied on the previous behavior where warnings would fail the build in CI environments, you now need to explicitly set failOnWarn: true or failOnWarn: 'ci-only' in your config.

Node.js < 22.18.0 deprecated

tsdown now emits a deprecation warning when running on Node.js versions below 22.18.0. Plan to upgrade your Node.js version accordingly.

New Features

Experimental Node.js SEA executable bundling (exe)

tsdown can now bundle your TypeScript project into a standalone executable using Node.js Single Executable Applications (SEA). A new @tsdown/exe package provides cross-platform executable building support. See the exe documentation for details.

export default defineConfig({
  exe: true, // or { useCodeCache: true, useSnapshot: true }
})

Full CSS pipeline with @tsdown/css

CSS handling has been reimplemented as a native Rolldown plugin and extracted into the @tsdown/css package, providing a complete CSS pipeline with Lightning CSS and PostCSS support via the css.transformer option. See the CSS documentation for details.

inlinedDependencies field in package.json

When using the exports feature, tsdown now auto-generates an inlinedDependencies field in your package.json, listing dependencies that are bundled into the output.

Object option for customExports

customExports now supports an object format for more fine-grained control over the generated exports field.

Migration Guide

  1. Update dependency options: Rename external -> deps.neverBundle, noExternal -> deps.alwaysBundle, etc.
  2. Check failOnWarn: If you need warnings to fail the build in CI, explicitly set failOnWarn: 'ci-only' or failOnWarn: true.
  3. Upgrade Node.js: Ensure you're running Node.js >= 22.18.0 to avoid deprecation warnings.

Links


   🚨 Breaking Changes

  • exe: Require Node >=25.7 and default format to esm  -  by @sxzz in #798 (0173c)

   🚀 Features

   🐞 Bug Fixes

    View changes on GitHub

v0.21.0-beta.4

04 Mar 10:00
v0.21.0-beta.4
8b6562d

Choose a tag to compare

v0.21.0-beta.4 Pre-release
Pre-release

   🚀 Features

  • css:
    View changes on GitHub

v0.21.0-beta.3

03 Mar 16:51
v0.21.0-beta.3
33fde93

Choose a tag to compare

v0.21.0-beta.3 Pre-release
Pre-release

v0.21.0-beta.3 - Notable Changes

Breaking Changes

Dependency options renamed to deps namespace

The dependency-related options have been moved under a new deps namespace with clearer names:

  • external -> deps.neverBundle
  • noExternal -> deps.alwaysBundle
  • inlineOnly -> deps.onlyAllowBundle
  • skipNodeModulesBundle -> deps.skipNodeModulesBundle

Before:

export default defineConfig({
  external: ['vue'],
  noExternal: ['lodash'],
})

After:

export default defineConfig({
  deps: {
    neverBundle: ['vue'],
    alwaysBundle: ['lodash'],
  },
})

The old options still work but are deprecated and will emit warnings.

failOnWarn default changed from 'ci-only' to false

If you relied on the previous behavior where warnings would fail the build in CI environments, you now need to explicitly set failOnWarn: true or failOnWarn: 'ci-only' in your config.

Node.js < 22.18.0 deprecated

tsdown now emits a deprecation warning when running on Node.js versions below 22.18.0. Plan to upgrade your Node.js version accordingly.

New Features

Experimental Node.js SEA executable bundling (exe)

tsdown can now bundle your TypeScript project into a standalone executable using Node.js Single Executable Applications (SEA). A new @tsdown/exe package provides cross-platform executable building support. See the exe documentation for details.

export default defineConfig({
  exe: true, // or { useCodeCache: true, useSnapshot: true }
})

Full CSS pipeline as Rolldown plugin

CSS handling has been reimplemented as a native Rolldown plugin, providing a complete CSS pipeline with Lightning CSS integration for transforms, minification, and bundling. See the CSS documentation for details.

inlinedDependencies field in package.json

When using the exports feature, tsdown now auto-generates an inlinedDependencies field in your package.json, listing dependencies that are bundled into the output.

Object option for customExports

customExports now supports an object format for more fine-grained control over the generated exports field.

Migration Guide

  1. Update dependency options: Rename external -> deps.neverBundle, noExternal -> deps.alwaysBundle, etc.
  2. Check failOnWarn: If you need warnings to fail the build in CI, explicitly set failOnWarn: 'ci-only' or failOnWarn: true.
  3. Upgrade Node.js: Ensure you're running Node.js >= 22.18.0 to avoid deprecation warnings.

Links


   🚀 Features

  • Upgrade rolldown  -  by @sxzz (7a528)
  • Deprecate Node.js versions below 22.18.0  -  by @sxzz (439f1)
  • css: Implement full CSS pipeline as Rolldown plugin  -  by @sxzz in #787 (dbe3c)
  • exe: Add cross-platform executable building via @tsdown/exe  -  by @sxzz in #786 (b6833)
  • exports: Add inlinedDependencies field to package.json  -  by @sxzz in #785 (5c71f)

   🐞 Bug Fixes

  • Don't fail on PLUGIN_TIMINGS warnings when failOnWarn is enabled  -  by @sxzz (9872a)
  • hooks: Set cwd for onSuccess  -  by @sxzz (c114a)
  • watch: Re-glob entry files on create/delete events  -  by @sxzz (a1969)
    View changes on GitHub

v0.21.0-beta.2

26 Feb 08:36
v0.21.0-beta.2
6d24405

Choose a tag to compare

v0.21.0-beta.2 Pre-release
Pre-release

   🚨 Breaking Changes

  • Change failOnWarn default from 'ci-only' to false  -  by @sxzz (ad8db)
    View changes on GitHub

v0.21.0-beta.1

26 Feb 05:55
v0.21.0-beta.1
6c30541

Choose a tag to compare

v0.21.0-beta.1 Pre-release
Pre-release

   🚀 Features

  • Rename dependency options to deps namespace  -  by @sxzz (7f509)
  • exe: Add experimental Node.js SEA executable bundling  -  by @sxzz in #777 (418d5)
  • exports: Support object option for customExports  -  by @Joery-M and @sxzz in #769 (7fb72)
  • migrate: Migrate external/noExternal to deps namespace  -  by @sxzz (c59e7)

   🐞 Bug Fixes

  • Apply failOnWarn to rolldown logs  -  by @sxzz (149dc)
  • Debounce onSuccess in watch mode to prevent duplicate execution  -  by @sxzz (af748)
  • config: Handle known Node.js bug in nativeImport error handling  -  by @sxzz (e4230)
  • copy: Don't warn if no files specified  -  by @adamlohner, @cursoragent and @sxzz in #780 (afaab)
  • exe: Use runtime semver check for ESM SEA default format  -  by @sxzz (5321c)
  • exports: Include non-entry chunks in exports when all is true  -  by @sxzz (79492)
  • node-protocol: Respect alias and tsconfig paths when stripping node: prefix  -  by @lazuee in #773 (b1dd2)
    View changes on GitHub

v0.20.3

05 Feb 07:07
v0.20.3
49cc5f9

Choose a tag to compare

   🐞 Bug Fixes

  • package: Ignore scripts when packing  -  by @sxzz (0b10b)
    View changes on GitHub

v0.20.2

04 Feb 21:02
v0.20.2
5e76c52

Choose a tag to compare

   🚀 Features

   🐞 Bug Fixes

    View changes on GitHub

v0.20.1

22 Jan 20:13
v0.20.1
dbd985f

Choose a tag to compare

   🚀 Features

  • inline-only: Show warnings if bundled deps  -  by @sxzz (1e0e7)
    View changes on GitHub

v0.20.0

22 Jan 15:40
v0.20.0
16402c0

Choose a tag to compare

   🚨 Breaking Changes

  • Upgrade dts plugin, remove dts.resolve option  -  by @sxzz (16655)

   🚀 Features

  • Add option to disable legacy CJS warning  -  by @sxzz (9fada)
  • Apply inlineOnly option for dts files  -  by @sxzz (7d89d)
  • Upgrade rolldown to 1.0.0-beta.60  -  by @sxzz (bb3ee)
  • Upgrade rolldown to rc 1  -  by @sxzz (1959f)
  • entry: Support mixed array and object entries  -  by @sxzz (a8083)

   🐞 Bug Fixes

   🏎 Performance

    View changes on GitHub