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



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

相关内容

  • 没有找到相关文章

最新更新