Я пытался найти лучший способ установить глобальные параметры для всех моих задач ворчания из задачи ворчания, но мне не очень повезло заставить все работать.
Мне интересно, компилируются ли задачи каким-то образом, чтобы они застряли с начальным значением параметра, или можно ли изменить параметры во время выполнения (во время выполнения задачи watch
), и я просто что-то делаю неправильный.
Базовый вариант
Вот конкретная ситуация (обратите внимание, что Gruntfile написан на coffeescript). Я начинаю со следующей задачи:
sass:
options:
sourcemap: true
compile:
files:
"css/style.css" : "sass/style.sass"
Что я пытаюсь сделать
Я хотел бы иметь возможность динамически устанавливать параметр исходной карты из другой задачи, например:
sass:
options:
sourcemap: '<% grunt.options('local') %>'
compile:
files:
"css/style.css" : "sass/style.sass"
Задача наблюдения улавливает изменения и запускает задачу, чтобы соответствующим образом установить глобальную опцию.
watch:
local:
files: ['local.json']
tasks: ['local']
dist:
files: ['dist.json']
tasks: ['dist']
grunt.option('local', true) # Base declaration
grunt.registerTask( 'local', 'Local is true', () -> grunt.option('local', true) )
grunt.registerTask( 'dist', 'Local is false', () -> grunt.option('no-local') )
Я хочу, чтобы он был настроен так, чтобы любые задачи, которые запускаются после запуска задач «local» или «dist» (например, когда watch
снова запускает задачу sass
), использовали самое последнее значение моей «local» опции. Я пробовал несколько подходов, и этот показался мне наиболее многообещающим, но я пока не смог заставить его работать так, как ожидалось.