2016-08-25 79 views
0

我的gulp文件的一部分没有做任何事情,我没有得到任何错误,但所需的文件没有显示(或正在被修改)。没有创建文件的Gulp

完整的gulpFile在下面;并且虽然gulp任务'vendor'做它应该做的事情(在'build'dir中创建文件)... gulp任务'js'和'build'不会在'build'中创建预期的'app.js' DIR。

由于“JS”和“构建”使用“事件流”和功能getTemplateStream(),我怀疑这个问题是存在的

确认;如果我删除这些元素,这个工程:

gulp.task('x', function() { 
    gulp.src(source.js.src) 
     .pipe(concat('app.js')) 
     .pipe(gulp.dest('build')) 
}); 

我似乎无法CONSOLE.LOG()或得到一个错误 - 让我无所适从 任何帮助 - 非常感谢

/* 
    GULP BUILD SYSTEM 
    -Will watch and compress files, as needed, restart server on change in dev mode 
    -Will create a single "vendor.js" uglified file for any JS files specified in the "app.scripts.json" file 
    -will move condensed files to "build" 
*/ 
var es = require('event-stream'); 
var gulp = require('gulp'); 
var concat = require('gulp-concat'); 
var connect = require('gulp-connect'); 
var templateCache = require('gulp-angular-templatecache'); 
var ngAnnotate = require('gulp-ng-annotate'); 
var uglify = require('gulp-uglify'); 
var gutil = require('gulp-util'); 
var fs = require('fs'); 
var _ = require('lodash'); 

var scripts = require('./app.scripts.json'); // for vendor.js 
var source = { 
    js: { 
     main: 'app/main.js', 
     src: [ 'app.config.js', 
       'app/main.js', 
       'app/app.js', 
       'app/**/module.js', 
       'app/**/!(module)*.js' ], 
     tpl: 'app/**/*.tpl.html' 
    } 
}; 

var destinations = { 
    js: 'build' 
}; 



// FUNCTIONS 
var swallowError = function(error) { 

    console.error.bind(error.toString()); 
    this.emit('end'); 

}; 

var getTemplateStream = function() { 

    return 
    gulp.src(source.js.tpl) 
     .pipe(templateCache({ 
      root: 'app/', 
      module: 'app' 
     })) 

}; 


// GULP TASKS 
gulp.task('build', function() { 
    return 
    es.merge(gulp.src(source.js.src) , getTemplateStream()) 
     .pipe(ngAnnotate()) 
     .pipe(uglify()) 
     .pipe(concat('app.js')) 
     .on('error', swallowError) 
     .pipe(gulp.dest(destinations.js)); 
}); 


gulp.task('js', function() { 
    return 
    es.merge(gulp.src(source.js.src) , getTemplateStream()) 
     .pipe(concat('app.js')) 
     .on('error', swallowError) 
     .pipe(gulp.dest(destinations.js)); 

}); 


gulp.task('vendor', function() { 

    _.forIn(scripts.chunks, function(chunkScripts, chunkName) { 

     var paths = []; 

     chunkScripts.forEach(function(script) { 

      var scriptFileName = scripts.paths[script]; 

      if (!fs.existsSync(__dirname + '/' + scriptFileName)) { 

       throw console.error('Required path doesn\'t exist: ' + __dirname + '/' + scriptFileName, script); 

      } 

      paths.push(scriptFileName); 
      //console.log('vendor file ' + scriptFileName + ' added to vendor.js.'); 

     }); 

     gulp.src(paths) 
      .pipe(concat(chunkName + '.js')) 
      .on('error', swallowError) 
      .pipe(gulp.dest(destinations.js)) 

    }); 

}); 


gulp.task('watch', function() { 

    gulp.watch(source.js.src, ['js']); 
    gulp.watch(source.js.tpl, ['js']); 

}); 


gulp.task('connect', function() { 

    connect.server({ 
     port: 8888 
    }); 

}); 

gulp.task('prod', ['vendor', 'build']); 
gulp.task('dev', ['vendor', 'js', 'watch', 'connect']); 
gulp.task('default', ['dev']); 
// END GULP TASKS 
+0

可能的重复[什么是JavaScript的自动分号插入(ASI)的规则?](http://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-插入-ASI) –

回答

0

斯文(以非常被动的方式)指出了答案。

的问题是JavaScript的自动插入分号......,与return语句的典型例子:(发现约1/2下来简称页)

return 
    "something"; 
// is transformed to 
return; 
    "something"; 

所以做出这些调整 - 固定我的问题。

斯文,我不同意这是一个重复的问题,虽然答案是一样的。我不知道如何“寻找”原始帖子。你可以简单地指示我作为回答。

请注意,发帖人,寻找答案的人并不总是有深度或广度,这就是我们为什么要问的原因。