Add async alternative to import.meta.resolve() with additional options
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- JavaScript
- Estrellas
- 122k
- Forks
- 37.3k
- Merge medio
- 4 d 2 h
- PR fusionados (30 d)
- 283
Descripción
What is the problem this feature will solve?
Tools often need to resolve imports of files they are analyzing, which requires a resolve API that import.meta.resolve() isn't suited for.
- The
resolve()call needs a referrer path, which is only available with a flag and is non standard - The tool might want to specify import conditions, which are non-standard
- The call should be async, so that file system access isn't blocking. This is especially important for online resolution in servers.
Node might be able to add non-standard options via a second argument, though I'm a bit dubious of this approach because it might preclude import.meta.resolve() from adding a standard second argument.
So currently, we have complex user land resolvers that try to emulate what Node does, like Rollup's.
What is the feature you are proposing to solve the problem?
I think node:module should provide a function to perform built-in resolution, given a referrer path and import conditions.
This API would be free from having to conform to the import.meta.resolve() standard. import.meta.resolve() would still exist for cross-platform needs of resolving from within the referrer only.
What alternatives have you considered?
No response
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza revisando el comportamiento existente de Node de import.meta.resolve() y la superficie de la API node:module descrita en el issue. Define un resolvedor integrado asíncrono que acepte una ruta de referente y condiciones de importación, manteniendo import.meta.resolve() para el uso multiplataforma estándar; se considera terminado cuando la API propuesta y sus implicaciones de compatibilidad estén resueltas.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, node.js
- Área
- api, backend
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100