【问题标题】:Gulp Task does not include subfoldersGulp 任务不包含子文件夹
【发布时间】:2019-03-06 07:14:56
【问题描述】:

我正在尝试为 eslint 设置 Gulp 任务(系统:OS Windows 10)。但似乎没有正确评估 src:

gulp.task('lint-app-basic-an', function() {
    gulp.src('src/main/webapp/app-basic-an/**/*.js')
        .pipe(eslint({
            configFile: '.eslintrc.js'
        }))
        .pipe(eslint.format())
        .pipe(eslint.failAfterError());
});

src/main/webapp/app-basic-an 下有几个子文件夹,例如

src/main/webapp/app-basic-an/components/page-header/page-header.component.js

如果我在上述 JS 文件中创建了一个 lint 错误,它会被 linter 忽略。如果我在任务 .src-function 中指定路径 1 级别,例如

gulp.src('src/main/webapp/app-basic-an/components/**/*.js')

它突然起作用了,这对我来说毫无意义,我以为“**/”意味着零个或多个子目录?

【问题讨论】:

  • 你应该返回流,否则 gulp 不知道它应该等待(即添加return gulp.src('...)。
  • 解决了,谢谢!虽然我不明白为什么......你能解释一下吗?

标签: gulp eslint


【解决方案1】:

Gulp 以异步方式执行其任务。为了让 gulp 能够知道某些任务已经完成,这些任务需要做 one of the following:

  • 返回流(例如 gulp.src 创建的流),gulp 可以在其上侦听 for end event
  • 返回q承诺或
  • 调用作为任务函数参数传递的回调函数

如果任务不接受参数并且不返回承诺或流,gulp 认为该任务是同步的(即,一旦函数调用返回,它就完成了)。一旦所有任务完成,执行就会停止......因此,如果您有一些异步处理,它将永远不会完成(或更糟 - 它可能会在随机点结束)。

【讨论】:

  • 谢谢!但这并不能解释为什么 gulp.src('src/main/webapp/app-basic-an/**/*.js') 不起作用,但 gulp.src('src/main/webapp/app-basic-an/components/**/*.js') 起作用,对吗?这对我来说很奇怪....不过,感谢您的回答!
  • 您需要深入了解 glob 流orchestrator 实现才能知道答案。正如我所写 - 如果没有适当的异步处理,行为是未定义的,并且您处于竞争条件的领域(“工具会在处理某些文件夹之前还是之后退出?”)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多