Версии Taskfile
Синтаксис Taskfile и функции со временем изменяются. Этот документ объясняет, что изменилось в каждой версии и как обновить свой Taskfile.
Что обозначает версия Taskfile
Версия Taskfile соответствует версии Task. Например: изменение на Taskfile версии 2
означает, что Task v2.0.0
должна быть выпущена для ее поддержки.
version:
ключ Taskfile принимает semVer строку. Пример: 2
, 2.0
или 2.0.0
. Если вы решите использовать Task версии 2.0
, то у вас не будет доступа к функциям версии 2.1
, но если вы решите использовать версию 2
, то любые функции версий 2.x.x
будут доступны, но не 3.0.0+
.
Version 3
Основные изменения, сделанные в v3
:
- Output задачи теперь цветной
- Добавлена поддержка
.env
файлов - Добавлен параметр
label:
. Появилась возможность переопределить имя задачи в логах - Глобальный параметр
method:
был добавлен для установки метода по умолчанию, а задача по умолчанию изменена наchecksum
- Two magic variables were added when using
status:
:CHECKSUM
andTIMESTAMP
which contains, respectively, the XXH3 checksum and greatest modification timestamp of the files listed onsources:
- Кроме того, переменная
TASK
всегда доступна по имени текущей задачи - Переменные CLI всегда считаются глобальными переменными
- Добавлена опция
dir:
вincludes
для того, чтобы выбрать, в каком каталоге Taskfile будет запущен:
includes:
docs:
taskfile: ./docs
dir: ./docs
- Реализован короткий синтаксис задачи. Все синтаксисы ниже эквивалентны:
version: '3'
tasks:
print:
cmds:
- echo "Hello, World!"
version: '3'
tasks:
print:
- echo "Hello, World!"
version: '3'
tasks:
print: echo "Hello, World!"
- Был произведён большой рефакторинг обработки переменных. Теперь всё стало более прозрачно. The
expansions:
setting was removed as it became unnecessary. Это порядок, в котором Task будет обрабатывать переменные, каждый уровень может видеть переменные, объявленные на предыдущем и переопределять их.- Переменные окружения
- Глобальные + CLI переменные
- Вызов переменных
- Переменные Task
Версия 2.6
v2 schema support is deprecated and will be removed in a future release.
Версия 2.6 поставляется с preconditions
опцией в задачах.
version: '2'
tasks:
upload_environment:
preconditions:
- test -f .env
cmds:
- aws s3 cp .env s3://myenvironment
Пожалуйста, проверьте документацию
Версия 2.2
v2 schema support is deprecated and will be removed in a future release.
В Версии 2.2 появилась новая глобальная опция includes
, которая позволяет импортировать другие Taskfile'ы:
version: '2'
includes:
docs: ./documentation # will look for ./documentation/Taskfile.yml
docker: ./DockerTasks.yml
Версия 2.1
v2 schema support is deprecated and will be removed in a future release.
В версии 2.1 появилась глобальная опция output
, которая позволяет иметь больше контроля над тем, как вывод команд печатается на консоли (см. документацию):
version: '2'
output: prefixed
tasks:
server:
cmds:
- go run main.go
prefix: server
Начиная с этой версии можно игнорировать ошибки команды или задачи (смотрите документацию здесь):
version: '2'
tasks:
example-1:
cmds:
- cmd: exit 1
ignore_error: true
- echo "This will be print"
example-2:
cmds:
- exit 1
- echo "This will be print"
ignore_error: true
Версия 2.0
v2 schema support is deprecated and will be removed in a future release.
В версии 2 был добавлен ключ version:
. Он позволяет выпускать обновления сохраняя обратную совместимость. Пример использования:
version: '2'
tasks:
echo:
cmds:
- echo "Hello, World!"
Версия 2 позволяет создавать глобальные переменные непосредственно в Taskfile, если вы не хотите создавать Taskvars.yml
:
version: '2'
vars:
GREETING: Hello, World!
tasks:
greet:
cmds:
- echo "{{.GREETING}}"
Порядок приоритетов переменных также отличается:
- Переменные Task
- Call variables
- Переменные Taskfile
- Переменные
Taskvars.yml
- Environment variables
Добавлена новая глобальная опция для настройки количества расширений переменных (по умолчанию 2):
version: '2'
expansions: 3
vars:
FOO: foo
BAR: bar
BAZ: baz
FOOBAR: '{{.FOO}}{{.BAR}}'
FOOBARBAZ: '{{.FOOBAR}}{{.BAZ}}'
tasks:
default:
cmds:
- echo "{{.FOOBARBAZ}}"
Версия 1
v1 schema support was removed in Task >= v3.0.0.
В первой версии Taskfile
поле version:
не доступно, потому что задачи были в корне документа YAML. Пример:
echo:
cmds:
- echo "Hello, World!"
Порядок приоритетов переменных также отличается:
- Call variables
- Переменные среды
- Переменные Task
- Переменные
Taskvars.yml