Skip to content

Конфигурация Run

Вы можете настроить Vite Task через раздел run в файле vite.config.ts. Подробнее о запуске скриптов и задач с помощью Vite+ см. в документации по vp run.

vite.config.ts
ts
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.

vite.config.ts
ts
export default defineConfig({
  run: {
    enablePrePostScripts: false, // Отключить хуки pre/post жизненного цикла
  },
});

ПРЕДУПРЕЖДЕНИЕ

Этот параметр можно задавать только в корневом файле vite.config.ts рабочего пространства. Указание его в конфигурации отдельного пакета приведёт к ошибке.

run.cache

  • Тип: boolean | { scripts?: boolean, tasks?: boolean }
  • По умолчанию: { scripts: false, tasks: true }

Управляет тем, кэшируются ли результаты задач и воспроизводятся ли они при последующих запусках.

vite.config.ts
ts
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>.

В качестве сокращённой записи значение задачи может быть напрямую задано строкой команды или массивом строк команд:

vite.config.ts
ts
tasks: {
  build: 'vp build',
  check: ['vp lint', 'vp build'],
}

Это эквивалентно конфигурации, где задано только поле command:

vite.config.ts
ts
tasks: {
  build: { command: 'vp build' },
  check: { command: ['vp lint', 'vp build'] },
}

Используйте объектную форму, если задаче требуются дополнительные поля, такие как cache, dependsOn, env или input.

command

  • Тип: string | string[]

Определяет команду оболочки, которую необходимо выполнить для задачи. Строка интерпретируется оболочкой, поэтому пробелы, кавычки, &&, каналы и перенаправления работают так же, как и в командной строке.

vite.config.ts
ts
tasks: {
  build: {
    command: 'vp build',
  },
}

Массив запускает каждую запись как отдельную команду последовательно, что эквивалентно их объединению через &&. Это не способ разбить одну команду на отдельные argv-токены — запись ['vp', 'build'] попытается выполнить сначала команду vp без аргументов, а затем команду build, вместо выполнения vp build.

vite.config.ts
ts
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[]
  • По умолчанию: []

Список задач, которые должны успешно завершиться до запуска текущей задачи.

vite.config.ts
ts
tasks: {
  deploy: {
    command: 'deploy-script --prod',
    dependsOn: ['build', 'test'],
  },
}

Зависимости могут ссылаться на задачи из других пакетов с помощью формата package#task:

vite.config.ts
ts
dependsOn: ['@my/core#build', '@my/utils#lint'];

Подробности о взаимодействии явных и топологических зависимостей см. в разделе Зависимости задач.

cache

  • Тип: boolean
  • По умолчанию: true

Определяет, следует ли кэшировать результаты этой задачи. Установите значение false для задач, которые никогда не должны кэшироваться, например для серверов разработки:

vite.config.ts
ts
tasks: {
  dev: {
    command: 'vp dev',
    cache: false,
  },
}

env

  • Тип: string[]
  • По умолчанию: []

Переменные окружения, включаемые в отпечаток кэша. При изменении значения любой из указанных переменных выполняется инвалидизация кэша.

vite.config.ts
ts
tasks: {
  build: {
    command: 'vp build',
    env: ['NODE_ENV'],
  },
}

Поддерживаются шаблоны с подстановочными символами: VITE_* соответствует всем переменным, начинающимся с VITE_.

bash
$ NODE_ENV=development vp run build    # первый запуск
$ NODE_ENV=production vp run build     # промах кэша: значение переменной изменилось

untrackedEnv

  • Тип: string[]
  • По умолчанию: см. ниже

Переменные окружения, передаваемые процессу задачи, но не включаемые в отпечаток кэша. Изменение их значений не приводит к инвалидизации кэша.

vite.config.ts
ts
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 позволяет явно включать или исключать определённые файлы.

Исключение файлов из автоматического отслеживания:

vite.config.ts
ts
tasks: {
  build: {
    command: 'vp build',
    // Используйте `{ auto: true }` для автоматического формирования отпечатка (по умолчанию).
    input: [{ auto: true }, '!**/*.tsbuildinfo', '!dist/**'],
  },
}

Явное указание файлов без автоматического отслеживания:

vite.config.ts
ts
tasks: {
  build: {
    command: 'vp build',
    input: ['src/**/*.ts', 'vite.config.ts'],
  },
}

Разрешение шаблонов относительно корня рабочего пространства с использованием объектной формы:

vite.config.ts
ts
tasks: {
  build: {
    command: 'vp build',
    input: [
      { auto: true },
      { pattern: 'shared-config/**', base: 'workspace' },
    ],
  },
}

Поле base является обязательным и определяет, относительно чего разрешается глоб-шаблон:

  • "package": относительно каталога пакета
  • "workspace": относительно корня рабочего пространства

Полное отключение отслеживания файлов, чтобы кэш зависел только от команды и переменных окружения:

vite.config.ts
ts
tasks: {
  greet: {
    command: 'node greet.mjs',
    input: [],
  },
}

СОВЕТ

Строковые глоб-шаблоны по умолчанию разрешаются относительно каталога пакета. Используйте объектную форму с base: "workspace", чтобы разрешать их относительно корня рабочего пространства.

output

  • Тип: Array<string | { pattern: string, base: "workspace" | "package" }>
  • По умолчанию: [] (ничего не архивируется)

Файлы, создаваемые задачей. После успешного выполнения они архивируются, а при попадании в кэш восстанавливаются автоматически, поэтому их не нужно пересобирать. Если оставить список пустым (или не указывать его), архивирование выполняться не будет.

vite.config.ts
ts
tasks: {
  build: {
    command: 'vp build',
    output: ['dist/**', '!dist/cache/**'],
  },
}

Если задача записывает файлы за пределами своего пакета, используйте объектную форму с base: "workspace":

vite.config.ts
ts
tasks: {
  build: {
    command: 'vp build',
    output: [
      'dist/**',
      { pattern: 'shared-artifacts/**', base: 'workspace' },
    ],
  },
}

cwd

  • Тип: string
  • По умолчанию: корневой каталог пакета

Рабочий каталог для задачи, задаваемый относительно корневого каталога пакета.

vite.config.ts
ts
tasks: {
  'test-e2e': {
    command: 'vp test',
    cwd: 'tests/e2e',
  },
}