如何在 Gulp 任务中拆分文件

How to split files in Gulp task

例如,我在 mydata.json

中有一些数组
[
  {
    "name": "item1",
    "description": "bla bla bla"
  },
  {
    "name": "item2",
    "description": "lorem lorem lorem"
  },
  {
    "name": "item3",
    "description": "ipsum ipsum ipsum"
  },
]

我需要将 mydata.json 拆分为三个文件:item1.jsonitem2.jsonitem3.json

我必须向我的 Gulp 任务添加什么?

gulp.task('mytask', function () {
  return gulp.src("src/mydata.json")
    .pipe( ??? )
    .pipe(gulp.dest('./dist'));
});

这不会是性能最高的解决方案,因为所有事情都是同步完成的,并且有点超出了典型的 gulp 工作流程。如果这是一个问题,可以将其修改为使用所有异步方法。好处是您无需编写新插件即可使用它。

var fs = require('fs');
gulp.task('mytask', function(done) {
    var data = require('src/mydata.json');

    console.log('about to write files...')
    data.forEach(function(item) {
        var fileName = item.name + '.json';
        var fileContents = JSON.stringify(item);
        fs.writeFileSync(fileName, fileContents);
        console.log('saved file: ', fileName);
    });

    // let gulp know the task is complete
    done();
});

将您的任务分解成单独的文件。然后在我们的 gulpfile.js 文件中,您需要这些文件。 gulpfile.js

require('./gulp/tasks/styles');
require('./gulp/tasks/watch');

然后在您的 styles.js 和 watch.js 文件中添加您的 gulp.task 并在顶部添加所需的文件。