¿Es posible importar módulos de todos los archivos de un directorio utilizando un comodín?
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?
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.js
que solo contenga
export * from 'ThingA';
export * from 'ThingB';
export * from 'ThingC';
y te permitiría hacer
import {ThingA, ThingB, ThingC} from 'lib/things';
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'