Skip to content

Refactor/tsdown#7531

Open
bdbch wants to merge 7 commits intomainfrom
refactor/tsdown
Open

Refactor/tsdown#7531
bdbch wants to merge 7 commits intomainfrom
refactor/tsdown

Conversation

@bdbch
Copy link
Member

@bdbch bdbch commented Feb 19, 2026

Changes Overview

Migrated all packages in packages/ and packages-deprecated/ from tsup to tsdown as the build tool. Updated all package.json files to reflect the new output file extensions (.mjs / .d.mts for ESM) produced by tsdown.

Implementation Approach

  • Replaced tsup.config.ts with tsdown.config.ts in all 72 packages, updating the defineConfig import from tsup to tsdown
  • Updated the build script in every package.json from tsup to tsdown
  • Updated all ESM-related file path references in package.json (exports, module, types fields) from .js.mjs and .d.ts.d.mts to match tsdown's output format
  • CJS paths (.cjs, .d.cts) were unchanged as tsdown produces the same extensions for those
  • Fixed a pre-existing bug in @tiptap/pm where ./schema-basic, ./schema-list, and ./trailing-node export type paths were pointing at non-existent dist/schema/ and dist/trailing/ directories — corrected to their actual output paths

Testing Done

  • Built all packages and verified dist output matches the paths declared in each package.json
  • Ran an automated audit across all 72 packages confirming: no missing dist files, no leftover tsup.config.ts files, no old-style .js/.d.ts paths remaining in any package.json

Verification Steps

  1. Run pnpm build from the repo root to build all packages
  2. Verify each package's dist/ contains .mjs, .cjs, .d.mts, and .d.cts files
  3. Confirm no tsup.config.ts files remain: find packages -name "tsup.config.ts" should return nothing
  4. Run the existing test suite: pnpm test

Additional Notes

tsup has entered maintenance mode and is no longer actively developed. tsdown is its spiritual successor, built by the same author (Anthony Fu), with active development and better ESM/CJS dual-output support. The migration is largely mechanical — the config API is nearly identical — making this a low-risk change.

Checklist

  • I have created a changeset for this PR if necessary.
  • My changes do not break the library.
  • I have added tests where applicable.
  • I have followed the project guidelines.
  • I have fixed any lint issues.

Related Issues

Copilot AI review requested due to automatic review settings February 19, 2026 18:49
@netlify
Copy link

netlify bot commented Feb 19, 2026

Deploy Preview for tiptap-embed ready!

Name Link
🔨 Latest commit 73d8eca
🔍 Latest deploy log https://app.netlify.com/projects/tiptap-embed/deploys/6998e3c4ab36a00007558321
😎 Deploy Preview https://deploy-preview-7531--tiptap-embed.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@changeset-bot
Copy link

changeset-bot bot commented Feb 19, 2026

⚠️ No Changeset found

Latest commit: 73d8eca

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request performs a comprehensive migration of all 72 packages in the Tiptap monorepo from tsup to tsdown as the build tool. The motivation is that tsup has entered maintenance mode, while tsdown is its actively developed successor by the same author (Anthony Fu). The migration is largely mechanical with minimal API changes.

Changes:

  • Replaced tsup.config.ts with tsdown.config.ts across all packages, updating imports from 'tsup' to 'tsdown'
  • Updated all package.json files to change build scripts from "tsup" to "tsdown" and update ESM file extensions from .js/.d.ts to .mjs/.d.mts
  • Fixed pre-existing bugs in @tiptap/pm package where schema-basic, schema-list, and trailing-node exports pointed to non-existent directories

Reviewed changes

Copilot reviewed 200 out of 201 changed files in this pull request and generated no comments.

