Gulp从gulp.src(Array)到gulp.dest的文件丢失相对路径

时间:2016-02-12 04:34:15

标签: path gulp base cwd

我想使用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:我知道如果我使用' 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 个答案:

答案 0 :(得分:0)

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