Skip to content

Commit 37d36e9

Browse files
chore(build): remove use of q.denodeify
This change also makes webpack properly reject promise on build errors
1 parent 0898bca commit 37d36e9

2 files changed

Lines changed: 36 additions & 6 deletions

File tree

gulpfile.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -690,12 +690,11 @@ gulp.task('build.payload.js', ['build.js'], function(done) {
690690
});
691691

692692
gulp.task('!build.payload.js.webpack', function() {
693-
var q = require('q');
694-
var webpack = q.denodeify(require('webpack'));
693+
var webpack = require('./tools/build/webpack/promiseify');
695694

696695
var ES5_PROD_ROOT = __dirname + '/' + CONFIG.dest.js.prod.es5;
697696

698-
return q.all(PAYLOAD_TESTS_CONFIG.ts.cases.map(function(caseName) {
697+
return Promise.all(PAYLOAD_TESTS_CONFIG.ts.cases.map(function(caseName) {
699698
var CASE_PATH = PAYLOAD_TESTS_CONFIG.ts.dist(caseName, 'webpack');
700699

701700
return webpack({
@@ -1253,8 +1252,7 @@ gulp.task('!bundles.js.docs', ['clean'], function() {
12531252
});
12541253

12551254
gulp.task('!bundles.js.umd', ['build.js.dev'], function() {
1256-
var q = require('q');
1257-
var webpack = q.denodeify(require('webpack'));
1255+
var webpack = require('./tools/build/webpack/promiseify');
12581256

12591257
function resolveOptions(devOrProd) {
12601258
return {
@@ -1310,7 +1308,7 @@ gulp.task('!bundles.js.umd', ['build.js.dev'], function() {
13101308
};
13111309
}
13121310

1313-
return q.all([
1311+
return Promise.all([
13141312
webpack(webPackConf([__dirname + '/tools/build/webpack/angular2-all.umd.js'], 'angular2-all',
13151313
'dev')),
13161314
webpack(webPackConf([__dirname + '/tools/build/webpack/angular2-all.umd.js'], 'angular2-all',

tools/build/webpack/promiseify.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
var webpack = require('webpack');
2+
3+
/**
4+
* Wraps the original `webpack` function to convert execution
5+
* result to a promise and properly report errors.
6+
*
7+
* @param options
8+
* @returns {Function}
9+
*/
10+
function webPackPromiseify(options) {
11+
12+
return new Promise(function (resolve, reject) {
13+
14+
webpack(options, function(err, stats) {
15+
var jsonStats = stats.toJson() || {};
16+
var statsErrors = jsonStats.errors || [];
17+
18+
if (err) {
19+
return reject(err);
20+
}
21+
22+
if (statsErrors.length) {
23+
return reject(statsErrors);
24+
}
25+
26+
return resolve(stats);
27+
});
28+
29+
});
30+
}
31+
32+
module.exports = webPackPromiseify;

0 commit comments

Comments
 (0)