我想使用 gulp 将 src 集合中的所有 HTML 从父目录复制并粘贴到子目录,但保留它们的路径
Project
+-- /Development
| +- gulpfile.js
|
+-- /Source
+- /ComponentA
| +- /DirA
| +- fileA.html
|
+- /ComponentB
| +- /DirB
| +- fileB.html
|
+- /ComponentC
+- /DirC
+- fileC.html
我需要gulp将所有HTML文件复制到开发/public_html的相对路径
Project
+-- /Development
+- gulpfile.js
|
+- /public_html
+- /ComponentA
| +- /DirA
| +- fileA.html
|
+- /ComponentC
+- /DirC
+- fileC.html
我的吞咽任务
gulp.task('copyHTMLwrong', function() {
return gulp.src([
'../Source/ComponentA/**/*.html',
'../Source/ComponentC/**/*.html'
])
.pipe(gulp.dest('public_html'));
});
但我得到(松散的路径):
Project
+-- /Development
+- gulpfile.js
|
+- /public_html
+- fileA.html
+- fileC.html
PS:我知道如果我使用"Source/**/*.html",将正确复制所有文件,我相信我也可以使用!删除ComponentC,但我需要在gulp.src上定义每个组件,以便我可以为每个网站编译一组文件。
gulp.task('copyHTMLnotUseful', function() {
return gulp.src([
'../Source/**.*.html',
'!../Source/ComponentB/**/*.html'
])
.pipe(gulp.dest('public_html'));
});
我尝试过设置 cwd 或底座,但也没有工作。
谢谢
我想出了如何使用base来解决我的问题。
很简单,只需添加一个带有__dirname的底座,就像这样。只要确保你在 path.resolve() 中设置:
gulp.task('copyHTML', function() {
return gulp.src([
'../Source/ComponentA/**/*.html',
'../Source/ComponentC/**/*.html'
],
{base: path.resolve(__dirname + '/../Source')})
.pipe(gulp.dest('public_html'));
});