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'));
});
Другие вопросы по тегам