web-dev-qa-db-ja.com

Glob / minimatch:gulp.src()すべてを実行し、フォルダーを除外するが、その中に1つのファイルを保持する方法

私はこのようなプロジェクトを持っています:

_root
  |-incl1
  |-incl2
  |- ...
  |-excl1
  |-excl2
     |- .gitignore  <-- keep this one
     |- (other files)  <-- exclude them
_

_excl1_と_excl2_を除くすべてのフォルダーを含むgulp.src()を記述する必要がありますbut _.gitignore_ファイルを保持します。

これは動作しない私のコードです:

_gulp.src([
  baseDir + '/**',
  '!' + baseDir + '/{excl1, excl1/**}'
  '!' + baseDir + '/excl2/{**, !.gitignore}'  // <-- doesn't work
], {dot: true})
_
31
Borek Bernard

これはうまくいくようです:

gulp.src([
    baseDir + '/**',                              // Include all
    '!' + baseDir + '/excl1{,/**}',               // Exclude excl1 dir
    '!' + baseDir + '/excl2/**/!(.gitignore)',    // Exclude excl2 dir, except .gitignore
], { dot: true });

Globmatchから単一のファイルを除外するのは、minimatch docsに同様の例がないため、注意が必要です。

https://github.com/isaacs/minimatch

「パターンが!文字で始まる場合、否定されます」。

73
Heikki