@momsfriendlydevco/repl
v2.1.2
Published
MFDC REPL CLI
Downloads
9
Readme
MFDC-REPL
MFDC's own internal REPL command line interface.
This project provides the executable mrepl
which has the following functionality over regular REPL:
- Babel pre-compiler (
babel
plugin) - All code is automatically compiled via BabelJS before it is run - making things like arrow functions available on older Node releases - Lodash (
lodash
plugin) - lodash is provided aslodash
,l
and__
- Moment (
moment
plugin) - moment is provided asmoment
- Mongoose project support (
mongoose
plugin) - If the files./config/index.js
,./config/db.js
and./models/index.js
are found they are loaded in that order (with./models/index.js
expected to return an object containing the available compiled schemas. Models are then provided in thedb
object. e.g.db.users.find()
will return all users. - STDIN slurping (
stdin
plugin) - Any piped input into the program is provied as theinput
variable. Automatic decoding of the variable will be attempted byJSON.parse()
otherwise it will be a raw string. - History saving - History saing is enabled by default
Installation
Simply run the following:
sudo npm install -g @momsfriendlydevco/repl
You should now be able to run the REPL interface with:
mrepl
Plugins
Plugins are provided in the plugins/
folder within the main script file.
Each plugin is a simple JavaScript file which is expected to expose a function taking a callback and the main app
argument. Each plugin can decorate the properties of the program and return the callback when finished.
Some usefully exposed properties:
| Property path | Type | Default | Description |
|----------------------|---------|-----------------|-----------------------------------------------------------------------|
| app
| Object | Complex | The main application object - an instance of a commander
definition |
| app.verbose
| Number | 0 | Verbosity level |
| app.plugin
| Array | ['./plugins']
| Globs to search for plugins |
| app.repl
| Object | Complex | Repl options when creating the interface |
| app.repl.globals
| Object | {}
| Any exported globals that should be available inside the REPL session |
| app.repl.eval
| Array | []
| Array of evaluation functions to run. Each Eval is run as a compose pipeline with the final output being returned to the REPL session |
| inspect.depth
| Number | 2 | How deeply to examine objects when printing results to the console |
| inspect.colors
| Boolean | true
| Whether colors are enabled when printing results to the console |