Conversation
✅ Deploy Preview for tiptap-embed ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
There was a problem hiding this comment.
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.tswithtsdown.config.tsacross all packages, updating imports from'tsup'to'tsdown' - Updated all
package.jsonfiles to change build scripts from"tsup"to"tsdown"and update ESM file extensions from.js/.d.tsto.mjs/.d.mts - Fixed pre-existing bugs in
@tiptap/pmpackage whereschema-basic,schema-list, andtrailing-nodeexports 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: falsein 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
@tiptap/extension-character-count
@tiptap/extension-dropcursor
@tiptap/extension-gapcursor
@tiptap/extension-focus
@tiptap/extension-list-keymap
@tiptap/extension-list-item
@tiptap/extension-history
@tiptap/extension-placeholder
@tiptap/extension-table-cell
@tiptap/extension-table-header
@tiptap/extension-table-row
@tiptap/extension-task-item
@tiptap/extension-task-list
@tiptap/core
@tiptap/extension-audio
@tiptap/extension-bold
@tiptap/extension-bubble-menu
@tiptap/extension-bullet-list
@tiptap/extension-code
@tiptap/extension-code-block
@tiptap/extension-code-block-lowlight
@tiptap/extension-collaboration
@tiptap/extension-collaboration-caret
@tiptap/extension-color
@tiptap/extension-document
@tiptap/extension-drag-handle
@tiptap/extension-details
@tiptap/extension-drag-handle-vue-2
@tiptap/extension-drag-handle-react
@tiptap/extension-drag-handle-vue-3
@tiptap/extension-file-handler
@tiptap/extension-emoji
@tiptap/extension-floating-menu
@tiptap/extension-font-family
@tiptap/extension-hard-break
@tiptap/extension-horizontal-rule
@tiptap/extension-highlight
@tiptap/extension-heading
@tiptap/extension-image
@tiptap/extension-invisible-characters
@tiptap/extension-italic
@tiptap/extension-link
@tiptap/extension-list
@tiptap/extension-mathematics
@tiptap/extension-mention
@tiptap/extension-node-range
@tiptap/extension-ordered-list
@tiptap/extension-strike
@tiptap/extension-paragraph
@tiptap/extension-subscript
@tiptap/extension-superscript
@tiptap/extension-table
@tiptap/extension-text
@tiptap/extension-text-align
@tiptap/extension-table-of-contents
@tiptap/extension-twitch
@tiptap/extension-text-style
@tiptap/extension-typography
@tiptap/extension-unique-id
@tiptap/extension-underline
@tiptap/extension-youtube
@tiptap/extensions
@tiptap/html
@tiptap/markdown
@tiptap/react
@tiptap/pm
@tiptap/starter-kit
@tiptap/static-renderer
@tiptap/suggestion
@tiptap/vue-2
@tiptap/vue-3
@tiptap/extension-blockquote
commit: |
Changes Overview
Migrated all packages in
packages/andpackages-deprecated/fromtsuptotsdownas the build tool. Updated allpackage.jsonfiles to reflect the new output file extensions (.mjs/.d.mtsfor ESM) produced by tsdown.Implementation Approach
tsup.config.tswithtsdown.config.tsin all 72 packages, updating thedefineConfigimport fromtsuptotsdownbuildscript in everypackage.jsonfromtsuptotsdownpackage.json(exports,module,typesfields) from.js→.mjsand.d.ts→.d.mtsto match tsdown's output format.cjs,.d.cts) were unchanged as tsdown produces the same extensions for those@tiptap/pmwhere./schema-basic,./schema-list, and./trailing-nodeexport type paths were pointing at non-existentdist/schema/anddist/trailing/directories — corrected to their actual output pathsTesting Done
package.jsontsup.config.tsfiles, no old-style.js/.d.tspaths remaining in anypackage.jsonVerification Steps
pnpm buildfrom the repo root to build all packagesdist/contains.mjs,.cjs,.d.mts, and.d.ctsfilestsup.config.tsfiles remain:find packages -name "tsup.config.ts"should return nothingpnpm testAdditional Notes
tsuphas entered maintenance mode and is no longer actively developed.tsdownis 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
Related Issues