ガルプv4.xの
現在の一気のドキュメントは、あなたの要件を満たすためにカスタマイズすることができます例glob patternが含まれます。次のことを試してみてください。
gulp.task('copyfoobar', function() {
gulp.src([
'bower_components/jqueryui/**', // [1]
'!bower_components/jqueryui/themes/**', // [2]
'bower_components/jqueryui/themes/{base,ui-lightness}/**' // [3]
], { base: './' })
.pipe(gulp.dest('./dist'));
});
上に示したグロブのArray
は以下のん:
[1]
がbower_components/jqueryui/
ディレクトリの下にあるすべてのものにマッチします。
[2]
前のグロブパターンで作成したリストからbower_components/jqueryui/themes
ディレクトリ(およびその中のすべて)を無効にします。
[3]
bower_components/jqueryui/themes/base
とbower_components/jqueryui/themes/ui-lightness
のディレクトリ(およびその中のすべて)をリストに追加します。
注:上記溶液はbower_components
ディレクトリはgulpfile.js
と同じディレクトリに存在することを前提とし、ターゲットディレクトリがdist
です。
その結果得られたディレクトリツリー:
あなたがbower_components
ディレクトリを使用しない場合は、あなたのターゲット/宛先ディレクトリに追加(すなわち、その後、dist
)、へbaseオプション設定:
{ base: './bower_components/' }
これは、このようなものになります:
{ base: './' }
何かで結果:へbase
オプションを設定するなど
.
└── dist
└── jqueryui
├── themes
│ ├── base
│ │ └── ...
│ └── ui-lightness
│ └── ...
└── ...
このように:
.
└── dist
└── bower_components
└── jqueryui
├── themes
│ ├── base
│ │ └── ...
│ └── ui-lightness
│ └── ...
└── ...
ガルプのv3.xの
否定(!
)が異なって扱われたため、残念ながら、上記の例ではガルプバージョン3.xでは動作しません - 彼らは関係なく、常に最後に行われましたそれらがグロブ内で指定された順番のうちArray
です。 issue 837で議論されている詳細情報。
回避策(v.3.xの場合)はgulp-src-ordered-globsを利用することです。この場合、前の例と同じArray
のglobを使用できます。
このためのコードは次のようになります。
var gulpSrc = require('gulp-src-ordered-globs'); // require the gulp.src() wrapper.
gulp.task('copyfoobar', function() {
gulpSrc([ // <-- gulpSrc() used instead of gulp.src()
'bower_components/jqueryui/**',
'!bower_components/jqueryui/themes/**',
'bower_components/jqueryui/themes/{base,ui-lightness}/**'
], { base: './' })
.pipe(gulp.dest('./dist'));
});
うわー、素晴らしい答え!これはまさに私が必要としていたものです。 – Chad
私の喜びとありがとう:) – RobC