Is it possible to import modules from all files in a directory, using a wildcard? Is it possible to import modules from all files in a directory, using a wildcard? javascript javascript

Is it possible to import modules from all files in a directory, using a wildcard?


I don't think this is possible, but afaik the resolution of module names is up to module loaders so there might a loader implementation that does support this.

Until then, you could use an intermediate "module file" at lib/things/index.js that just contains

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

and it would allow you to do

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


Just a variation on the theme already provided in the answer, but how about this:

In a Thing,

export default function ThingA () {}

In things/index.js,

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

Then to consume all the things elsewhere,

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

Or to consume just some of things,

import {ThingA,ThingB} from './things'


The current answers suggest a workaround but it's bugged me why this doesn't exist, so I've created a babel plugin which does this.

Install it using:

npm i --save-dev babel-plugin-wildcard

then add it to your .babelrc with:

{    "plugins": ["wildcard"]}

see the repo for detailed install info


This allows you to do this:

import * as Things from './lib/things';// Do whatever you want with these :DThings.ThingA;Things.ThingB;Things.ThingC;

again, the repo contains further information on what exactly it does, but doing it this way avoids creating index.js files and also happens at compile-time to avoid doing readdirs at runtime.

Also with a newer version you can do exactly like your example:

 import { ThingsA, ThingsB, ThingsC } from './lib/things/*';

works the same as the above.