Show a summary per file
File Description
package.json (root) Updated devDependency from tsup to tsdown
packages/*/tsdown.config.ts Created new tsdown configs replacing tsup configs, with identical structure except import statement
packages/*/tsup.config.ts Deleted old tsup config files
packages/*/package.json Updated build scripts to use tsdown and changed ESM exports/module/types paths to use .mjs/.d.mts extensions
packages/pm/package.json Fixed incorrect export paths for schema-basic, schema-list, and trailing-node submodules
packages-deprecated/*/tsdown.config.ts Migrated deprecated packages following same pattern as main packages
packages-deprecated/*/package.json Updated build scripts and file extensions for deprecated packages
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (1)

packages/vue-3/tsdown.config.ts:11

  • There's an inconsistency in the tsdown configuration across packages. Packages with simple object configs include target: false in their tsdown.config.ts files, but packages that use the .map() pattern (vue-2, vue-3, react, static-renderer, extension-table, extension-text-style, extension-list, extensions, core) do not include this property.

For consistency and to ensure uniform build behavior across all packages, either all configs should include target: false or none should. Please verify whether this is intentional or if the .map()-based configs should also include target: false in their returned objects.

- Added type annotation for UserConfig in tsdown config
- Ensured @floating-ui is marked as external in both vue-2 and vue-3 configurations
- Enhance type safety by specifying UserConfig type
- Change external dependencies pattern to allow all non-relative imports
- Ensure consistency across tsdown configurations
@pkg-pr-new
Copy link

pkg-pr-new bot commented Feb 20, 2026

Open in StackBlitz

@tiptap/extension-character-count

npm i https://pkg.pr.new/@tiptap/extension-character-count@7531

@tiptap/extension-dropcursor

npm i https://pkg.pr.new/@tiptap/extension-dropcursor@7531

@tiptap/extension-gapcursor

npm i https://pkg.pr.new/@tiptap/extension-gapcursor@7531

@tiptap/extension-focus

npm i https://pkg.pr.new/@tiptap/extension-focus@7531

@tiptap/extension-list-keymap

npm i https://pkg.pr.new/@tiptap/extension-list-keymap@7531

@tiptap/extension-list-item

npm i https://pkg.pr.new/@tiptap/extension-list-item@7531

@tiptap/extension-history

npm i https://pkg.pr.new/@tiptap/extension-history@7531

@tiptap/extension-placeholder

npm i https://pkg.pr.new/@tiptap/extension-placeholder@7531

@tiptap/extension-table-cell

npm i https://pkg.pr.new/@tiptap/extension-table-cell@7531

@tiptap/extension-table-header

npm i https://pkg.pr.new/@tiptap/extension-table-header@7531

@tiptap/extension-table-row

npm i https://pkg.pr.new/@tiptap/extension-table-row@7531

@tiptap/extension-task-item

npm i https://pkg.pr.new/@tiptap/extension-task-item@7531

@tiptap/extension-task-list

npm i https://pkg.pr.new/@tiptap/extension-task-list@7531

@tiptap/core

npm i https://pkg.pr.new/@tiptap/core@7531

@tiptap/extension-audio

npm i https://pkg.pr.new/@tiptap/extension-audio@7531

@tiptap/extension-bold

npm i https://pkg.pr.new/@tiptap/extension-bold@7531

@tiptap/extension-bubble-menu

npm i https://pkg.pr.new/@tiptap/extension-bubble-menu@7531

@tiptap/extension-bullet-list

npm i https://pkg.pr.new/@tiptap/extension-bullet-list@7531

@tiptap/extension-code

npm i https://pkg.pr.new/@tiptap/extension-code@7531

@tiptap/extension-code-block

npm i https://pkg.pr.new/@tiptap/extension-code-block@7531

@tiptap/extension-code-block-lowlight

npm i https://pkg.pr.new/@tiptap/extension-code-block-lowlight@7531

@tiptap/extension-collaboration

npm i https://pkg.pr.new/@tiptap/extension-collaboration@7531

@tiptap/extension-collaboration-caret

npm i https://pkg.pr.new/@tiptap/extension-collaboration-caret@7531

@tiptap/extension-color

npm i https://pkg.pr.new/@tiptap/extension-color@7531

@tiptap/extension-document

npm i https://pkg.pr.new/@tiptap/extension-document@7531

@tiptap/extension-drag-handle

npm i https://pkg.pr.new/@tiptap/extension-drag-handle@7531

@tiptap/extension-details

npm i https://pkg.pr.new/@tiptap/extension-details@7531

@tiptap/extension-drag-handle-vue-2

npm i https://pkg.pr.new/@tiptap/extension-drag-handle-vue-2@7531

@tiptap/extension-drag-handle-react

npm i https://pkg.pr.new/@tiptap/extension-drag-handle-react@7531

@tiptap/extension-drag-handle-vue-3

npm i https://pkg.pr.new/@tiptap/extension-drag-handle-vue-3@7531

@tiptap/extension-file-handler

npm i https://pkg.pr.new/@tiptap/extension-file-handler@7531

@tiptap/extension-emoji

npm i https://pkg.pr.new/@tiptap/extension-emoji@7531

@tiptap/extension-floating-menu

npm i https://pkg.pr.new/@tiptap/extension-floating-menu@7531

@tiptap/extension-font-family

npm i https://pkg.pr.new/@tiptap/extension-font-family@7531

@tiptap/extension-hard-break

npm i https://pkg.pr.new/@tiptap/extension-hard-break@7531

@tiptap/extension-horizontal-rule

npm i https://pkg.pr.new/@tiptap/extension-horizontal-rule@7531

@tiptap/extension-highlight

npm i https://pkg.pr.new/@tiptap/extension-highlight@7531

@tiptap/extension-heading

npm i https://pkg.pr.new/@tiptap/extension-heading@7531

@tiptap/extension-image

npm i https://pkg.pr.new/@tiptap/extension-image@7531

@tiptap/extension-invisible-characters

npm i https://pkg.pr.new/@tiptap/extension-invisible-characters@7531

@tiptap/extension-italic

npm i https://pkg.pr.new/@tiptap/extension-italic@7531

@tiptap/extension-link

npm i https://pkg.pr.new/@tiptap/extension-link@7531

@tiptap/extension-list

npm i https://pkg.pr.new/@tiptap/extension-list@7531

@tiptap/extension-mathematics

npm i https://pkg.pr.new/@tiptap/extension-mathematics@7531

@tiptap/extension-mention

npm i https://pkg.pr.new/@tiptap/extension-mention@7531

@tiptap/extension-node-range

npm i https://pkg.pr.new/@tiptap/extension-node-range@7531

@tiptap/extension-ordered-list

npm i https://pkg.pr.new/@tiptap/extension-ordered-list@7531

@tiptap/extension-strike

npm i https://pkg.pr.new/@tiptap/extension-strike@7531

@tiptap/extension-paragraph

npm i https://pkg.pr.new/@tiptap/extension-paragraph@7531

@tiptap/extension-subscript

npm i https://pkg.pr.new/@tiptap/extension-subscript@7531

@tiptap/extension-superscript

npm i https://pkg.pr.new/@tiptap/extension-superscript@7531

@tiptap/extension-table

npm i https://pkg.pr.new/@tiptap/extension-table@7531

@tiptap/extension-text

npm i https://pkg.pr.new/@tiptap/extension-text@7531

@tiptap/extension-text-align

npm i https://pkg.pr.new/@tiptap/extension-text-align@7531

@tiptap/extension-table-of-contents

npm i https://pkg.pr.new/@tiptap/extension-table-of-contents@7531

@tiptap/extension-twitch

npm i https://pkg.pr.new/@tiptap/extension-twitch@7531

@tiptap/extension-text-style

npm i https://pkg.pr.new/@tiptap/extension-text-style@7531

@tiptap/extension-typography

npm i https://pkg.pr.new/@tiptap/extension-typography@7531

@tiptap/extension-unique-id

npm i https://pkg.pr.new/@tiptap/extension-unique-id@7531

@tiptap/extension-underline

npm i https://pkg.pr.new/@tiptap/extension-underline@7531

@tiptap/extension-youtube

npm i https://pkg.pr.new/@tiptap/extension-youtube@7531

@tiptap/extensions

npm i https://pkg.pr.new/@tiptap/extensions@7531

@tiptap/html

npm i https://pkg.pr.new/@tiptap/html@7531

@tiptap/markdown

npm i https://pkg.pr.new/@tiptap/markdown@7531

@tiptap/react

npm i https://pkg.pr.new/@tiptap/react@7531

@tiptap/pm

npm i https://pkg.pr.new/@tiptap/pm@7531

@tiptap/starter-kit

npm i https://pkg.pr.new/@tiptap/starter-kit@7531

@tiptap/static-renderer

npm i https://pkg.pr.new/@tiptap/static-renderer@7531

@tiptap/suggestion

npm i https://pkg.pr.new/@tiptap/suggestion@7531

@tiptap/vue-2

npm i https://pkg.pr.new/@tiptap/vue-2@7531

@tiptap/vue-3

npm i https://pkg.pr.new/@tiptap/vue-3@7531

@tiptap/extension-blockquote

npm i https://pkg.pr.new/@tiptap/extension-blockquote@7531

commit: 73d8eca

@bdbch bdbch changed the base branch from develop to main March 14, 2026 15:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants