Skip to content

Modernize JavaScript build toolchain - #220

Merged
tagliala merged 1 commit into
mainfrom
chore/modernize
Jul 5, 2026
Merged

Modernize JavaScript build toolchain#220
tagliala merged 1 commit into
mainfrom
chore/modernize

Conversation

@tagliala

@tagliala tagliala commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Replace Rollup with Rolldown v1 for bundling (10-30x faster builds). The new config lives in rolldown.config.mjs and the build script is updated accordingly.

Replace ESLint + neostandard with Oxlint v1 for linting (50-100x faster). The new config lives in .oxlintrc.json and is run via pnpm lint. Use args: none on no-unused-vars to skip unused function parameters, which serve as API documentation for callback signatures. Rename .github/workflows/eslint.yml to lint.yml accordingly.

These choices are informed by ongoing upstream discussions about how best to align the neostandard and Rollup ecosystems with modern JavaScript tooling (neostandard/neostandard#350, rollup/plugins#2010).

Drop Babel — transpilation is now handled by Rolldowns built-in Oxc transforms. The minimum browser targets are unchanged (Chrome 60+, Firefox 60+, iOS 12+, Safari 12+).

Remove 9 unused npm devDependencies (@babel/core, @babel/preset-env, @rollup/plugin-babel, @rollup/plugin-node-resolve, eslint, eslint-plugin-compat, neostandard, rollup, rollup-plugin-copy).

Clean up .gitignore (remove stale !.babelrc negation) and update Rakefile lint task to call the new pnpm lint script instead of pnpm eslint.

Drop CSV < 25 compatibility and bump gem version to 19.0.0.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR modernizes the project’s JavaScript toolchain by migrating bundling from Rollup to Rolldown and linting from ESLint/neostandard to Oxlint, while also bumping the gem and dependency compatibility to align with client_side_validations v25 and dropping CSV < 25 compatibility.

Changes:

  • Replace Rollup + Babel pipeline with Rolldown v1 and update generated dist/vendor bundles.
  • Replace ESLint/neostandard with Oxlint and update CI + Rake tasks to run the new linter.
  • Bump gem/package versions to 19.0.0 and update Ruby/Gemfile appraisal matrix for CSV 25.

Reviewed changes

Copilot reviewed 15 out of 22 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
vendor/assets/javascripts/rails.validations.simple_form.js Regenerated vendored UMD bundle with Rolldown output and updated version banner.
vendor/assets/javascripts/rails.validations.simple_form.bootstrap4.js Regenerated vendored Bootstrap 4+ UMD bundle with Rolldown output and updated version banner.
rollup.config.mjs Removed Rollup configuration as bundling migrates to Rolldown.
rolldown.config.mjs Added Rolldown config, including banner normalization and vendor copy steps.
Rakefile Updated JS lint task to call pnpm lint instead of the removed pnpm eslint.
package.json Switched build to Rolldown, introduced Oxlint script, and removed Rollup/Babel/ESLint-related dev deps; bumped version + peer dependency.
lib/client_side_validations/simple_form/version.rb Bumped gem version to 19.0.0.
gemfiles/csv_25.0.gemfile Updated appraisal Gemfile to target client_side_validations ~> 25.0.
eslint.config.mjs Removed ESLint configuration as linting migrates to Oxlint.
dist/simple-form.js Regenerated dist UMD bundle via Rolldown with updated version banner.
dist/simple-form.esm.js Regenerated dist ESM bundle via Rolldown with updated version banner.
dist/simple-form.bootstrap4.js Regenerated dist Bootstrap 4+ UMD bundle via Rolldown with updated version banner.
dist/simple-form.bootstrap4.esm.js Regenerated dist Bootstrap 4 ESM bundle (note: banner text needs correction).
client_side_validations-simple_form.gemspec Bumped runtime dependency to client_side_validations >= 25.0.
CHANGELOG.md Added 19.0.0 entry documenting breaking changes and toolchain migration.
Appraisals Updated appraisal definition from CSV 24 to CSV 25.
.oxlintrc.json Added Oxlint configuration (including no-unused-vars args handling).
.gitignore Removed stale .babelrc negation after dropping Babel.
.github/workflows/ruby.yml Updated CI matrix to run against CSV 25 appraisal.
.github/workflows/lint.yml Updated workflow naming/job and switched to pnpm lint.
.github/dependabot.yml Removed Babel dependency update grouping (Babel removed).
.babelrc Removed Babel config (Babel removed).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread rolldown.config.mjs
Replace Rollup with Rolldown v1 for bundling (10-30x faster builds).
The new config lives in rolldown.config.mjs and the build script is
updated accordingly.

Replace ESLint + neostandard with Oxlint v1 for linting (50-100x faster).
The new config lives in .oxlintrc.json and is run via `pnpm lint`.
Use `args: none` on no-unused-vars to skip unused function parameters,
which serve as API documentation for callback signatures.
Rename .github/workflows/eslint.yml to lint.yml accordingly.

These choices are informed by ongoing upstream discussions about how
best to align the neostandard and Rollup ecosystems with modern
JavaScript tooling (neostandard/neostandard#350, rollup/plugins#2010).

Drop Babel — transpilation is now handled by Rolldowns built-in Oxc
transforms. The minimum browser targets are unchanged (Chrome 60+,
Firefox 60+, iOS 12+, Safari 12+).

Remove 9 unused npm devDependencies (`@babel/core`, `@babel/preset-env`,
`@rollup/plugin-babel`, `@rollup/plugin-node-resolve`, `eslint`,
`eslint-plugin-compat`, `neostandard`, `rollup`, `rollup-plugin-copy`).

Clean up .gitignore (remove stale !.babelrc negation) and update
Rakefile lint task to call the new `pnpm lint` script instead of
`pnpm eslint`.

Drop CSV < 25 compatibility and bump gem version to 19.0.0.
@tagliala
tagliala requested a review from Copilot July 5, 2026 13:14
@tagliala
tagliala merged commit 432f692 into main Jul 5, 2026
16 checks passed
@tagliala
tagliala deleted the chore/modernize branch July 5, 2026 13:17

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 15 out of 22 changed files in this pull request and generated no new comments.

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