
Security News
Software Engineering Daily Podcast: Feross on AI, Open Source, and Supply Chain Risk
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.
import-all.macro.named
Advanced tools
A macro for babel-plugin-macros that allows you to import all files that match a glob
A babel-plugin-macro that allows you to import all files that match a glob
You want to import all files that match a glob without having to import them
individually.
This is a babel-plugin-macro which allows you to import files that
match a glob. It supports import statements for synchronous resolution as well
as dynamic import() for deferred resolution (for code splitting with react
router for example).
This module is distributed via npm which is bundled with node and
should be installed as one of your project's devDependencies:
npm install --save-dev import-all.macro
Once you've [configured babel-plugin-macros][https://github.com/kentcdodds/babel-plugin-macros/blob/master/other/docs/user.md] you can
import/require import-all.macro.
The importAll functions accept a glob and will transpile your code
to import statements/dynamic imports for each file that matches the given glob.
Let's imagine you have a directory called my-files with the files
a.js, b.js, c.js, and d.js.
Here are a few before/after examples:
importAll uses dynamic import: README:1 importAll uses dynamic import
import importAll from 'import-all.macro'
document.getElementById('load-stuff').addEventListener('click', () => {
importAll('./files/*.js').then(all => {
console.log(all)
})
})
↓ ↓ ↓ ↓ ↓ ↓
document.getElementById('load-stuff').addEventListener('click', () => {
Promise.all([
import('./files/a.js'),
import('./files/b.js'),
import('./files/c.js'),
import('./files/d.js'),
])
.then(function importAllHandler(importVals) {
return {
'./files/a.js': importVals[0],
'./files/b.js': importVals[1],
'./files/c.js': importVals[2],
'./files/d.js': importVals[3],
}
})
.then(all => {
console.log(all)
})
})
importAll.sync uses static imports: README:2 importAll.sync uses static imports
import importAll from 'import-all.macro'
const a = importAll.sync('./files/*.js')
↓ ↓ ↓ ↓ ↓ ↓
import * as _filesAJs from './files/a.js'
import * as _filesBJs from './files/b.js'
import * as _filesCJs from './files/c.js'
import * as _filesDJs from './files/d.js'
const a = {
'./files/a.js': _filesAJs,
'./files/b.js': _filesBJs,
'./files/c.js': _filesCJs,
'./files/d.js': _filesDJs,
}
importAll.deferred gives an object with dynamic imports: README:3 importAll.deferred gives an object with dynamic imports
import importAll from 'import-all.macro'
const routes = importAll.deferred('./files/*.js')
↓ ↓ ↓ ↓ ↓ ↓
const routes = {
'./files/a.js': function() {
return import('./files/a.js')
},
'./files/b.js': function() {
return import('./files/b.js')
},
'./files/c.js': function() {
return import('./files/c.js')
},
'./files/d.js': function() {
return import('./files/d.js')
},
}
Some static analysis tools (like ESLint, Flow, and Jest) wont like this very much
without a little additional work. So Jest's watch mode may not pick up all your
tests that are relevant based on changes and some ESLint plugins
(like eslint-plugin-import) will probably fail on this.
I'm not aware of any, if you are please make a pull request and add it here!
Thanks goes to these people (emoji key):
Kent C. Dodds 💻 📖 🚇 ⚠️ | Jonathan Neal 📖 | Rafał Ruciński 🐛 💻 |
|---|
This project follows the all-contributors specification. Contributions of any kind welcome!
MIT
FAQs
A macro for babel-plugin-macros that allows you to import all files that match a glob
We found that import-all.macro.named demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.

Security News
GitHub has revoked npm classic tokens for publishing; maintainers must migrate, but OpenJS warns OIDC trusted publishing still has risky gaps for critical projects.

Security News
Rust’s crates.io team is advancing an RFC to add a Security tab that surfaces RustSec vulnerability and unsoundness advisories directly on crate pages.