Введение в разработку на 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
содержит следующие разделы:
name
: Этот раздел определяет имя вашего проекта. Оно должно быть уникальным в пределах npm-реестра.version
: В этом разделе указывается текущая версия вашего проекта. Версия обычно следует семантическому версионированию (semver) и имеет форматX.Y.Z
, гдеX
— мажорная версия,Y
— минорная версия, иZ
— патч.description
: Здесь можно добавить описание вашего проекта, чтобы другие разработчики понимали, о чем идет речь.main
: Указывает на точку входа вашего приложения, то есть файл, который будет запущен, когда ваш пакет будет подключен как зависимость в других проектах.scripts
: Этот раздел содержит пользовательские команды (скрипты) для автоматизации различных задач, таких как сборка, тестирование и другие. Например, вы можете создать скрипт"start"
, который будет запускать ваше приложение.dependencies
: Здесь перечислены зависимости вашего проекта, то есть пакеты, которые ваш проект использует для работы. Эти зависимости будут установлены при выполненииnpm install
.devDependencies
: Аналогичноdependencies
, но здесь перечислены зависимости, которые используются только во время разработки, например, инструменты тестирования или сборки.engines
: Этот раздел позволяет указать требуемую версию Node.js и npm для вашего проекта.author
: Здесь можно указать автора проекта.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
выполняет следующие действия:
npm
— это менеджер пакетов для JavaScript, который используется для установки и управления зависимостями в проектах.install
— это командаnpm
, которая используется для установки пакетов. В данном случае, мы собираемся установить пакетnpm@7
.-g
(или--global
) — это флаг, указывающий, что пакетnpm
должен быть установлен глобально на вашей системе, а не только в текущем проекте. Глобальная установка позволяет использоватьnpm@7
из командной строки в любом месте на вашей системе.npm@7
— это версияnpm
, которую вы собираетесь установить. В данном случае, вы устанавливаете версию 7npm
.
Установка node и npm через NVM
Node Version Manager (NVM) — это инструмент для управления версиями Node на вашем устройстве.
Вместо использования apt для установки и удаления версий Node для разных проектов вы можете использовать nvm
, который поможет вам эффективно управлять версиями Node для каждого проекта.
NVM позволяет вам устанавливать разные версии Node и переключаться между этими версиями в зависимости от проекта, над которым вы работаете, через командную строку.
- curl:
sudo apt-get install curl
- NVM:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
- Убедитесь, что NVM установлен (например, запросив доступный список версий node):
nvm list-remote
- Затем вы можете установить node 16 с помощью:
nvm install v16.14.0
- Проверьте установленую версию node:
node --version
Используйте NVM (Node Version Manager) для установки и использования любых других версий node, которые вы хотите.
Leave a Reply