У меня проблема, которую я не могу решить. Я пробовал пару разных способов, но пока ничего не работает.Как получить доступ к обратному вызову при задании grunt, установленном в initConfig
Я использую 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");
}
});
Это также использует следующий код для моей MessageFormat задачи, которая устанавливается в initConfig:
messageformat: {
all: {
locale: "<%= mFormat.locale %>",
inputdir: "<%= mFormat.inputdir%>",
output: "<%= mFormat.output%>"
}
}
Проблема в том, что мой цикл в 'readFolders' пробегает два раза до запуска задачи messageFormat, что означает, что задача выполняется дважды, но оба раза она использует последние значения для переменных mFormat.
Я не вижу примеров того, как обращаться к обратному вызову задачи, настроенной с помощью initConfig.
Любые мысли? Или другие идеи?
Благодаря
Другой вариант, который я рассматривал, передавал в 3 переменные задачи, но я не был уверен, как это сделать ... Что-то вроде grunt.task.run ("messageformat: all", {locale: " что-то ", inputdir:" somethingElse ", output:" anotherThing "}); – ThePuzzleMaster