|
1 | 1 | var gulp = require('gulp'); |
2 | 2 | var gulpPlugins = require('gulp-load-plugins')(); |
3 | 3 | var runSequence = require('run-sequence'); |
| 4 | +var madge = require('madge'); |
4 | 5 | var merge = require('merge'); |
5 | 6 | var gulpTraceur = require('./tools/transpiler/gulp-traceur'); |
6 | 7 |
|
@@ -465,6 +466,25 @@ gulp.task('build/format.dart', rundartpackage(gulp, gulpPlugins, { |
465 | 466 | args: CONFIG.formatDart.args |
466 | 467 | })); |
467 | 468 |
|
| 469 | +// ------------ |
| 470 | +// check circular dependencies in Node.js context |
| 471 | +gulp.task('build/checkCircularDependencies', function (done) { |
| 472 | + var dependencyObject = madge(CONFIG.dest.js.dev.es6, { |
| 473 | + format: 'es6', |
| 474 | + paths: [CONFIG.dest.js.dev.es6], |
| 475 | + extensions: ['.js', '.es6'], |
| 476 | + onParseFile: function(data) { |
| 477 | + data.src = data.src.replace(/import \* as/g, "//import * as"); |
| 478 | + } |
| 479 | + }); |
| 480 | + var circularDependencies = dependencyObject.circular().getArray(); |
| 481 | + if (circularDependencies.length > 0) { |
| 482 | + console.log(circularDependencies); |
| 483 | + process.exit(1); |
| 484 | + } |
| 485 | + done(); |
| 486 | +}); |
| 487 | + |
468 | 488 | // ------------------ |
469 | 489 | // web servers |
470 | 490 | gulp.task('serve.js.dev', jsserve(gulp, gulpPlugins, { |
@@ -642,6 +662,7 @@ gulp.task('build.dart', function(done) { |
642 | 662 | gulp.task('build.js.dev', function(done) { |
643 | 663 | runSequence( |
644 | 664 | ['build/transpile.js.dev', 'build/html.js.dev', 'build/copy.js.dev', 'build/multicopy.js.dev.es6'], |
| 665 | + 'build/checkCircularDependencies', |
645 | 666 | done |
646 | 667 | ); |
647 | 668 | }); |
|
0 commit comments