Конфигурация Run
Вы можете настроить Vite Task через раздел run в файле vite.config.ts. Подробнее о запуске скриптов и задач с помощью Vite+ см. в документации по vp run.
import { defineConfig } from 'vite-plus';
export default defineConfig({
run: {
enablePrePostScripts: true,
cache: {
/* ... */
},
tasks: {
/* ... */
},
},
});run.enablePrePostScripts
- Тип:
boolean - По умолчанию:
true
Определяет, следует ли автоматически запускать скрипты preX и postX из package.json как хуки жизненного цикла при выполнении скрипта X.
Если параметр включён (по умолчанию), запуск скрипта, например test, автоматически выполнит pretest перед ним и posttest после него, если они определены в package.json.
export default defineConfig({
run: {
enablePrePostScripts: false, // Отключить хуки pre/post жизненного цикла
},
});ПРЕДУПРЕЖДЕНИЕ
Этот параметр можно задавать только в корневом файле vite.config.ts рабочего пространства. Указание его в конфигурации отдельного пакета приведёт к ошибке.
run.cache
- Тип:
boolean | { scripts?: boolean, tasks?: boolean } - По умолчанию:
{ scripts: false, tasks: true }
Управляет тем, кэшируются ли результаты задач и воспроизводятся ли они при последующих запусках.
export default defineConfig({
run: {
cache: {
scripts: true, // Кэшировать скрипты из package.json (по умолчанию: false)
tasks: true, // Кэшировать определения задач (по умолчанию: true)
},
},
});Значение cache: true включает кэширование как задач, так и скриптов, а cache: false отключает оба вида кэширования.
run.tasks
- Тип:
Record<string, Task | string | string[]>
Определяет задачи, которые можно запускать с помощью команды vp run <task>.
В качестве сокращённой записи значение задачи может быть напрямую задано строкой команды или массивом строк команд:
tasks: {
build: 'vp build',
check: ['vp lint', 'vp build'],
}Это эквивалентно конфигурации, где задано только поле command:
tasks: {
build: { command: 'vp build' },
check: { command: ['vp lint', 'vp build'] },
}Используйте объектную форму, если задаче требуются дополнительные поля, такие как cache, dependsOn, env или input.
command
- Тип:
string | string[]
Определяет команду оболочки, которую необходимо выполнить для задачи. Строка интерпретируется оболочкой, поэтому пробелы, кавычки, &&, каналы и перенаправления работают так же, как и в командной строке.
tasks: {
build: {
command: 'vp build',
},
}Массив запускает каждую запись как отдельную команду последовательно, что эквивалентно их объединению через &&. Это не способ разбить одну команду на отдельные argv-токены — запись ['vp', 'build'] попытается выполнить сначала команду vp без аргументов, а затем команду build, вместо выполнения vp build.
tasks: {
check: {
// Две команды, выполняемые по порядку
command: ['vp lint', 'vp build'],
},
bad: {
// Неверно: это НЕ `vp build`, а сначала `vp`, затем `build`
command: ['vp', 'build'],
},
}Каждая задача, определённая в vite.config.ts, должна содержать собственное поле command. Нельзя определять задачу с одним и тем же именем одновременно в vite.config.ts и package.json.
Команды, объединённые через && (или переданные в виде массива), автоматически разделяются на независимо кэшируемые подзадачи. См. раздел Составные команды.
dependsOn
- Тип:
string[] - По умолчанию:
[]
Список задач, которые должны успешно завершиться до запуска текущей задачи.
tasks: {
deploy: {
command: 'deploy-script --prod',
dependsOn: ['build', 'test'],
},
}Зависимости могут ссылаться на задачи из других пакетов с помощью формата package#task:
dependsOn: ['@my/core#build', '@my/utils#lint'];Подробности о взаимодействии явных и топологических зависимостей см. в разделе Зависимости задач.
cache
- Тип:
boolean - По умолчанию:
true
Определяет, следует ли кэшировать результаты этой задачи. Установите значение false для задач, которые никогда не должны кэшироваться, например для серверов разработки:
tasks: {
dev: {
command: 'vp dev',
cache: false,
},
}env
- Тип:
string[] - По умолчанию:
[]
Переменные окружения, включаемые в отпечаток кэша. При изменении значения любой из указанных переменных выполняется инвалидизация кэша.
tasks: {
build: {
command: 'vp build',
env: ['NODE_ENV'],
},
}Поддерживаются шаблоны с подстановочными символами: VITE_* соответствует всем переменным, начинающимся с VITE_.
$ NODE_ENV=development vp run build # первый запуск
$ NODE_ENV=production vp run build # промах кэша: значение переменной изменилосьuntrackedEnv
- Тип:
string[] - По умолчанию: см. ниже
Переменные окружения, передаваемые процессу задачи, но не включаемые в отпечаток кэша. Изменение их значений не приводит к инвалидизации кэша.
tasks: {
build: {
command: 'vp build',
untrackedEnv: ['CI', 'GITHUB_ACTIONS'],
},
}Набор распространённых переменных окружения автоматически передаётся всем задачам:
- Системные:
HOME,USER,PATH,SHELL,LANG,TZ - Node.js:
NODE_OPTIONS,COREPACK_HOME,PNPM_HOME - CI/CD:
CI,VERCEL_*,NEXT_* - Терминал: переменные, связанные с цветами (
FORCE_COLOR,NO_COLOR,COLORTERM,TERM,TERM_PROGRAM), не передаются задачам автоматически, если только вы не укажете их вenv(значение включается в отпечаток кэша, поэтому его изменение приводит к инвалидизации кэша) или вuntrackedEnv(передаётся без включения в отпечаток кэша). ЕслиFORCE_COLORотсутствует в обоих списках, дочерний процесс получаетFORCE_COLOR=1, чтобы кэшированные логи сохраняли цветовое оформление. При отображении цвета автоматически удаляются, если терминал не поддерживает их вывод.
input
- Тип:
Array<string | { auto: boolean } | { pattern: string, base: "workspace" | "package" }> - По умолчанию:
[{ auto: true }](определяется автоматически)
Vite Task автоматически определяет, какие файлы используются командой (см. раздел Автоматическое отслеживание файлов). Параметр input позволяет явно включать или исключать определённые файлы.
Исключение файлов из автоматического отслеживания:
tasks: {
build: {
command: 'vp build',
// Используйте `{ auto: true }` для автоматического формирования отпечатка (по умолчанию).
input: [{ auto: true }, '!**/*.tsbuildinfo', '!dist/**'],
},
}Явное указание файлов без автоматического отслеживания:
tasks: {
build: {
command: 'vp build',
input: ['src/**/*.ts', 'vite.config.ts'],
},
}Разрешение шаблонов относительно корня рабочего пространства с использованием объектной формы:
tasks: {
build: {
command: 'vp build',
input: [
{ auto: true },
{ pattern: 'shared-config/**', base: 'workspace' },
],
},
}Поле base является обязательным и определяет, относительно чего разрешается глоб-шаблон:
"package": относительно каталога пакета"workspace": относительно корня рабочего пространства
Полное отключение отслеживания файлов, чтобы кэш зависел только от команды и переменных окружения:
tasks: {
greet: {
command: 'node greet.mjs',
input: [],
},
}СОВЕТ
Строковые глоб-шаблоны по умолчанию разрешаются относительно каталога пакета. Используйте объектную форму с base: "workspace", чтобы разрешать их относительно корня рабочего пространства.
output
- Тип:
Array<string | { pattern: string, base: "workspace" | "package" }> - По умолчанию:
[](ничего не архивируется)
Файлы, создаваемые задачей. После успешного выполнения они архивируются, а при попадании в кэш восстанавливаются автоматически, поэтому их не нужно пересобирать. Если оставить список пустым (или не указывать его), архивирование выполняться не будет.
tasks: {
build: {
command: 'vp build',
output: ['dist/**', '!dist/cache/**'],
},
}Если задача записывает файлы за пределами своего пакета, используйте объектную форму с base: "workspace":
tasks: {
build: {
command: 'vp build',
output: [
'dist/**',
{ pattern: 'shared-artifacts/**', base: 'workspace' },
],
},
}cwd
- Тип:
string - По умолчанию: корневой каталог пакета
Рабочий каталог для задачи, задаваемый относительно корневого каталога пакета.
tasks: {
'test-e2e': {
command: 'vp test',
cwd: 'tests/e2e',
},
}