esm-directory-import
v1.0.2
Published
Import the files in a directory recursively using dynamic import(import.meta.url)
Downloads
14
Readme
esm-directory-import
Using the
import.meta.url
file URL to recursively and dynamicallyimport()
each of the files inside the directory of the specified URL. Thedefault
export for each file (module) is collected into a dictionary that sets the export into a directory delimited structure.
Directory structure example
- directory1
- index.js (file that calls `importDir(import.meta.url)`
- file1.js
- directory2
- file2.mjs
- file3.cjs
Returned object structure example
{
file1: (default export of file1.js),
directory2: {
file2: (default export of file2.mjs),
file3: (default export of file3.cjs),
}
}
Usage
import importDir from 'import-dir';
export const defaults = await importDir(import.meta.url);
// or
export const defaults = await importDir(import.meta.url, { exclude: ['directory2/file2.mjs'] });
Arguments
The default export function of esm-directory-import
accepts 2 arguments, the first is a file URL, typically the value of import.meta.url
from the ESM that invokes the function. The second argument is a dictionary of options outlined here:
exclude: string[] = []
An array of string file paths relative to the initial file URL that should be excluded from the returned object.glob: (pattern: string, options: GlobOptions) => Promise<string[]> = glob
A function that accepts a glob pattern as the first argument and an object that specifies{ cwd: dirname(fileUrlToPath(import.meta.url)) }
.extensions: string[] = ['.mjs', '.cjs', '.js']
An array of string file extensions that will be used in the glob pattern used for determining the files that should be imported.template: (exts: string[]) => string = (exts) => '**/*{${exts.join(',')}}'
A function that takes a list of file extensions that should be looked for and returns a glob file matching pattern.collector: (mod: Module) => any = (mod) => mod.default
A function that accepts the result ofawait import(file)
as an argument and returns the value that should be stored as the value of the file in the object structure.