这是我迄今为止所拥有的以及我所尝试的内容:
在我的应用程序中,我有一个像这样的结构的文件
/app/learn/content/ab.html
/app/learn/content/bc.html
/app/learn/content/base.html
/app/write/content/ab.html
/app/write/content/bc.html
/app/write/content/base.html
/app/xx/ab.html
/app/xx/bc.html
/app/xx/base.html
我设置了一个像这样的观察者:
var abc = {
src: [
'**/ab.html',
'**/bc.html',
],
}
gulp.task('watchHTMLs', function () {
gulp.watch(abc.src, function (file) {
return gulp.src(path.basename(file.path))
.pipe(rename('base.html'))
.pipe(gulp.dest('./'));
})
});
我想要查看包含ab.html或bc.html文件名的文件,然后在更改时将这些文件复制到同一目录中的base.html。但到目前为止,我的观察者开始了,但是当我更改其中一个ab.html或bc.html文件时,什么都没发生。观察者似乎甚至没有开火。
有人能指出我做错了吗?
答案 0 :(得分:1)
在整个项目中使用无范围的globstar **
是一个坏主意。 **/ab.html
与项目的所有文件夹中的ab.html
匹配,包括node_modules
。根据{{1}}中有多少嵌套文件夹,这可能需要一段时间才能完成。如果它曾经。
您从node_modules
收到的file
也只有绝对路径,因此您需要将当前工作目录的base
option提供给gulp.watch()
。
最后,您只想更改gulp.src()
的名称,而不是整个路径。使用file
的{{1}}选项。
所有这些加起来:
basename