Gulp теряет относительный путь для файлов от gulp.src(Array) до gulp.dest
Я хочу использовать gulp для копирования и вставки всего HTML-кода из коллекции src, которая находится из родительского каталога в дочерний каталог, но сохраняет свой путь
Project
+-- /Development
| +- gulpfile.js
|
+-- /Source
+- /ComponentA
| +- /DirA
| +- fileA.html
|
+- /ComponentB
| +- /DirB
| +- fileB.html
|
+- /ComponentC
+- /DirC
+- fileC.html
Мне нужно gulp, чтобы скопировать все HTML-файлы по относительным путям в Development/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, но тоже не сработало.
Спасибо
1 ответ
Я понял, как использовать базу, чтобы исправить мою проблему.
Все просто, просто добавьте базу с именем __dir, вот так. Просто убедитесь, что вы установили внутри 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'));
});