Skip to content

Управление версиями Node.js

fnm предоставляет мощные функции управления версиями, позволяя вам легко переключаться между несколькими версиями Node.js.

Базовые операции

Просмотр установленных версий

bash
fnm list

Пример вывода:

* v20.10.0 default
  v18.19.0
  v16.20.2
  • * указывает на текущую используемую версию
  • default указывает на версию по умолчанию

Просмотр текущей версии

bash
fnm current

Переключение версии

bash
# Переключиться на конкретную версию
fnm use 20

# Переключиться на конкретную точную версию
fnm use 20.10.0

# Если версия не установлена, автоматически установить и переключиться
fnm use 18 --install-if-missing

Версия по умолчанию

Установка версии по умолчанию

bash
fnm default 20

Версия по умолчанию:

  • Это версия, используемая при запуске новой сессии терминала
  • Это версия, используемая при отсутствии файла версии

Просмотр версии по умолчанию

bash
fnm default

Псевдонимы версий

Псевдонимы позволяют вам установить легко запоминающиеся имена для версий.

Создание псевдонима

bash
# Установить псевдоним для версии
fnm alias 20 default
fnm alias 18 legacy
fnm alias 16 old

Использование псевдонима

bash
# Переключить версию через псевдоним
fnm use default
fnm use legacy

Удаление псевдонима

bash
fnm unalias legacy

Автоматическое переключение версий

fnm может автоматически переключать версии Node.js на основе директории проекта.

Включение автоматического переключения

Добавьте --use-on-cd в конфигурацию Shell:

bash
eval "$(fnm env --use-on-cd)"

Создание файла версии

Создайте файл .node-version или .nvmrc в корневой директории проекта:

bash
# Использование .node-version (рекомендуется)
echo "20" > .node-version

# Или использование .nvmrc (совместимо с nvm)
echo "v18.17.0" > .nvmrc

Формат файла версии

.node-version поддерживает следующие форматы:

20           # Основная версия, использовать последнюю 20.x.x
20.10        # Минорная версия, использовать последнюю 20.10.x
20.10.0      # Точная версия
lts/iron     # Имя LTS версии

Стратегия парсинга файлов версий

fnm поддерживает две стратегии парсинга файлов версий:

bash
# local (по умолчанию) - Искать только в текущей директории
fnm env --version-file-strategy=local

# recursive - Рекурсивно искать в родительских директориях
fnm env --version-file-strategy=recursive

Поддержка package.json engines

fnm может читать поле engines.node из package.json:

json
{
  "engines": {
    "node": ">=18.0.0"
  }
}

Включено по умолчанию, можно отключить через переменную окружения:

bash
export FNM_RESOLVE_ENGINES=false

Лучшие практики управления версиями

1. Блокировка версий на уровне проекта

Создайте файл .node-version в каждом проекте:

bash
cd my-project
echo "20" > .node-version
fnm install
fnm use

2. Совместная работа в команде

Добавьте .node-version в Git:

bash
git add .node-version
git commit -m "chore: add .node-version"

3. Конфигурация CI/CD

Используйте fnm в средах CI/CD:

yaml
# GitHub Actions
- name: Install fnm
  run: curl -fsSL https://fnm.vercel.app/install | bash

- name: Install Node.js
  run: fnm install && fnm use

4. Разработка с несколькими версиями

bash
# Установить несколько версий
fnm install 20
fnm install 18
fnm install 16

# Установить псевдонимы для удобного переключения
fnm alias 20 current
fnm alias 18 legacy
fnm alias 16 old

# Использовать разные версии в разных проектах
cd project-new && fnm use current
cd project-old && fnm use legacy

Удаление версий

bash
# Удалить конкретную версию
fnm uninstall 16.20.2

# Удалить через псевдоним (удалит версию и все связанные псевдонимы)
fnm uninstall old

Общие проблемы

Команда node не обновляется после переключения версии

Убедитесь, что конфигурация Shell правильная:

bash
# Проверить путь к node
which node

# Должен указывать на директорию fnm
# ~/.fnm/node-versions/.../bin/node

Автоматическое переключение не работает

  1. Подтвердите, что --use-on-cd добавлен в конфигурацию Shell
  2. Подтвердите, что файл версии существует
  3. Перезагрузите конфигурацию Shell

Приоритет файла версии

fnm ищет версии в следующем порядке:

  1. Версия, указанная в командной строке
  2. Файл .node-version
  3. Файл .nvmrc
  4. package.json поле engines.node
  5. Версия по умолчанию

Связанные ссылки