使用require将gulp任务拆分为多个文件会导致找不到任务

时间:2015-07-15 22:08:38

标签: javascript requirejs gulp

最近我们的项目对结构进行了一些改进,之后我们的gulpfile遇到了一些麻烦。

我已按照here的建议将我们的代码拆分成任务但由于某种原因,我仍然总是遇到 Task 'start' is not in your gulpfile

这只发生在其他人的机器上,但是我的机器,以及调试非常困难。

我还尝试使用require单独要求每个文件,但我仍然遇到了同样的错误。

可能导致此错误的原因以及在哪里可以开始调试?

Gulpfile

'use strict'

var gulp        = require('gulp'),
    $           = require('gulp-load-plugins')(),
    runSequence = require('run-sequence'),
    path        = require('path'),
    del         = require('del'),
    merge       = require('merge2')

var context = path.resolve(__dirname, 'agency/tasks')

require(path.resolve(context, 'build.js'))
require(path.resolve(context, 'clean.js'))
require(path.resolve(context, 'compile.js'))
require(path.resolve(context, 'file_path.js'))
require(path.resolve(context, 'inject.js'))
require(path.resolve(context, 'start.js'))
require(path.resolve(context, 'stream_factory.js'))
require(path.resolve(context, 'watch.js'))

// Previously tried 
// require('require-dir')('./agency/tasks') 

gulp.task('default', ['start']);

gulp.task('build:common:clean', function() {
  return del('commonBuild', {force: true})
})

gulp.task('build:common', ['build:common:clean'], function() {
  var buildJade = gulp.src('common/**/*.jade')
    .pipe($.jade({pretty: true}))
    .pipe($.ngHtml2js({
      declareModule: false,
      moduleName: 'edvisor.common'
    }))

  var buildModules =  gulp.src(['common/**/*.js', '!common/index.js'])
    .pipe($.babel({externalHelpers: true}))
    .pipe($.angularFilesort())

  var buildIndex = gulp.src('common/index.js')
    .pipe($.babel({externalHelpers: true}))

  return merge(merge(buildModules, buildIndex), buildJade)
    .pipe($.concat('index.js'))
    .pipe(gulp.dest('commonBuild'))
})

1 个答案:

答案 0 :(得分:0)

我的一位同事最终解决了这个问题。原因是我们在node_modules文件夹中有一个agency文件夹。这导致了我在agency/node_modules中使用gulp的情况,因此当require-dir完成时,它将没有这些文件中的任务。