gpt4 book ai didi

javascript - 如何访问 initConfig 中设置的 grunt 任务的回调

转载 作者:行者123 更新时间:2023-11-28 01:57:40 24 4
gpt4 key购买 nike

我遇到了一个似乎无法解决的问题。我尝试了几种不同的方法,但还没有任何效果。

我正在使用 grunt-messageformat 来创建我的 i18n 本地化副本。我有 2 个包含语言的文件夹,我希望 grunt 自动为每个文件夹(语言)生成正确的输出。

最接近我的任务是:

grunt.registerTask("ReadFolders", "Read the language folders in app/data/i18n/", function () {
// Returns an array of the paths to the language folders.
// ['app/data/i18n/en', 'app/data/i18n/key', ...]
var languageFolders = grunt.file.expand("app/data/i18n/*");
var path;
var languageName;
var i;

for (i = 0; i < languageFolders.length; i++) {
path = languageFolders[i];
languageName = path.substring(path.lastIndexOf("/") + 1, path.length);

grunt.config.set("mFormat.locale", languageName);
grunt.config.set("mFormat.inputdir", "app/data/i18n/" + languageName);
grunt.config.set("mFormat.output", "app-dist/test/js/locales/" + languageName + "/i18n.js");

grunt.task.run("messageformat:all");
}
});

这还为我的消息格式任务使用了以下代码,该任务是在 initConfig 中设置的:

messageformat: {
all: {
locale: "<%= mFormat.locale %>",
inputdir: "<%= mFormat.inputdir%>",
output: "<%= mFormat.output%>"
}
}

问题是“readFolders”中的循环在 messageFormat 任务运行之前运行了两次,这意味着该任务运行了两次,但两次都使用 mFormat 变量的最后一个值。

我没有看到任何有关如何访问使用 initConfig 设置的任务回调的示例。

有什么想法吗?或者其他想法?

谢谢

最佳答案

好吧,我没有找到一种方法来完成我最初要求的事情...但我找到了一个很好的解决方法来满足我的需求。我没有为每个文件夹运行任务,而是为每种语言动态重写消息格式配置。

grunt.registerTask("ReadFolders", "Read the language folders in app/data/i18n/", function () {
// Returns an array of the paths to the language folders.
// ['app/data/i18n/en', 'app/data/i18n/key', ...]
var languageFolders = grunt.file.expand("app/data/i18n/*");
var path;
var languageName;
var locale;
var messageFormat = {};
var i = 0;

for (i = 0; i < languageFolders.length; i++) {
path = languageFolders[i];
languageName = path.substring(path.lastIndexOf("/") + 1, path.length);

locale = languageName;
if (languageName === "key") {locale = "en"; }

messageFormat[languageName] = {
locale: locale,
inputdir: "app/data/i18n/" + languageName,
output: "app-dist/test/js/locales/" + languageName + "/i18n.js"
};

}

grunt.config.set("messageformat", messageFormat);

grunt.task.run("messageformat");
});

经过相当详尽的搜索后,我认为这是唯一可能的(坦率地说,就我而言,这是更好的)解决方案。

如果有人有任何其他想法,我们仍然很高兴听到任何其他想法。

关于javascript - 如何访问 initConfig 中设置的 grunt 任务的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18879390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com