使用gulp创建本地化的资源包

Using gulp to create localized resource bundles

本文关键字:资源 本地化 gulp 创建 使用      更新时间:2023-09-26

我在资源目录中有一堆文件:

  • labels.no.js
  • 标签.en.js
  • 错误编号js
  • errors.en.js

我想为每种语言创建一个资源捆绑包,这样我就可以根据客户端的语言只将其中一个捆绑包服务器到客户端。所以我想要这个结果:

  • bundle.en.js(来自不同目录的所有en文件)
  • bundle.no.js(无文件时相同)

我不想硬编码语言(否则我可以复制/粘贴),所以我需要一些方法来根据后缀自动将文件"连接"到一个捆绑包中(所以无论我有多少种语言,我的捆绑包数量都等于按后缀分组的语言数量)

我在gullow 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("."));

});