在后期制作中与Visual Studio的运行结果不一致

我正在运行gulp 3.9.0并从Visual Studio 2013中调用一些gulp命令。stream程是这样的,每当我在VS中生成,gulp应该清理我的临时文件和输出文件,然后在成功构build之后,将我的javascript资源编译为一个文件。

问题是,我注意到,在运行“gulp build”之后,有时我的资产根本不会生成。 这甚至发生在命令行上。 运行“gulp clean”(删除输出)之后,我必须运行“gulp build”两次,才能看到输出的具体化。 就好像吞了一口气一样。 不知道这是否是在Windows上运行的节点的问题,或者如果我错误地configuration了某些东西。

请注意,VS负责将所有TypeScript文件编译到\ output文件夹中的单个.js文件中。

先进的道歉,如果有更好的办法做我想做的事情。 仍然是一个吞咽/节点的新手。

VS预build:

gulp clean 

VS后生成:

 gulp build 

gulpfile.js:

 var gulp = require('gulp'); var del = require('del'); var concat = require('gulp-concat'); var ngAnnotate = require('gulp-ng-annotate'); var uglify = require('gulp-uglify'); var templateCache = require('gulp-angular-templatecache'); var concatCss = require('gulp-concat-css'); var minifyCss = require('gulp-minify-css'); gulp.task("cleanOutdatedLibraries", function(){ del("./Libs/*"); del(['./myapp.js', './myapp.min.js', './myapp.css']) }); gulp.task("cleanTemporaryFiles", function(){ del("./output/*"); }); /** Run gulp clean on prebuild */ gulp.task('clean', ["cleanOutdatedLibraries", "cleanTemporaryFiles"]) gulp.task('copyNewestLibraries', function(){ var bowerFiles = ['angular/angular.min.js', 'angular/angular.js', 'angular/angular.min.js.map', 'angular-ui-router/release/angular-ui-router.min.js', 'angular-local-storage/dist/angular-local-storage.min.js', 'jquery/dist/jquery.min.js', 'jquery/dist/jquery.min.map', 'lodash/lodash.min.js', 'angular-resource/angular-resource.min.js', 'angular-resource/angular-resource.min.js.map', 'momentjs/min/moment.min.js', 'angular-loading-bar/src/loading-bar.js', 'ngDialog/js/ngDialog.min.js']; gulp.src(bowerFiles, {cwd: "./bower_components/"}) .pipe(gulp.dest('./Libs')); }); gulp.task('copyThirdPartyLibraries', function(){ var thirdPartyFiles = ['jquery-ui.min.js', 'angular-sanitize.min.js']; gulp.src(thirdPartyFiles, {cwd: "./_thirdparty/"}) .pipe(gulp.dest('./Libs')); }); /** Merge all Angular JS HTML templates into a cache */ gulp.task('mergeHtmlTemplatesIntoAngularCache', function(){ gulp.src('app/**/*.html') .pipe(templateCache("templates.js", { module: "myapp" })) .pipe(gulp.dest('./output/')); }); gulp.task('produceMinfiedApp', function(){ gulp.src(['app/**/*.js', 'output/typescripts.js']) .pipe(concat('bundle.min.js')) .pipe(ngAnnotate()) .pipe(uglify()) .pipe(gulp.dest('./output/')); gulp.src(['output/bundle.min.js', 'output/templates.js']) .pipe(concat('myapp.min.js')) .pipe(gulp.dest('./')); }); gulp.task('produceApp', function(){ gulp.src(['app/**/*.js', 'output/typescripts.js']) .pipe(concat('bundle.js')) .pipe(ngAnnotate()) .pipe(gulp.dest('./output/')); gulp.src(['output/bundle.js', 'output/templates.js']) .pipe(concat('myapp.js')) .pipe(gulp.dest('./')); }); gulp.task('mergeStyles', function(){ gulp.src(['Styles/**/*.css']) .pipe(concat('styles.css')) .pipe(gulp.dest("./output/")); gulp.src(['app/**/*.css']) .pipe(concat('app.css')) .pipe(gulp.dest("./output/")); gulp.src(['output/styles.css', 'output/app.css']) .pipe(concatCss("./myapp.css")) .pipe(minifyCss({compatibility: 'ie10'})) .pipe(gulp.dest('./')); }); /** Run gulp build on post build */ gulp.task('build', ["copyNewestLibraries", "copyThirdPartyLibraries", "mergeHtmlTemplatesIntoAngularCache", "produceMinfiedApp", "produceApp", "mergeStyles"]); 

 /** Run gulp build on post build */ gulp.task('build', ["copyNewestLibraries", "copyThirdPartyLibraries", "mergeHtmlTemplatesIntoAngularCache", "produceMinfiedApp", "produceApp", "mergeStyles"]); 

这些任务( copyNewestLibrariesproduceApp等)asynchronous运行,顺序不特别。 例如produceApp可能会在copyNewestLibraries之前copyNewestLibraries ,这可能不是你想要的。

请参阅如何依次运行Gulp任务以获取更多信息。