Skip to content

Commit 7e7837b

Browse files
committed
Faster gulp compile tasks
1 parent f5f5eb6 commit 7e7837b

2 files changed

Lines changed: 31 additions & 8 deletions

File tree

build/gulpfile.extensions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ var extensionsPath = path.join(path.dirname(__dirname), 'extensions');
2424

2525
var compilations = glob.sync('**/tsconfig.json', {
2626
cwd: extensionsPath,
27-
ignore: '**/out/**'
27+
ignore: ['**/out/**', '**/node_modules/**']
2828
});
2929

3030
var languages = ['chs', 'cht', 'jpn', 'kor', 'deu', 'fra', 'esn', 'rus', 'ita'];

gulpfile.js

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,31 @@ var tsOptions = {
4141
sourceRoot: util.toFileUri(rootDir)
4242
};
4343

44+
function createFastFilter(filterFn) {
45+
var result = es.through(function(data) {
46+
if (filterFn(data)) {
47+
this.emit('data', data);
48+
} else {
49+
result.restore.push(data);
50+
}
51+
});
52+
result.restore = es.through();
53+
return result;
54+
}
55+
4456
function createCompile(build, emitError) {
4557
var opts = _.clone(tsOptions);
4658
opts.inlineSources = !!build;
59+
opts.noFilesystemLookup = true;
4760

4861
var ts = tsb.create(opts, null, null, quiet ? null : function (err) {
4962
reporter(err.toString());
5063
});
5164

5265
return function (token) {
53-
var utf8Filter = filter('**/test/**/*utf8*', { restore: true });
54-
var tsFilter = filter(['**/*.ts'], { restore: true });
55-
var noDeclarationsFilter = filter(['**/*', '!**/*.d.ts'], { restore: true });
66+
var utf8Filter = createFastFilter(function(data) { return /(\/|\\)test(\/|\\).*utf8/.test(data.path); });
67+
var tsFilter = createFastFilter(function(data) { return /\.ts$/.test(data.path); });
68+
var noDeclarationsFilter = createFastFilter(function(data) { return !(/\.d\.ts$/.test(data.path)); });
5669

5770
var input = es.through();
5871
var output = input
@@ -81,7 +94,10 @@ function compileTask(out, build) {
8194
var compile = createCompile(build, true);
8295

8396
return function () {
84-
var src = gulp.src('src/**', { base: 'src' });
97+
var src = es.merge(
98+
gulp.src('src/**', { base: 'src' }),
99+
gulp.src('node_modules/typescript/lib/lib.d.ts')
100+
);
85101

86102
return src
87103
.pipe(compile())
@@ -94,7 +110,10 @@ function watchTask(out, build) {
94110
var compile = createCompile(build);
95111

96112
return function () {
97-
var src = gulp.src('src/**', { base: 'src' });
113+
var src = es.merge(
114+
gulp.src('src/**', { base: 'src' }),
115+
gulp.src('node_modules/typescript/lib/lib.d.ts')
116+
);
98117
var watchSrc = watch('src/**', { base: 'src' });
99118

100119
return watchSrc
@@ -138,6 +157,8 @@ function monacodtsTask(out, isWatch) {
138157
}
139158
};
140159

160+
var resultStream;
161+
141162
if (isWatch) {
142163

143164
var filesToWatchMap = {};
@@ -149,7 +170,7 @@ function monacodtsTask(out, isWatch) {
149170
runSoon(5000);
150171
}));
151172

152-
return es.through(function(data) {
173+
resultStream = es.through(function(data) {
153174
var filePath = path.normalize(data.path);
154175
if (filesToWatchMap[filePath]) {
155176
runSoon(5000);
@@ -159,12 +180,14 @@ function monacodtsTask(out, isWatch) {
159180

160181
} else {
161182

162-
return es.through(null, function(end) {
183+
resultStream = es.through(null, function(end) {
163184
runNow();
164185
this.emit('end');
165186
});
166187

167188
}
189+
190+
return resultStream;
168191
}
169192

170193
// Fast compile for development time

0 commit comments

Comments
 (0)