loadr v0.1.1
Features
- Extremely lightweight
- Easily chain multiple ESM Loaders together†
- Interleave additional
--requirehooks at the same time - Command spawns as a
ChildProcess, forwarding the currentprocess.envcontext
† The ESM Loader API is still experimental and will change in the future.
Install
$ npm install --save-dev loadrExample
Before
$ node --require dotenv/config \
--experimental-loader ts-node/esm \
--experimental-loader ./tests/loader.mjs \
server/index.mjsAfter
$ loadr -- node server/index.mjs// loadr.mjs
export const loaders = [
'ts-node/esm',
'./tests/loader.mjs',
]
export const registers = [
'dotenv/config',
]Usage
# Run `npm test` using the `loadr.mjs` configuration file
$ loadr -- npm test
# Run `npm test` using custom `loadr.custom.js` file
$ loadr -c loadr.custom.js -- npm test
# Run `node server.mjs` w/o system bell
$ loadr -q -- node server.mjsCLI
The loadr binary expects the following usage:
$ loadr [options] -- <command>Important: The
--is required! It separates yourcommandfrom yourloadrarguments.
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.
// loadr.mjs
export const loaders = [
"ts-node/esm", // third-party module
"./tests/loader.mjs", // local file
];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.
// loadr.mjs
export const requires = [
"esm", // third-party module
"dotenv/register", // third-party module
"./tests/setup.js", // local file
];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
-qor--quietCLI argument takes precedence over the configuation file.
// loader.mjs
export const quiet = true;License
MIT © Luke Edwards