https://github.com/whaaaley/esbuild-plugin-glob-import
Use globs to import multiple files.
https://github.com/whaaaley/esbuild-plugin-glob-import
esbuild esbuild-plugin glob import
Last synced: 10 months ago
JSON representation
Use globs to import multiple files.
- Host: GitHub
- URL: https://github.com/whaaaley/esbuild-plugin-glob-import
- Owner: whaaaley
- License: mit
- Created: 2022-06-02T01:10:43.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-03-30T17:42:04.000Z (about 2 years ago)
- Last Synced: 2025-04-02T06:12:25.965Z (about 1 year ago)
- Topics: esbuild, esbuild-plugin, glob, import
- Language: JavaScript
- Homepage:
- Size: 82 KB
- Stars: 4
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# esbuild-plugin-glob-import
Use globs to import multiple files.
## Install
```sh
$ npm i esbuild-plugin-glob-import
```
## Setup
Add the plugin to your esbuild options.
```js
import esbuild from 'esbuild'
import globImport from 'esbuild-plugin-glob-import'
esbuild.build({
// ...
plugins: [
globImport()
]
})
```
## Options
+ `camelCase` - truthy or falsy - If truthy, this camel cases paths and filenames and removes file extensions.
+ `entryPoint` - string or falsy - Set which file in a directory is the entry point. If `entryPoint` is a string and matches a file, that module will be set on the key of the parent directory's name. If `entryPoint` is falsy all matching files will be imported and included in an object on keys of those file's names.
+ `entryPointMatch` - function or nullish - Determine which file in a directory is the entry point. This function is called for every file imported using a glob. It receives the filepath as an array. Return truthy if the path is an entry point and falsy if not.
## Example with default options
Options:
```js
const opts = {
camelCase: true,
entryPoint: 'index.js',
entryPointMatch: arr => arr[arr.length - 1] === opts.entryPoint
}
```
File structure:
```
/pages
/home
home.css
index.js
/about
/content
summary.js
history.js
about.css
index.js
/error
error.css
index.js
```
Glob import statement:
```js
import pages from './pages/**/index.js'
console.log(pages)
```
Output:
```js
{
home: function () {
// ...
},
about: function () {
// ...
},
error: function () {
// ...
}
}
```
## Alternative Example
Using the same file structure and import statement from the previous example but with different options.
Options:
```js
const opts = {
camelCase: false,
entryPoint: false,
entryPointMatch: null
}
```
Output:
```js
{
home: {
'index.js': function () {
// ...
}
},
about: {
'index.js': function () {
// ...
},
content {
'summary.js': function () {
// ...
},
'history.js': function () {
// ...
}
}
},
error: {
'index.js': function () {
// ...
}
}
}
```
## Prior Art
+ [esbuild](https://esbuild.github.io/)
+ [esbuild-plugin-import-glob](https://github.com/thomaschaaf/esbuild-plugin-import-glob)
+ [fast-glob](https://github.com/mrmlnc/fast-glob)