Skip to content

Commit be9d25a

Browse files
sttkphated
authored andcommitted
Fix: Allow gulpfiles specified by .gulp.* to register a loader (fixes #181)
1 parent 9a8a136 commit be9d25a

File tree

4 files changed

+49
-7
lines changed

4 files changed

+49
-7
lines changed

index.js

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,23 +85,29 @@ cli.on('respawn', function(flags, child) {
8585
log.info('Respawned to PID:', pid);
8686
});
8787

88+
8889
function run() {
89-
cli.launch({
90+
cli.prepare({
9091
cwd: opts.cwd,
9192
configPath: opts.gulpfile,
9293
require: opts.require,
9394
completion: opts.completion,
94-
}, handleArguments);
95+
}, function(env) {
96+
97+
var cfgLoadOrder = ['home', 'cwd'];
98+
var cfg = loadConfigFiles(env.configFiles['.gulp'], cfgLoadOrder);
99+
opts = mergeConfigToCliFlags(opts, cfg);
100+
env = mergeConfigToEnvFlags(env, cfg);
101+
env.configProps = cfg;
102+
103+
cli.execute(env, handleArguments);
104+
});
95105
}
96106

97107
module.exports = run;
98108

99109
// The actual logic
100110
function handleArguments(env) {
101-
var cfgLoadOrder = ['home', 'cwd'];
102-
var cfg = loadConfigFiles(env.configFiles['.gulp'], cfgLoadOrder);
103-
opts = mergeConfigToCliFlags(opts, cfg);
104-
env = mergeConfigToEnvFlags(env, cfg);
105111

106112
// This translates the --continue flag in gulp
107113
// To the settle env variable for undertaker
@@ -178,5 +184,6 @@ function handleArguments(env) {
178184
}
179185

180186
// Load and execute the CLI version
181-
require(path.join(__dirname, '/lib/versioned/', range, '/'))(opts, env, cfg);
187+
var versionedDir = path.join(__dirname, '/lib/versioned/', range, '/');
188+
require(versionedDir)(opts, env, env.configProps);
182189
}

test/config-flags-gulpfile.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ var path = require('path');
66
var fixturesDir = path.join(__dirname, 'fixtures/config');
77

88
var headLines = require('gulp-test-tools').headLines;
9+
var eraseTime = require('gulp-test-tools').eraseTime;
910
var runner = require('gulp-test-tools').gulpRunner().basedir(fixturesDir);
1011

1112
describe('config: flags.gulpfile', function() {
@@ -88,5 +89,25 @@ describe('config: flags.gulpfile', function() {
8889
}
8990
});
9091

92+
it('Should autoload a module for loading a specified gulpfile', function(done) {
93+
this.timeout(0);
94+
95+
runner
96+
.chdir('flags/gulpfile/autoload')
97+
.gulp('dist')
98+
.run(cb);
99+
100+
function cb(err, stdout, stderr) {
101+
expect(err).toEqual(null);
102+
expect(stderr).toEqual('');
103+
expect(eraseTime(stdout)).toEqual(
104+
'Requiring external module babel-register\n' +
105+
'clean!\n' +
106+
'build!\n' +
107+
'');
108+
done(err);
109+
}
110+
});
111+
91112
});
92113

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"flags": {
3+
"silent": true,
4+
"gulpfile": "other_folder/gulpfile-exports.babel.js"
5+
}
6+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
'use strict';
2+
3+
import gulp from 'gulp';
4+
5+
export function clean(done) { console.log('clean!'); done(); };
6+
export function build(done) { console.log('build!'); done(); };
7+
export const string = 'no function';
8+
export const dist = gulp.series(clean, build);

0 commit comments

Comments
 (0)