Переключение между проектами
Одно из главных преимуществ Volta - это бесшовная обработка различных версий инструментов в разных проектах. Эта страница объясняет, как Volta автоматически управляет вашей JavaScript средой при переходе между проектами.
Автоматическое переключение версий
В отличие от других менеджеров версий, которые требуют ручного переключения между версиями инструментов, Volta автоматически обрабатывает это на основе вашей текущей директории.
Как это работает
- Когда вы запускаете JavaScript команду (например,
node
,npm
или исполняемый файл пакета), прокладка Volta перехватывает команду - Volta проверяет вашу текущую директорию, чтобы увидеть, находитесь ли вы в проекте с закреплёнными версиями инструментов
- Если да, Volta использует закреплённые версии из
package.json
этого проекта - Если вы не в проекте с закреплёнными версиями, Volta использует ваши инструменты по умолчанию
Всё это происходит прозрачно, без каких-либо дополнительных команд.
Пример рабочего процесса
Представьте, что у вас есть два проекта с разными требованиями к Node.js:
Проект A (~/projects/project-a/package.json
):
{
"volta": {
"node": "14.19.1",
"npm": "6.14.16"
}
}
Проект B (~/projects/project-b/package.json
):
{
"volta": {
"node": "16.14.2",
"npm": "8.5.0"
}
}
Ваш рабочий процесс может выглядеть так:
# В проекте A
cd ~/projects/project-a
node --version # Показывает v14.19.1
npm --version # Показывает v6.14.16
# Переключение на проект B
cd ~/projects/project-b
node --version # Автоматически показывает v16.14.2
npm --version # Автоматически показывает v8.5.0
# Вне любого проекта
cd ~
node --version # Показывает вашу версию Node по умолчанию
Вложенные проекты
Если у вас есть вложенные проекты, Volta будет использовать версии инструментов из ближайшего package.json
с секцией volta
.
Например:
/parent-project/package.json (с секцией volta, node@14)
/parent-project/child-project/package.json (с секцией volta, node@16)
/parent-project/other-directory/ (без package.json)
Если вы запускаете команды в:
/parent-project/child-project/
- Volta использует Node.js 16/parent-project/other-directory/
- Volta использует Node.js 14/parent-project/
- Volta использует Node.js 14
Исполняемые файлы пакетов
Автоматическое переключение Volta также работает для исполняемых файлов пакетов. Например, если у вас есть версия TypeScript, специфичная для проекта, и вы запускаете tsc
, Volta убедится, что используется правильная версия.
Глобальные vs. локальные пакеты
Когда вы запускаете исполняемый файл пакета:
- Если исполняемый файл существует в
node_modules/.bin/
проекта, Volta использует эту версию - Если нет, но пакет установлен глобально через Volta, она использует эту версию
- Иначе показывается ошибка о том, что команда не найдена
Устранение неполадок
Если у вас возникают проблемы с переключением версий:
- Убедитесь, что ваш проект имеет секцию
volta
в своёмpackage.json
- Запустите
volta list all
, чтобы проверить установленные инструменты - Проверьте, закреплены ли нужные инструменты за вашим проектом или установлены как версии по умолчанию
- Запустите
volta which node
, чтобы увидеть, какую версию Node.js использует Volta и почему