node-nc
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published
.  .       .        ,-.                 .
|\ |       |       /                    |
| \| ,-. ,-| ,-.   |    ,-. ;-. ,-. ,-. | ,-.
|  | | | | | |-'   \    | | | | `-. | | | |-'
'  ' `-' `-' `-'    `-' `-' ' ' `-' `-' ' `-'

About

Greenkeeper badge

Have you missed a good repl while developing a Node.js project?
Use node-nc to easily configure your project's console (similar to rails c).
Just type node-nc in any of your project's folder.

Installation

$ npm install -g node-nc

Usage

$ node-nc # or nc
nc > reload(false) // reloads all global files without reload nc by default
nc > .reload false // same as above
nc > $module$ // the path that is required when using module
nc > module   // the module

It is intended to be used inside Node.js projects.
The nc command can also be invoked from a projects subfolder.
If used outside a project it will not globalize any file and will save history to ~/.nc_history (~/${config.historyFileName}).

nc

Details

This module extends Node.js basic repl functionality:

  • Makes all js files global
  • Makes all modules included in package.json global
  • Awaits promises (experimental).
  • Writes commands to a local history file.
  • Configurable behavior using env variables or a nc.js file.
  • Suggests params for functions and methods (experimental).

Configuration

const defaultConf = {
  useGlobal: false, // Repl useGlobal. If set to true all globals will be inside nc namespace.
  useAsync: false, // Experimental use of await in repl for node versions that don't support top level await.
  globalizeFiles: true, // Make all project files global.
  globalizeDependencies: true, // Globalize projects dependencies.
  useNcFile: true, // Use nc.js file if it exists.
  usePackageFile: true, // Use package file to determine prompt, root folter and dependencies.
  writeHistoryFile: true, // Write all commands to a file.
  historyFileName: '.nc_history', // The history filename. An absolute path can also be given.
  suggestParams: true // Experimental suggestion of params when calling a function
};

Configuration can be overwitten

  • by env variables:

    NC_USE_GLOBAL, NC_USE_ASYNC, NC_GLOBALIZE_FILES, NC_GLOBALIZE_DEPENDENCIES, NC_USE_NC_FILE, NC_USE_PACKAGE_FILE, NC_WRITE_HISTORY_FILE, NC_HISTORY_FILE_NAME, NC_SUGGEST_PARAMS or

  • by using an nc.js file. This file can also be used to make some project initializations Eg. connect to a database, declare some global vars etc. In nc.js a method setConfig(options) is available to overwrite the default configurations. Note that NC_USE_NC_FILE env variable must not be false.

    Example of a simple nc.js file:

      // overwrite useGlobal
      setConfig({ useGlobal:true });.
    
      // connect to db
      mongoose.connect(mongooseDb, options, function (err, data) {});

Using await

If you have a very complicated expression (many nested expresssions) it is better to split it in two:

// Bad
await Compicated-Epression

// Good
const promise = Complicated-expression
await promise;

This way await will work as expected.

Function Parameter Suggestions

When you type a parenthesis repl will try to figure out if the previous expression is a function and suggest its parameters.

Build in profiler

Test a function's performance using the buildin profiler. The function can return a promise.

node-nc> profiler(() => fib(10))
Function ()=> fib(10) ran 40,770 times in 995.99 ms

node-nc> await profiler(() => fib(20))
Function ()=> fib(20) ran 328 times in 942.71 ms

node-nc> await profiler(() => Promise.resolve(true), () => {})
Run function ()=> Promise.resolve(true) 171,784 times in 1020.95 ms
Run function ()=>{} 111,795,737 times in 1007.90 ms

Readme

Keywords

Package Sidebar

Install

npm i node-nc

Weekly Downloads

290

Version

1.0.0

License

MIT

Unpacked Size

49.4 kB

Total Files

39

Last publish

Collaborators

  • nikostoulas