/ archiveofbelonging.org / back / node_modules / flagged-respawn /

[ICO]NameLast modifiedSizeDescription
[PARENTDIR]Parent Directory  -  
[DIR]lib/2 years ago -  
[TXT]README.md6 years ago5.1Kf12eb36 documentaiton updates [كارل مبارك]
[   ]package.json2 years ago2.4K7375cab EXHIBTION: fix overflow ellipsis cutoff [كارل مبارك]
[   ]LICENSE6 years ago1.2K7375cab EXHIBTION: fix overflow ellipsis cutoff [كارل مبارك]
[   ]index.js6 years ago1.2K 
README.md

flagged-respawn

NPM version Downloads Travis Build Status AppVeyor Build Status Coveralls Status Gitter chat

A tool for respawning node binaries when special flags are present.

What is it?

Say you wrote a command line tool that runs arbitrary javascript (e.g. task runner, test framework, etc). For the sake of discussion, let's pretend it's a testing harness you've named testify.

Everything is going splendidly until one day you decide to test some code that relies on a feature behind a v8 flag in node (--harmony, for example). Without much thought, you run testify --harmony spec tests.js.

It doesn't work. After digging around for a bit, you realize this produces a process.argv of:

['node', '/usr/local/bin/test', '--harmony', 'spec', 'tests.js']

Crap. The --harmony flag is in the wrong place! It should be applied to the node command, not our binary. What we actually wanted was this:

['node', '--harmony', '/usr/local/bin/test', 'spec', 'tests.js']

Flagged-respawn fixes this problem and handles all the edge cases respawning creates, such as:

To see it in action, clone this repository and run npm install / npm run respawn / npm run nospawn.

Sample Usage

#!/usr/bin/env node

const flaggedRespawn = require('flagged-respawn');

// get a list of all possible v8 flags for the running version of node
const v8flags = require('v8flags').fetch();

flaggedRespawn(v8flags, process.argv, function (ready, child) {
  if (ready) {
    console.log('Running!');
    // your cli code here
  } else {
    console.log('Special flags found, respawning.');
  }
  if (process.pid !== child.pid) {
    console.log('Respawned to PID:', child.pid);
  }
});

API

flaggedRespawn(flags, argv, [ forcedFlags, ] callback) : Void

Respawns the script itself when argv has special flag contained in flags and/or forcedFlags is not empty. Because members of flags and forcedFlags are passed to node command, each of them needs to be a node flag or a V8 flag.

Forbid respawning

If --no-respawning flag is given in argv, this function does not respawned even if argv contains members of flags or forcedFlags is not empty. (This flag is also used internally to prevent from respawning more than once).

Parameter:

Parameter Type Description
flags Array An array of node flags and V8 flags which are available when present in argv.
argv Array Command line arguments to respawn.
forcedFlags Array or String An array of node flags or a string of a single flag and V8 flags for respawning forcely.
callback function A called function when not respawning or after respawned.

License

MIT

Apache/2.4.38 (Debian) Server at www.karls.computer Port 80