Gulp 任务不包含子文件夹
Posted
技术标签:
【中文标题】Gulp 任务不包含子文件夹【英文标题】:Gulp Task does not include subfolders 【发布时间】: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('...
)。
解决了,谢谢!虽然我不明白为什么......你能解释一下吗?
【参考方案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 实现才能知道答案。正如我所写 - 如果没有适当的异步处理,行为是未定义的,并且您处于竞争条件的领域(“工具会在处理某些文件夹之前还是之后退出?”)。以上是关于Gulp 任务不包含子文件夹的主要内容,如果未能解决你的问题,请参考以下文章