add option --no-startup to not run command on startup

This commit is contained in:
Chris Khoo
2015-07-05 15:40:36 -07:00
parent 01bc4d0ba1
commit db196733b7
7 changed files with 37 additions and 9 deletions

View File

@@ -10,6 +10,7 @@
-q, --quiet .............. minimise nodemon messages to start/stop only.
-V, --verbose ............ show detail on what is causing restarts.
-I, --no-stdin ........... don't try to read from stdin.
-S, --no-startup ......... disable running script on startup.
-d, --delay n ............ debounce restart for "n" seconds.
-L, --legacy-watch ....... Forces node to use the most compatible version
for watching file changes.

View File

@@ -191,6 +191,10 @@ function nodemonOption(options, arg, eatNext) {
options.stdin = false;
}
else if (arg === '--no-startup' || arg === '-S') {
options.runOnStartup = false;
}
else if (arg === '--ext' || arg === '-e') {
options.ext = eatNext();
}

View File

@@ -11,10 +11,11 @@ module.exports = {
ignore: ['.git', 'node_modules', 'bower_components', '.sass-cache'],
watch: ['*.*'],
stdin: true,
runOnStartup: true,
verbose: false,
// 'stdout' refers to the default behaviour of a required nodemon's child,
// but also includes stderr. If this is false, data is still dispatched via
// nodemon.on('stdout/stderr')
stdout: true
};
};

View File

@@ -24,7 +24,10 @@ exec('ps', function(error) {
function run(options) {
var cmd = config.command.raw;
utils.log.status('starting `' + config.command.string + '`');
var runCmd = config.lastStarted !== 0 || options.runOnStartup;
if (runCmd) {
utils.log.status('starting `' + config.command.string + '`');
}
/*jshint validthis:true*/
restart = run.bind(this, options);
@@ -54,8 +57,7 @@ function run(options) {
executable = executable.replace(/\\((\w+\s+)+\w+)(?=([\\\.]))(?=([^"]*"[^"]*")*[^"]*$)/g, '\\"$1"');
}
var args = utils.stringify(executable, cmd.args);
var args = runCmd ? utils.stringify(executable, cmd.args) : ':';
var spawnArgs = [sh, [shFlag, args]];
if (utils.version.major === 0 && utils.version.minor < 8) {
@@ -139,7 +141,7 @@ function run(options) {
// restart
restart();
} else if (code === 0) { // clean exit - wait until file change to restart
utils.log.status('clean exit - waiting for changes before restart');
if (runCmd) utils.log.status('clean exit - waiting for changes before restart');
child = null;
}
} else {

View File

@@ -237,7 +237,7 @@ describe('nodemon argument parser', function () {
});
it('should support short versions of flags', function () {
var settings = cli.parse('node nodemon -v -x java -I -V -q -w fixtures -i fixtures -d 5 -L -e jade');
var settings = cli.parse('node nodemon -v -x java -I -V -q -w fixtures -i fixtures -d 5 -L -S -e jade');
assert(settings.version, 'version');
assert(settings.verbose, 'verbose');
assert(settings.exec === 'java', 'exec');
@@ -247,12 +247,13 @@ describe('nodemon argument parser', function () {
assert(settings.ignore[0] === 'fixtures', 'ignore');
assert(settings.delay === 5000, 'delay 5 seconds');
assert(settings.legacyWatch, 'legacy watch method');
assert(settings.runOnStartup === false, 'run on startup');
assert(settings.ext === 'jade', 'extension is jade');
});
it('should support long versions of flags', function () {
var settings = cli.parse('node nodemon --version --exec java --verbose --quiet --watch fixtures --ignore fixtures --no-stdin --delay 5 --legacy-watch --exitcrash --ext jade');
var settings = cli.parse('node nodemon --version --exec java --verbose --quiet --watch fixtures --ignore fixtures --no-stdin --delay 5 --legacy-watch --exitcrash --no-startup --ext jade');
assert(settings.version, 'version');
assert(settings.verbose, 'verbose');
assert(settings.exec === 'java', 'exec');
@@ -263,6 +264,7 @@ describe('nodemon argument parser', function () {
assert(settings.ignore[0] === 'fixtures', 'ignore');
assert(settings.delay === 5000, 'delay 5 seconds');
assert(settings.legacyWatch, 'legacy watch method');
assert(settings.runOnStartup === false, 'run on startup');
assert(settings.ext === 'jade', 'extension is jade');
});
});
@@ -335,4 +337,4 @@ describe('nodemon --delay argument', function () {
var settings = cli.parse('node nodemon --delay 1200ms');
assert(settings.delay === 1200, 'delay 1.2 seconds');
});
});
});

View File

@@ -1,2 +1,2 @@
--reporter spec
--ui bdd
--ui bdd

View File

@@ -106,6 +106,24 @@ describe('when nodemon runs (2)', function () {
});
});
it('should not run command if runOnStartup is false', function(done) {
fs.writeFileSync(tmp, 'console.log("testing 1 2 3")');
nodemon({
script: tmp,
runOnStartup: false,
stdout: false
}).on('stdout', function() {
assert(false, 'there should not be any stdout');
}).on('stderr', function() {
assert(false, 'there should not be any stderr');
}).on('crash', function () {
assert(false, 'detected crashed state');
}).once('exit', function () {
done();
});
});
// it('should kill child on SIGINT', function (done) {
// fs.writeFileSync(tmp, 'setTimeout(function () { var n = 10; }, 10000)');