Quickly attach multiple ESM Loaders and/or Require Hooks together
but without the repetitive `--experimental-loader` and/or `--require` Node flags
Features
- Extremely lightweight
- Easily chain multiple ESM Loaders together†
- Interleave additional
--require hooks at the same time
- Command spawns as a
ChildProcess, forwarding the current process.env context
† The ESM Loader API is still experimental and will change in the future.
Install
$ npm install --save-dev loadr
Example
Before
$ node --require dotenv/config \
--experimental-loader ts-node/esm \
--experimental-loader ./tests/loader.mjs \
server/index.mjs
After
$ loadr -- node server/index.mjs
export const loaders = [
'ts-node/esm',
'./tests/loader.mjs',
]
export const registers = [
'dotenv/config',
]
Usage
$ loadr -- npm test
$ loadr -c loadr.custom.js -- npm test
$ loadr -q -- node server.mjs
CLI
The loadr binary expects the following usage:
$ loadr [options] -- <command>
Important: The -- is required! It separates your command from your loadr arguments.
Please run loadr --help for additional information.
Configuration
Unless specified via the -c or --config CLI arguments, loadr looks for a loadr.mjs configuration file in the current working directory – aka process.cwd().
loaders
Type: string[]
A list of files and/or modules to be added as an --experimental-loader hook.
Important: Any relative file paths will be resolved from the current working directory.
export const loaders = [
"ts-node/esm",
"./tests/loader.mjs",
];
requires
Type: string[]
A list of files and/or modules to be added as a --require hook. Please note that ESM files cannot be loaded via a require() statement.
Important: Any relative file paths will be resolved from the current working directory.
export const requires = [
"esm",
"dotenv/register",
"./tests/setup.js",
];
quiet
Type: Boolean
Default: false
By default, loadr invokes the system bell when your command process terminates with a non-zero exit code.
Note: If defined, the -q or --quiet CLI argument takes precedence over the configuation file.
export const quiet = true;
License
MIT © Luke Edwards