Gulp 正在丢失从 gulp.src(数组)到 gulp.dest 的文件的相对路径

Gulp loosing relative path for files from gulp.src(Array) to gulp.dest

我想使用 gulp 从父目录到子目录的 src 集合中复制并粘贴所有 HTML,但保留它们的路径

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任务

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: I know if I use 'Source/**/*.html', will copy all files correctly and I'm sure I can also remove ComponentC using !, but i need to define each Component on my gulp.src, so I can compile for each website a group of files.

gulp.task('copyHTMLnotUseful', function() {
    return gulp.src([
        '../Source/**.*.html',
        '!../Source/ComponentB/**/*.html'
    ])
    .pipe(gulp.dest('public_html'));
});

我试过设置 cwdbase,但都没有用。

谢谢

我想出了如何使用 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'));
});