Skip to content

feat: Complete rewrite with modern tooling stack#1194

Merged
jaredpalmer merged 10 commits into
masterfrom
claude/tsdx-replacement-modern-tools-Tu9vf
Dec 29, 2025
Merged

feat: Complete rewrite with modern tooling stack#1194
jaredpalmer merged 10 commits into
masterfrom
claude/tsdx-replacement-modern-tools-Tu9vf

Conversation

@jaredpalmer
Copy link
Copy Markdown
Owner

Replace the entire tsdx toolchain with modern, high-performance tools:

New Tool Stack

  • Bundler: bunchee (Rollup + SWC) - zero-config npm package bundler
  • Testing: vitest - next-generation testing framework
  • Linting: oxlint - Rust-powered linter (50-100x faster than ESLint)
  • Formatting: oxfmt - Rust-powered formatter (35x faster than Prettier)
  • Package Manager: bun - native speed package management
  • Node: LTS only (20+)

CLI Changes

  • Simplified CLI using Commander.js
  • Commands: create, build, dev/watch, test, lint, format, typecheck, init
  • Modern interactive prompts with Enquirer
  • Streamlined project scaffolding

Template Updates

  • Updated basic and react templates with modern tooling
  • React template uses Vite for example app development
  • Vitest + Testing Library for React component testing
  • Modern ESM-first package.json exports configuration

Removed

  • Rollup direct configuration (now handled by bunchee)
  • Babel (replaced by SWC via bunchee)
  • Jest (replaced by vitest)
  • ESLint/Prettier (replaced by oxlint/oxfmt)
  • UMD/System module formats
  • Error extraction feature
  • Storybook template
  • Website documentation

Breaking Changes

  • Requires Node.js 20+ (LTS only)
  • Requires bun for package management
  • Jest config files need migration to vitest
  • ESLint config needs migration to oxlint

Note: GitHub Actions workflow updates require separate commit with workflow permissions

Replace the entire tsdx toolchain with modern, high-performance tools:

## New Tool Stack
- **Bundler**: bunchee (Rollup + SWC) - zero-config npm package bundler
- **Testing**: vitest - next-generation testing framework
- **Linting**: oxlint - Rust-powered linter (50-100x faster than ESLint)
- **Formatting**: oxfmt - Rust-powered formatter (35x faster than Prettier)
- **Package Manager**: bun - native speed package management
- **Node**: LTS only (20+)

## CLI Changes
- Simplified CLI using Commander.js
- Commands: create, build, dev/watch, test, lint, format, typecheck, init
- Modern interactive prompts with Enquirer
- Streamlined project scaffolding

## Template Updates
- Updated basic and react templates with modern tooling
- React template uses Vite for example app development
- Vitest + Testing Library for React component testing
- Modern ESM-first package.json exports configuration

## Removed
- Rollup direct configuration (now handled by bunchee)
- Babel (replaced by SWC via bunchee)
- Jest (replaced by vitest)
- ESLint/Prettier (replaced by oxlint/oxfmt)
- UMD/System module formats
- Error extraction feature
- Storybook template
- Website documentation

## Breaking Changes
- Requires Node.js 20+ (LTS only)
- Requires bun for package management
- Jest config files need migration to vitest
- ESLint config needs migration to oxlint

Note: GitHub Actions workflow updates require separate commit with workflow permissions
Contains the updated workflow configurations that require 'workflows' permission to apply.
Includes instructions for updating the main CI workflow and all template workflows.
@jaredpalmer
Copy link
Copy Markdown
Owner Author

@copilot read workflow.md and update/replace GitHub actions accordingly.

Copy link
Copy Markdown
Contributor

Copilot AI commented Dec 29, 2025

@jaredpalmer I've opened a new pull request, #1195, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot AI and others added 8 commits December 28, 2025 17:27
* Initial plan

* chore: Update GitHub Actions workflows to modern tooling stack

Co-authored-by: jaredpalmer <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: jaredpalmer <[email protected]>
bunchee automatically injects these variables for ESM modules,
so manual declarations cause a redeclaration error. Also removed
unused dependencies (chalk, tiny-glob).
Enquirer doesn't export Select/Input as named exports.
Use default import with type assertion instead.
The templates should use the tsdx abstraction layer (tsdx build,
tsdx test, tsdx lint, etc.) rather than calling the underlying
tools directly. This honors the original TSDX design philosophy
of providing a zero-config wrapper.

- Updated basic template to use tsdx commands
- Updated react template to use tsdx commands
- Removed direct tool dependencies (bunchee, vitest, oxlint)
- Added tsdx as the single dev dependency for tooling
Adds thorough end-to-end tests covering:

- CLI basics (help, version, all commands)
- Create command for both basic and react templates
- Init command with various scenarios
- Template structure validation
- Build, test, lint, format, typecheck command help
- Edge cases and error handling
- Integration tests for full workflow
- GitHub workflow validation
- Vitest configuration validation

Also increases test timeouts for e2e operations.
- Handle cases where author prompt fails in non-TTY environments
  by accepting either updated or template default values
- Fix lint tests to not assume oxlint is unavailable (it's installed
  in the main project's node_modules)
- Update assertions to be more flexible for CI environments
- Comprehensive README with all commands, configuration, and FAQ
- New MIGRATION.md guide for upgrading from v0.x to v1.0
- Updated CONTRIBUTING.md for modern bun-based workflow
- Updated issue templates for bug reports and feature requests
- Removed workflow.md (superseded by MIGRATION.md)
@jaredpalmer jaredpalmer merged commit e80fd5f into master Dec 29, 2025
6 checks passed
@jaredpalmer jaredpalmer deleted the claude/tsdx-replacement-modern-tools-Tu9vf branch December 29, 2025 02:10
@leerob
Copy link
Copy Markdown

leerob commented Dec 29, 2025

LFG 🚀

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.

4 participants