Node.js remote code execution via inspect protocol
npm install node-remote-replExecute code remotelly via Node.js inspect protocol like Clojure nREPL. Primary usage for REPL driven development.
```
npm install -g node-remote-repl
You can always get help of cli:
``
node-remote-repl --help
Output:
`
Usage: node-remote-repl [options]
Options:
-V, --version output the version number
-h, --host
-p, --port
-h, --help display help for command
`
Ok, it's very easy, create for example repl.js and play with it
``
node-remote-repl --host some-host --port 9229 repl.js
Also TypeScript supported too
``
node-remote-repl --host some-host --port 9229 repl.ts
If you want to use fast TypeScript compiler
``
USE_SWC=1 node-remote-repl --host some-host --port 9229 repl.ts
For TypeScript support should be installed typescript or @swc/core (when USE_SWC=1) in your devDependencies
#### log to stdout of your remote process
`js`
console.log(/ some stuff /);
#### expose something from remote process
`js`
exports.$repl = async () => {
return 1 + 1;
};
#### expose some json from remote process
`js`
exports.$replJson = async () => {
return {obj: true};
};
#### use power of require
`js
const util = require('util');
const module = require('./some-module');
exports.$repl = async () => {
return util.inspect(module.method(), {colors: true});
};
`
#### typescript support out of the box
`ts`
exports.$repl = async () => {
const n: number = 1;
return n;
};
#### you can replace implementation on remote side
`js`
const Module = require('./some-module');
Module.prototype.method = () => {
// replace implementation on the fly
};
Because it simple command line util, you can easy integrate it with your IDE.
For example let's do it with Visual Studio Code and Code Runner extension:
* install Code Runner extension to Visual Studio Code
* configure Code Runner to run node-remote-repl in repl.js:
`json``
{
"code-runner.executorMapByGlob": {
"repl.js": "node-remote-repl --host some-host --port 9229"
}
}
* profit, now you can fastly run repl via Visual Studio Code
* I hope, some similar stuff exists on all popular IDE
* repl-ns -
Namespace for REPL driven development for TypeScript/JavaScript, inspired by Clojure namespaces