¿Es posible importar módulos de todos los archivos de un directorio utilizando un comodín?

Resuelto 000 asked hace 9 años • 14 respuestas

Con ES6, puedo importar varias exportaciones desde un archivo como este:

import {ThingA, ThingB, ThingC} from 'lib/things';

Sin embargo, me gusta la organización de tener un módulo por archivo. Termino con importaciones como esta:

import ThingA from 'lib/things/ThingA';
import ThingB from 'lib/things/ThingB';
import ThingC from 'lib/things/ThingC';

Me encantaría poder hacer esto:

import {ThingA, ThingB, ThingC} from 'lib/things/*';

o algo similar, con la convención entendida de que cada archivo contiene una exportación predeterminada y cada módulo tiene el mismo nombre que su archivo.

es posible?

000 avatar Apr 19 '15 03:04 000
Aceptado

No creo que esto sea posible, pero afaik la resolución de los nombres de los módulos depende de los cargadores de módulos, por lo que podría haber una implementación del cargador que admita esto.

Hasta entonces, podrías usar un "archivo de módulo" intermedio lib/things/index.jsque solo contenga

export * from 'ThingA';
export * from 'ThingB';
export * from 'ThingC';

y te permitiría hacer

import {ThingA, ThingB, ThingC} from 'lib/things';
Bergi avatar Apr 18 '2015 20:04 Bergi

Solo una variación del tema ya proporcionado en la respuesta, pero ¿qué tal esto?

En un Thing,

export default function ThingA () {}

En things/index.js,

export {default as ThingA} from './ThingA'
export {default as ThingB} from './ThingB'
export {default as ThingC} from './ThingC'

Luego consumir todas las cosas en otros lugares,

import * as things from './things'
things.ThingA()

O consumir sólo algunas de las cosas,

import {ThingA,ThingB} from './things'
Jed Richards avatar Jul 14 '2015 09:07 Jed Richards