やりたかったこと
いくつかのファイルを複数のフォルダにコピーする処理を作りたかった。
gulp.src()
のときは対象ファイルを配列で投げることができるが、gulp.dest()
では引数として配列が使えない。
解決策
59nagaさんがより簡潔なやり方を教えてくれたので、そちらを追記します!
gulp.task 'moduleSync', ->
pathList = [
# ここにコピー先のパスを書く。fs.readdir とかで動的にも作れる
'./target/hogePath1'
'./target/hogePath2'
'./target/hogePath3'
]
stream= gulp.src [
# ここにコピーしたいファイルを書く
'./source/item1.html'
'./source/item2.css'
'./source/item3.js'
]
stream.pipe gulp.dest path for path in paths
merge-streamを使った解決策(旧)
公式ページの例を参考にした実装
Generating a file per folder
- Array.map()を使う
- merge-streamモジュールを使用する
merge = require 'merge-stream'
gulp.task 'moduleSync', ->
pathList = [
# ここにコピー先のパスを書く。fs.readdir とかで動的にも作れる
'./target/hogePath1'
'./target/hogePath2'
'./target/hogePath3'
]
tasks = pathList.map (path) ->
gulp.src [
# ここにコピーしたいファイルを書く
'./source/item1.html'
'./source/item2.css'
'./source/item3.js'
]
# 必要があれば途中に好きな処理を挟む
# .pipe something()
.pipe gulp.dest path
# 最後にmerge-streamを使う
merge tasks