LoginSignup
26
23

More than 5 years have passed since last update.

配列を使って複数のディレクトリにgulp.dest()する

Last updated at Posted at 2015-02-17

やりたかったこと

いくつかのファイルを複数のフォルダにコピーする処理を作りたかった。
gulp.src()のときは対象ファイルを配列で投げることができるが、gulp.dest()では引数として配列が使えない。

解決策

追記@2015-02-23

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
26
23
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
23