Skip to content

Change Request: Remove rollup and migrate to ESM-only as part of the upcoming v1.0.0 (JSON/CSS) #196

@lumirlumir

Description

@lumirlumir

Environment

ESLint version: 9.39.2
@eslint/json version: 0.14.0
Node version: 20.19.6
npm version: 10.9.2
Operating System: Windows 11

What problem do you want to solve?

In this issue, I'd like to suggest two changes for the upcoming @eslint/json@1.0.0 and @eslint/css@1.0.0.

(I write this issue only in the JSON repository to avoid duplication. I can open a separate issue in the CSS repo if necessary.)

The two changes are as follows:

  1. Stop rolling up package. (Remove rollup).
  2. Migrate to ESM only.

Stop rolling up package. (Remove rollup).

First of all, we've gone through dropping rollup in the Markdown repository in issue eslint/markdown#374 and PR eslint/markdown#383.

This change needs to be considered a breaking change, as discussed in eslint/markdown#383 (comment), because it removes extraneous types that users might depend on.

However, this change also needs to be considered when migrating to an ESM-only package, since without rollup, CommonJS support may be tricky.

Migrate to ESM only

As discussed in issue eslint/eslint#19969 and in the ongoing conversation at eslint/eslint#20411 (review), it seems the reason for adopting the Node.js version range ^20.19.0 || ^22.13.0 || >=24 is to migrate to an ESM-only package to reduce maintenance complexity. (The exact reference would be: #130 (comment))

Migrating to ESM-only may not be a breaking change within the ^20.19.0 || ^22.13.0 || >=24 range. However, an ESM-only package makes it easier to stop using rollup for bundling, so I'd like to suggest this as part of the upcoming v1.0.0 changes for both the JSON and CSS plugins.

What do you think is the correct solution?

  1. Stop rolling up package. (Remove rollup).
  2. Migrate to ESM only.

Participation

  • I am willing to submit a pull request for this change.

Additional comments

No response

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Complete

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions