Skip to content

Commit ad18c27

Browse files
sttkphated
authored andcommitted
New: Support flags.nodeFlags config option
1 parent 1b80d67 commit ad18c27

File tree

8 files changed

+101
-1
lines changed

8 files changed

+101
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ Supported configurations properties:
109109
| flags.silent | Silence logging by default |
110110
| flags.series | Run tasks given on the CLI in series (the default is parallel) |
111111
| flags.require | An array of modules to require before running the gulpfile. Any relative paths will be resolved against the `--cwd` directory (if you don't want that behavior, use absolute paths) |
112+
| flags.nodeFlags | An array of flags used to forcibly respawn the process upon startup. For example, if you always want your gulpfiles to run in node's harmony mode, you can set `--harmony` here |
112113

113114
## Flags
114115

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ function run() {
9898
// Set up event listeners for logging again after configuring.
9999
toConsole(log, opts);
100100

101-
cli.execute(env, handleArguments);
101+
cli.execute(env, env.nodeFlags, handleArguments);
102102
});
103103
}
104104

lib/shared/config/env-flags.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ var toFrom = {
77
configPath: 'flags.gulpfile',
88
configBase: 'flags.gulpfile',
99
require: 'flags.require',
10+
nodeFlags: 'flags.nodeFlags',
1011
};
1112

1213
function mergeConfigToEnvFlags(env, config, cliOpts) {
@@ -33,6 +34,10 @@ function mergeConfigToEnvFlags(env, config, cliOpts) {
3334
return [].concat(envInfo.value, configInfo.value);
3435
}
3536

37+
if (envInfo.keyChain === 'nodeFlags') {
38+
return [].concat(configInfo.value || []);
39+
}
40+
3641
return configInfo.value;
3742
}
3843
}

test/config-flags-node-flags.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
'use strict';
2+
3+
var expect = require('expect');
4+
var path = require('path');
5+
6+
var fixturesDir = path.join(__dirname, 'fixtures/config');
7+
8+
var runner = require('gulp-test-tools').gulpRunner().basedir(fixturesDir);
9+
var headLines = require('gulp-test-tools').headLines;
10+
var eraseTime = require('gulp-test-tools').eraseTime;
11+
12+
describe('config: nodeFlags', function() {
13+
14+
it('Should respawn by a node flag: --lazy', function(done) {
15+
runner
16+
.chdir('flags/nodeFlags/string')
17+
.gulp()
18+
.run(cb);
19+
20+
function cb(err, stdout, stderr) {
21+
expect(err).toEqual(null);
22+
expect(stderr).toEqual('');
23+
24+
var line = eraseTime(headLines(stdout, 1));
25+
expect(line).toEqual('Node flags detected: --lazy');
26+
27+
line = eraseTime(headLines(stdout, 2, 1));
28+
expect(line).toMatch('Respawned to PID: ');
29+
done(err);
30+
}
31+
});
32+
33+
it('Should respawn by a node flag: --lazy --trace-deprecation', function(done) {
34+
runner
35+
.chdir('flags/nodeFlags/array')
36+
.gulp()
37+
.run(cb);
38+
39+
function cb(err, stdout, stderr) {
40+
expect(err).toEqual(null);
41+
expect(stderr).toEqual('');
42+
43+
var line = eraseTime(headLines(stdout, 1));
44+
expect(line).toEqual('Node flags detected: --lazy, --trace-deprecation');
45+
46+
line = eraseTime(headLines(stdout, 2, 1));
47+
expect(line).toMatch('Respawned to PID: ');
48+
done(err);
49+
}
50+
});
51+
52+
it('Should respawn with flags in config file and command line', function(done) {
53+
runner
54+
.chdir('flags/nodeFlags/string')
55+
.gulp('--harmony')
56+
.run(cb);
57+
58+
function cb(err, stdout, stderr) {
59+
expect(err).toEqual(null);
60+
expect(stderr).toEqual('');
61+
62+
var line = eraseTime(headLines(stdout, 1));
63+
expect(line).toEqual('Node flags detected: --lazy, --harmony');
64+
65+
line = eraseTime(headLines(stdout, 2, 1));
66+
expect(line).toMatch('Respawned to PID: ');
67+
done(err);
68+
}
69+
});
70+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"flags": {
3+
"nodeFlags": ["--lazy", "--trace-deprecation"]
4+
}
5+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
'use strict';
2+
3+
exports.default = function(done) {
4+
console.log('Default');
5+
done();
6+
};
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict';
2+
3+
module.exports = {
4+
flags: {
5+
nodeFlags: '--lazy',
6+
},
7+
};
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
'use strict';
2+
3+
exports.default = function(done) {
4+
console.log('Default');
5+
done();
6+
};

0 commit comments

Comments
 (0)