如何使用gulp-flatmap?

时间:2018-07-16 13:01:58

标签: gulp node-modules csproj gulp-task through2

我有以下两项任务:

gulp.task('get-react-bundles', function () {
    return gulp.src(projPaths["reactPath"] + '/build/**/*.js')
        .pipe(gulp.dest(function (file) {
            return projPaths[path.basename(file.path, '.js')].path + 'ReactBundles/';
        }));
});

gulp.task('update-react-bundles', ['get-react-bundles'], function () {
    gulp.src(projPaths["reactPath"] + '/build/**/*.js')
        .pipe(through.obj(function (file, enc, done) {
            console.log(file.relative);
            var bundle = projPaths[path.basename(file.path, '.js')];
            csprojUtils.ensureInItemGroup(bundle.csProj, 'ReactBundles/' + file.relative, { index: bundle.itmGrpIdx, type: 'Content' });
            this.push(file);
            done();
        }));
});

第一个任务根据文件名将 js 文件复制到适当的文件夹中。 第二项任务是从原始文件夹中获取文件名,并将其包含在复制它们的 .csproj 条目中。

through是 through2 模块,csprojUtils是 csproj-utils 模块。

以下是projPaths变量。

var projPaths = {
    'js1': {
        csProj: "../../../f1/f2/f2.csproj",
        path: "../../../f1/f2/",
        itmGrpIdx: 3
    },
    "reactPath": "./ReactUI/components"
};

我觉得可以使用 gulp-flatmap 来组合这两个任务,但是必须先从flatmap返回gulp流,然后才能执行csprojUtils commmand,以便文件位于该位置。被添加到csproj。

希望对此有所帮助。请原谅我的错误,这是我关于stackoverflow的第一篇文章。

谢谢。

0 个答案:

没有答案