如何使用gulp生成多个文件

时间:2019-10-11 08:30:08

标签: gulp

我使用gulp已有几年了,用于源代码编译和其他与传统Web开发相关的事情。但是现在我将把它用于其他用途。

我将使用gulp为我的游戏生成世界地图块。块基本上只是项目数组。理想情况下,这就是我想象的世界块生成任务的方式:

task('genChunk', ()=>{
  return ...  //  from where this chain should start? how do I loop it?
    .pipe(putGrass)
    .pipe(putTrees)
    .pipe(putRivers)
    .pipe(putCorners)
    .pipe(putChunkNumber)
    .pipe(wrapMeta) // wrap generated chunk info with some meta data
    .pipe(source(`${chunk.id}.json`)  //  give a name to file
    .pipe(dest(`${worldsPath}/${config.name}`) //  save file in dest dir
})

我喜欢通过管道链放置块生成过程的想法。

但是,好像我可以在互联网上找到的每一项吞咽任务,都是从gulp.src开始的,这不是我的情况。因此,主要问题-gulp是否适用于不需要任何文件输入的任务,例如这样的任务?如何启动管道链?如何循环播放?

当前,这是我实现生成块的任务的方式:

const genChunk = ({worldHeight, worldWidth, name}) => function genChunk(cb){
  Array(worldWidth*worldHeight).fill(null).map((k, i)=>{
    const chunk = {
      id: i+1,
      items: compose(
        putGrass,
        putTrees,
        putRivers,
        putCorners,
        putChunkNumber,
      )([])
    }
    const json = JSON.stringify(chunk, null, 2)
    fs.writeFileSync(`${worldsPath}/${name}/chunks/${chunk.id}.json`, json, 'utf8');
  })
  cb()
}

但是,这种方式除了task本身之外,不使用任何吞咽功能。

我在这里需要吞咽吗?

将gulp用于此类任务可能有什么好处?

我是否应该实施后端API来生成世界大块,而不是使用gulp任务?

0 个答案:

没有答案