ispawn 
Spawn a process to inspect it.
Installation
npm install ispawn
API
createSpawn
Configures a process to be spawned but doesn't spawn it yet
Parameters
$0
Objects options (same as @seespawn
)
Returns Spawner that will spawn the configured process via spawner.spawn
spawn
Spawns a process with the given options allowing to intercept stdout
and stderr
output of the application itself or the underlying process,
i.e. V8 and Node.js messages.
onStdout and onStderr interceptors
The functions, onStdout
, onStderr
called with each line written to the
respective file descriptor have the following signature:
onStdout(line:String, fromApp:Boolean)
where fromApp
is true
when the
line came from the app itself and false
when it came from the underlying
runtime, i.e. Node.js or V8 when flags triggered diagnostics output.
To mark a line as handled return true
from the function and it will not
be printed to the console.
Example
function onStdout(line, fromApp) {
// Don't intercept app output, just have it printed as usual
if (fromApp) return false
// Do something with diagnositics messages here ...
return true
}
const { termination } = spawn({
execArgv: [ '--trace-turbo-inlining' ]
, argv: [ require.resolve('./bind.js') ]
, onStdout
})
try {
const code = await termination
console.log('The app returned with code', code)
} catch (err) {
console.error(err)
}
Parameters
$0
Object options$0.execArgv
Array<String>? arguments passed to Node.js/V8 directly (not to your app) (optional, default[]
)$0.argv
Array<String> file to run followed by flags to pass to your app$0.node
String? path to Node.js executable (optional, defaultprocess.execPath
)$0.spawnOpts
Object? options passed tochild_process.spawn
(optional, default{}
)$0.onStdout
Function? function to call with each line written to stdout (optional, defaultnull
)$0.onStderr
Function? function to call with each line written to stderr (optional, defaultnull
)
Returns Object with the following properties- termination: {Promise} that resolves when process exits
- proc: the spawned process
Kudos
Lots of the ideas and code were extracted from the 0x tool.
License
MIT