npm tsdown 0.21.0-beta.3
v0.21.0-beta.3

latest releases: 0.21.0, 0.21.0-beta.5, 0.21.0-beta.4...
one day ago

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

Don't miss a new tsdown release

NewReleases is sending notifications on new releases.