Конфигурация 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
- Тип:
Array<string | { task: string, from: DependsOnFrom }> - По умолчанию:
[]
Параметр from принимает типы зависимостей "dependencies", "devDependencies", "peerDependencies" или массив этих значений, например ["dependencies", "devDependencies"].
Список задач, которые должны успешно завершиться до запуска текущей задачи.
tasks: {
deploy: {
command: 'deploy-script --prod',
dependsOn: ['build', 'test'],
},
}Зависимости могут ссылаться на задачи из других пакетов с помощью формата package#task:
dependsOn: ['@my/core#build', '@my/utils#lint'];Используйте объектную форму { task: string, from: DependsOnFrom }, чтобы ссылаться на задачи из всех зависимостей:
tasks: {
test: {
command: 'vp test',
dependsOn: [{ task: 'build', from: ['dependencies', 'devDependencies'] }],
},
}В приведённом выше примере Vite Task анализирует прямые dependencies и devDependencies пакета, в котором объявлена задача, и запускает задачу build в каждой зависимости, где она определена. Пакеты без задачи build пропускаются.
Подробности о взаимодействии явных и топологических зависимостей см. в разделе Зависимости задач.
cache
- Тип:
boolean - По умолчанию:
true
Определяет, следует ли кэшировать результаты этой задачи. Установите значение false для задач, которые никогда не должны кэшироваться, например для серверов разработки:
tasks: {
dev: {
command: 'vp dev',
cache: false,
},
}env
- Тип:
string[] - По умолчанию:
[]
Переменные окружения, включаемые в отпечаток кэша. При изменении значения любой из указанных переменных выполняется инвалидизация кэша.
tasks: {
build: {
command: 'node build.mjs',
env: ['NODE_ENV'],
},
}Поддерживаются шаблоны с подстановочными знаками и шаблоны-исключения с !: VITE_* соответствует всем переменным, начинающимся с VITE_, а !VITE_SECRET исключает переменную VITE_SECRET из совпадения.
Для vp build Vite сообщает о переменных окружения Vite через автоматическое отслеживание. Не добавляйте сюда VITE_* или NODE_ENV для стандартной сборки Vite, если только в вашем проекте нет дополнительной логики сборки, которую Vite не может отслеживать.
$ NODE_ENV=development vp run build # первый запуск
$ NODE_ENV=production vp run build # промах кэша: значение env 'NODE_ENV' изменилосьuntrackedEnv
- Тип:
string[] - По умолчанию: см. ниже
Переменные окружения, передаваемые процессу задачи, но не включаемые в отпечаток кэша. Изменение их значений не приводит к инвалидизации кэша.
tasks: {
build: {
command: 'node build.mjs',
untrackedEnv: ['CI', 'GITHUB_ACTIONS'],
},
}untrackedEnv принимает те же шаблоны с подстановочными знаками и шаблоны-исключения с !, что и env.
Не добавляйте переменную в untrackedEnv, если её значение влияет на результат выполнения задачи. Если инструмент отчётности о кэше отслеживает переменную через автоматическое отслеживание, не добавляйте её ни в env, ни в untrackedEnv.
Vite Task передаёт набор общих переменных окружения всем задачам:
- Системные:
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 автоматически определяет, какие файлы использует команда. Подробности и случаи, когда необходимо добавить ручную настройку, см. в разделе Автоматическое отслеживание данных.
Исключение файлов из автоматического отслеживания:
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 | { auto: boolean } | { pattern: string, base: "workspace" | "package" }> - По умолчанию: автоматическое отслеживание записи
Vite Task автоматически архивирует файлы, созданные при успешном выполнении задачи, и восстанавливает их при попадании в кэш.
Если output не указан, Vite Task использует автоматическое отслеживание записи для выбора этих файлов. Добавьте явные записи output, если необходимо изменить набор файлов, которые будут восстанавливаться.
tasks: {
build: {
command: 'node build.mjs',
output: ['dist/**', '!dist/cache/**'],
},
}Используйте { auto: true }, чтобы сохранить автоматическое отслеживание записи и одновременно добавить явные шаблоны выходных файлов.
Это полезно, когда задача создаёт файлы, которые не должны восстанавливаться из кэша. Например, можно исключить файлы .tsbuildinfo TypeScript:
tasks: {
typecheck: {
command: 'tsc --build',
output: [{ auto: true }, '!*.tsbuildinfo'],
},
}Если задача записывает файлы за пределами своего пакета, используйте объектную форму с base: "workspace":
tasks: {
build: {
command: 'node build.mjs',
output: [
'dist/**',
{ pattern: 'shared-artifacts/**', base: 'workspace' },
],
},
}Установите output: [], чтобы отключить восстановление выходных файлов для задачи, взятой из кэша:
tasks: {
report: {
command: 'node scripts/report.mjs',
output: [],
},
}В отличие от cache: false, output: [] по-прежнему позволяет Vite Task вычислять отпечаток задачи. При попадании в кэш Vite Task пропускает выполнение команды и воспроизводит её вывод в терминале. Используйте это для локальных кэшей, когда выходные файлы задачи уже существуют и не требуют восстановления.
cwd
- Тип:
string - По умолчанию: корневой каталог пакета
Рабочий каталог для задачи, задаваемый относительно корневого каталога пакета.
tasks: {
'test-e2e': {
command: 'vp test',
cwd: 'tests/e2e',
},
}