Как установить нужную версию Node.js и npm для разработки

Введение в разработку на Node.js и npm

Спойлер
Лучше использовать NVM для работы с разными версиями node.js и npm

В статье описаны оба подхода — apt и nvm.

Что такое Node.js и npm?

npm означает диспетчер пакетов Node.

npm — это:

  • онлайн-репозиторий для публикации проектов Node.js с открытым исходным кодом
  • утилита командной строки для взаимодействия с указанным репозиторием, помогающая устанавливать пакеты и управлять версиями пакетов и зависимостями.

Вы определяете все зависимости вашего проекта внутри файла package.json. Каждый раз, когда вам или члену команды нужно приступить к работе над проектом, все, что им нужно сделать, — это запустить npm install.

Node.js — это среда выполнения, которая позволяет запускать JavaScript на серверной части.

В чем разница между npm install и npm run build?

npm install устанавливает зависимости в node_modules/ каталог для проекта node, над которым вы работаете. Вы можете вызвать install другой node.js проект (модуль), чтобы установить его в качестве зависимости для вашего проекта.

npm run build ничего не делает, если вы не укажете, что делает «build» в вашем файле package.json. Он позволяет вам выполнять любые необходимые задачи по сборке/подготовке вашего проекта перед его использованием в другом проекте.

Что такое package.json?

Файл package.json создается вашим менеджером пакетов (в данном случае npm) и находится в корне проекта в JavaScript/Node. Чтобы создать файл package.json, вы можете запустить npm init . Затем вам будет предложено заполнить некоторые метаданные для вашего проекта.

package.json — это файл, который используется в проектах, созданных с использованием Node.js, для описания и управления зависимостями, скриптами и другими метаданными проекта. Этот файл играет важную роль в управлении проектами на основе Node.js и позволяет вам легко управлять зависимостями и скриптами, а также делиться информацией о вашем проекте с другими разработчиками.

package.json содержит следующие разделы:

  1. name: Этот раздел определяет имя вашего проекта. Оно должно быть уникальным в пределах npm-реестра.
  2. version: В этом разделе указывается текущая версия вашего проекта. Версия обычно следует семантическому версионированию (semver) и имеет формат X.Y.Z, где X — мажорная версия, Y — минорная версия, и Z — патч.
  3. description: Здесь можно добавить описание вашего проекта, чтобы другие разработчики понимали, о чем идет речь.
  4. main: Указывает на точку входа вашего приложения, то есть файл, который будет запущен, когда ваш пакет будет подключен как зависимость в других проектах.
  5. scripts: Этот раздел содержит пользовательские команды (скрипты) для автоматизации различных задач, таких как сборка, тестирование и другие. Например, вы можете создать скрипт "start", который будет запускать ваше приложение.
  6. dependencies: Здесь перечислены зависимости вашего проекта, то есть пакеты, которые ваш проект использует для работы. Эти зависимости будут установлены при выполнении npm install.
  7. devDependencies: Аналогично dependencies, но здесь перечислены зависимости, которые используются только во время разработки, например, инструменты тестирования или сборки.
  8. engines: Этот раздел позволяет указать требуемую версию Node.js и npm для вашего проекта.
  9. author: Здесь можно указать автора проекта.
  10. license: Указывает лицензию, в рамках которой распространяется ваш проект.

npm-scripts

В файле package.json также есть свойство scripts. Его можно использовать для запуска инструментов командной строки, установленных в локальном контексте проекта.

Общие scripts, которые вы можете использовать — это:

  • npm test — для запуска тестов
  • npm build — для сборки вашего проекта
  • npm start — для локального запуска проекта.

Где посмотреть нужную версию Node.js и npm

Чтобы узнать, какая версия Node.js и npm, я рекомендую зайти в определенную ветку проекта superset

Для этого можно прям в github выбрать нужный вам тег:

