Expose `importMetaResolve(url, baseURL)` from `node:module`, and stabilize it
Personne n'a encore pris cette issue.
- Langage dominant
- JavaScript
- Étoiles
- 122k
- Forks
- 37.3k
- Merge moyen
- 4 j 2 h
- PR mergées (30 j)
- 283
Description
What is the problem this feature will solve?
In Node.js based tools it's common to need to "resolve url X as if it were imported from module Y".
Node.js does not expose this as an API, even though it implements it. It only exposes "resolve url X as if it were imported from this current module", through import.meta.resolve.
https://github.com/wooorm/import-meta-resolve is, for example, a library that is basically code copy&pasted from this repository and published on npm. The annoying part is that, as Node.js resolution rules change, libraries need to change too, and you need to basically check which version of Node.js you are on to know which rules to apply.
What is the feature you are proposing to solve the problem?
Node.js does have a solution to this: the version of import.meta.resolve that takes two arguments, gated behind a flag (--experimental-import-meta-resolve). The reason it's behind a flag is because it would be different from the import.meta.resolve implementation of browsers, that takes only one argument.
It'd be great if Node.js could expose the two-args version as an export of node:module, something like
import { resolveModuleURL } from "node:module"`;
resolveModuleURL(url, parent);
with resolveModuleURL(url, import.meta.url) being equivalent to import.meta.resolve(url).
What alternatives have you considered?
This is related to https://github.com/nodejs/node/pull/55756, which implements a more complex/comprehensive API.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par lire l’implémentation existante de import.meta.resolve dans Node.js et le comportement derrière --experimental-import-meta-resolve. Comparez l’export node:module proposé avec l’API plus complète du pull request #55756. Le travail est considéré comme terminé lorsque le résolveur à deux arguments est exposé en tant qu’API stable avec un comportement équivalent au cas d’utilisation demandé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, nodejs
- Domaine
- api, backend
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100