0

gulp を使用して、親ディレクトリから子ディレクトリにある src のコレクションからすべての HTML をコピーして貼り付けたいが、それらのパスは保持したい

Project
+-- /Development
|   +- gulpfile.js
|
+-- /Source
    +- /ComponentA
    |  +- /DirA
    |     +- fileA.html
    |
    +- /ComponentB
    |  +- /DirB
    |     +- fileB.html
    |
    +- /ComponentC
       +- /DirC
          +- fileC.html

すべての HTML ファイルをDevelopment/public_htmlの相対パスにコピーするには、gulp が必要です。

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で各コンポーネントを定義する必要があるため、Web サイトごとにファイルのグループをコンパイルできます。

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

set cwdまたはbaseを試しましたが、どちらも機能しませんでした。

ありがとう

4

1 に答える 1

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'));
});
于 2016-02-12T06:02:38.197 に答える