и открыть файл superset/superset-frontend/package.json. В нем найдете в 99% случаях всю нужную информацию, которая пригодится при сборке проекта.

Если Вы планируете добавлять плагины в официальный образ, то лучше придерживаться указанных версий Node.js и npm. По крайней мере, когда пытался сбилдить проект на иных версиях — всегда получал ошибки. При соблюдении версий проблем существенно меньше.

Установка необходимой версии Node.js и npm с помощью apt

Для начала рассмотрим кейс, когда на операционной системе стоит другая версия Node.js и npm.

Для начала нам нужно удалить нашу версию, почистить все оставшиеся файлы.

Проверяем текущие версии Node.js и npm:

node --version
npm --version

Результат:

Удаление текущих версий node.js и npm

sudo apt-get remove nodejs
sudo apt-get remove npm

which node
>>> пусто

# при необходимости запускаем
# sudo rm /usr/local/bin/node

ls /etc/apt/sources.list.d
>>> nodesource.list

sudo rm /etc/apt/sources.list.d/nodesource.list

which npm
>>> пусто

# при необходимости запускаем
# sudo rm /usr/local/bin/npm

Выполнение указанных шагов мне помогало удалить текущие версии node.js и npm.

Установка необходимой версии node.js и npm

Для начала поймем какую точно версию мы хотим установить. В package.json указано для версии superset 2.1.1:

"engines": {
  "node": "^16.9.1",
  "npm": "^7.5.4 || ^8.1.2"
},

Знак «^» означает, что можно использовать любую версию Node.js, начиная с указанной (в данном случае — 16.9.1), но не старше, чем следующая основная версия.

Инструкция по установке node.js через apt:

https://github.com/nodesource/distributions/blob/master/README.md

Далее выполняем команды:

# Download and import the Nodesource GPG key
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

# Create deb repository
NODE_MAJOR=16
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

# Run Update and Install
sudo apt-get update
sudo apt-get install nodejs -y

Проверяем версии node и npm:

superset@server:~$ node -v
v16.20.2
superset@server:~$ npm -v
8.19.4

Как установить конкретную версию npm?

Если вдруг при разработке вы получаете ошибки, то можете понизить версию npm.

sudo npm install -g npm@7

Команда sudo npm install -g npm@7 выполняет следующие действия:

  1. npm — это менеджер пакетов для JavaScript, который используется для установки и управления зависимостями в проектах.
  2. install — это команда npm, которая используется для установки пакетов. В данном случае, мы собираемся установить пакет npm@7.
  3. -g (или --global) — это флаг, указывающий, что пакет npm должен быть установлен глобально на вашей системе, а не только в текущем проекте. Глобальная установка позволяет использовать npm@7 из командной строки в любом месте на вашей системе.
  4. npm@7 — это версия npm, которую вы собираетесь установить. В данном случае, вы устанавливаете версию 7 npm.

Установка node и npm через NVM

Node Version Manager (NVM) — это инструмент для управления версиями Node на вашем устройстве.

Вместо использования apt для установки и удаления версий Node для разных проектов вы можете использовать nvm, который поможет вам эффективно управлять версиями Node для каждого проекта.

NVM позволяет вам устанавливать разные версии Node и переключаться между этими версиями в зависимости от проекта, над которым вы работаете, через командную строку.

  1. curl: sudo apt-get install curl
  2. NVM: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
  3. Убедитесь, что NVM установлен (например, запросив доступный список версий node): nvm list-remote
  4. Затем вы можете установить node 16 с помощью: nvm install v16.14.0
  5. Проверьте установленую версию node: node --version

Используйте NVM (Node Version Manager) для установки и использования любых других версий node, которые вы хотите.

Ivan Shamaev (Admin)
Работаю с Apache Superset с 2021 года. Веду этот блог, чтобы систематизировать свои знания и поделиться ими с другими специалистами. Подписывайтесь на мой телеграм канал @apache_superset_bi
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x