cucumber / cucumber-js

Cucumber for JavaScript
https://cucumber.io
MIT License
5.04k stars 1.09k forks source link

First-class support for module loaders #2364

Closed davidjgoss closed 5 months ago

davidjgoss commented 9 months ago

🤔 What's the problem you're trying to solve?

Use of ESM loaders without setting the --loader flag from outside the process, which is clunky at the best of times and now discouraged by Node.js in favour of using register() programatically.

✨ What's your proposed solution?

Add a loader option (with a --loader CLI counterpart) for specifying zero or more module loaders to register. Then, do this accordingly before doing any import() of support code. Kinda like requireModule.

This should be done for both serial and parallel runtime flavours.

⛏ Have you considered any alternatives or workarounds?

Leave it as it is and wait for things to be marked stable. This may happen anyway depending on how long it takes us to get to this.

📚 Any additional context?

register() is still marked as experimental so we need to tread carefully.

Relates back to the wider initiative to eventually transition to ESM only.


This text was originally generated from a template, then edited by hand. You can modify the template here.

paco-sparta commented 5 months ago

This is a bit overdue, with ESM being a 10yo technology that's the baseline of most of the industry. Is there any way to sponsor it?

davidjgoss commented 5 months ago

Thanks for the nudge @paco-sparta, you're right it's overdue. And I appreciate the offer to sponsor. We aren't currently set up to have individual pieces of work directly sponsored. But if you'd like to sponsor the project in general for any amount (including one-off), you can do so via GitHub Sponsors or OpenCollective. For clarity, I am going to ship this regardless and will aim to have it released pretty soon.

davidjgoss commented 5 months ago

Released in https://github.com/cucumber/cucumber-js/releases/tag/v10.6.0

paco-sparta commented 5 months ago

Yay!