使用 gulp 创建本地化资源包
Using gulp to create localized resource bundles
我在资源目录中有一堆文件:
- labels.no.js
- labels.en.js
- errors.no.js
- errors.en.js
我想为每种语言创建一个资源包,这样我就可以根据客户端的语言将其中一个资源包提供给客户端。所以我想要这样的结果:
- bundle.en.js(来自不同目录的所有 en 文件)
- bundle.no.js(无文件同理)
我不想对语言进行硬编码(否则我可以 copy/pasted),所以我需要一些方法根据后缀自动将 "join" 文件打包成一个包(所以无论我有多少种语言,我的捆绑包数量等于按后缀分组的语言数量)
我在 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("."));
});
我在资源目录中有一堆文件:
- labels.no.js
- labels.en.js
- errors.no.js
- errors.en.js
我想为每种语言创建一个资源包,这样我就可以根据客户端的语言将其中一个资源包提供给客户端。所以我想要这样的结果:
- bundle.en.js(来自不同目录的所有 en 文件)
- bundle.no.js(无文件同理)
我不想对语言进行硬编码(否则我可以 copy/pasted),所以我需要一些方法根据后缀自动将 "join" 文件打包成一个包(所以无论我有多少种语言,我的捆绑包数量等于按后缀分组的语言数量)
我在 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("."));
});