0

リソースディレクトリにたくさんのファイルがあります:

  • labels.no.js
  • labels.en.js
  • errors.no.js
  • errors.en.js

クライアントの言語に基づいてこれらのバンドルの 1 つだけをクライアントにサーバーするために、言語ごとに 1 つのリソース バンドルを作成したいと考えています。だから私はこの結果を得たい:

  • bundle.en.js (さまざまなディレクトリのすべての en ファイル)
  • bundle.no.js (ファイルがない場合も同様)

言語をハードコーディングしたくないので (そうでなければ、コピー/貼り付けできたはずです)、サフィックスに基づいてファイルを 1 つのバンドルに自動的に「結合」する方法が必要です (したがって、言語がいくつあっても、接尾辞でグループ化された言語の数に等しいバンドルの数)

4

1 に答える 1

0

私はgulp-group-aggregateの助けを借りてそれを行うことができました:

var groupAggregate = require("gulp-group-aggregate");

gulp.task("buildResources:js", function () {
return gulp.src(["/sourcefolder"], { base: "." })
    .pipe(groupAggregate({
        group: function (file) {

            var extractResourceLocale = function() {
                var result = file.relative.substring(0, file.relative.length - 3); // remove ".js"
                var dotIndex = result.lastIndexOf(".");
                return result.substring(dotIndex + 1, result.length);
            }

            return extractResourceLocale(file);
        },
        aggregate: function (group, files) {

            var filesArray = [];

            for (var i = 0; i < files.length; i++) {
                filesArray[i] = files[i].relative;
            }

            var bundlePath = "bundles/result." + group + ".js";

            gulp.src(filesArray)
                .pipe(concat(bundlePath))
                .pipe(uglify())
                .pipe(gulp.dest("."));

            return {
                path: ".",
                contents: null
            }
        }
    }))
    .pipe(gulp.dest("."));

});

于 2015-12-18T16:46:45.720 に答える