У меня есть пара ворчливых задач, и я пытаюсь разделить глобальные переменные для этих задач, и у меня возникают проблемы.
Я написал несколько пользовательских задач, которые устанавливают правильный путь вывода в зависимости от типа сборки. Кажется, это все настраивает правильно.
// Set Mode (local or build)
grunt.registerTask("setBuildType", "Set the build type. Either build or local", function (val) {
// grunt.log.writeln(val + " :setBuildType val");
global.buildType = val;
});
// SetOutput location
grunt.registerTask("setOutput", "Set the output folder for the build.", function () {
if (global.buildType === "tfs") {
global.outputPath = MACHINE_PATH;
}
if (global.buildType === "local") {
global.outputPath = LOCAL_PATH;
}
if (global.buildType === "release") {
global.outputPath = RELEASE_PATH;
}
if (grunt.option("target")) {
global.outputPath = grunt.option("target");
}
grunt.log.writeln("Output folder: " + global.outputPath);
});
grunt.registerTask("globalReadout", function () {
grunt.log.writeln(global.outputPath);
});
Итак, я пытаюсь ссылаться на global.outputPath в следующей задаче и сталкиваюсь с ошибками.
Если я вызываю grunt test
из командной строки, он без проблем выводит правильный путь.
Однако, если у меня есть такая задача: clean: {release: {src: global.outputPath}}
Выдает следующую ошибку: Warning: Cannot call method 'indexOf' of undefined Use --force to continue.
Кроме того, мои константы в задаче setOutput установлены в верхней части моего Gruntfile.js
Есть предположения? Я что-то здесь делаю не так?