Введение в разработку на 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