package.json scripts
Стандартный набор npm-скриптов для frontend-проекта на Vite/Webpack — dev, build, preview, lint, test, format.
Задача
Нужно стандартизировать команды разработки так, чтобы любой разработчик в команде знал: npm run dev — запуск, npm run build — сборка, npm test — тесты.
Решение
{
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview",
"lint": "eslint . --ext .ts,.tsx,.js,.jsx",
"lint:fix": "eslint . --ext .ts,.tsx,.js,.jsx --fix",
"format": "prettier --write .",
"format:check": "prettier --check .",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"typecheck": "tsc --noEmit",
"prepare": "husky",
"ci": "npm run typecheck && npm run lint && npm run format:check && npm run test"
}
}
Запуск нескольких команд последовательно (&&) или параллельно (&):
{
"scripts": {
"validate": "npm run typecheck && npm run lint && npm run test",
"dev:all": "concurrently \"npm run dev\" \"npm run test:watch\""
}
}
Для параллельного запуска нужен пакет concurrently:
npm install -D concurrently
Переменные окружения в скриптах:
{
"scripts": {
"build:prod": "NODE_ENV=production vite build",
"build:staging": "VITE_API_URL=https://api.staging.com vite build"
}
}
На Windows переменные окружения задаются через cross-env:
npm install -D cross-env
"build:prod": "cross-env NODE_ENV=production vite build"
Ключевые моменты
npm testиnpm start— специальные псевдонимы, не требуютrun; остальные —npm run <script>.pre<script>иpost<script>— lifecycle hooks:prebuildзапускается автоматически передbuild.ciскрипт с полной проверкой — запускать в CI/CD перед деплоем.cross-envнужен для кроссплатформенной установки env-переменных (Windows + Unix).
Варианты
- Makefile — альтернатива для сложных сценариев с зависимостями между задачами.
- Turborepo / Nx — для монорепо, кэширование результатов задач.