Node.js

Установка пакетов, package.json и node_modules

Короткий ответ: npm install устанавливает зависимости Node.js-проекта. Если вы указываете имя пакета, npm скачивает этот пакет и записывает его в package.json. Если запускаете npm install без имени пакета, npm читает уже существующий package.json и восстанавливает все зависимости проекта

Этот материал закрывает запросы «npm install», «как скачать npm через консоль», «как установить модуль node js», «npm установить», «установка npm windows» и похожие хвосты. Важно не путать две вещи: npm как инструмент обычно ставится вместе с Node.js, а npm install — это команда, которая ставит пакеты внутрь конкретного проекта

Что такое npm в проекте

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

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

Подготовьте папку

Создайте новую папку и инициализируйте проект

mkdir npm-install-demo
cd npm-install-demo
npm init -y

Команда npm init -y создает package.json. Это не код программы, а описание проекта. В нем npm хранит имя, версию, команды запуска и список зависимостей

Установите первый пакет

Поставим пакет slugify, который превращает текст в удобную строку для адресов

npm install slugify

После установки в проекте появятся или изменятся три важные вещи

  • package.json — здесь появится зависимость slugify
  • package-lock.json — здесь npm зафиксирует точные версии пакетов
  • node_modules — сюда npm скачает код установленных пакетов

Фрагмент package.json будет выглядеть примерно так

{
  "dependencies": {
    "slugify": "^1.6.6"
  }
}

Версия может отличаться, и это нормально. Главное, что зависимость появилась в списке

Используйте пакет в коде

Создайте файл index.js

const slugify = require("slugify");

const title = "Как работает npm install";
const slug = slugify(title, {
  lower: true,
  strict: true
});

console.log(slug);

Запустите файл

node index.js

Ожидаемый вывод

kak-rabotaet-npm-install

Теперь видно, зачем вообще нужна установка пакета: мы подключили готовую функцию и использовали ее в своем коде

Что делает npm install без имени пакета

Если вы скачали чужой проект с GitHub или перенесли проект на другой компьютер, папки node_modules обычно нет. Ее не хранят в репозитории, потому что она может быть огромной

В такой ситуации достаточно открыть папку проекта и выполнить

npm install

npm прочитает package.json и package-lock.json, скачает зависимости и восстановит node_modules. Поэтому в большинстве инструкций по запуску Node.js-проектов сначала идет npm install, а потом npm start

Когда использовать npm install с флагами

Для обычной зависимости используйте

npm install express

Для зависимости, которая нужна только во время разработки, например тестовый инструмент, используйте

npm install eslint --save-dev

В современных версиях npm обычная запись зависимости происходит автоматически. Старые инструкции с --save чаще всего уже не нужны, хотя сама команда может работать

Чем npm install отличается от npm start

npm install устанавливает зависимости. npm start запускает команду из раздела scripts в package.json. Это две разные операции, но новички часто смешивают их из-за одинакового слова npm

Пример package.json

{
  "scripts": {
    "start": "node index.js"
  }
}

После этого команда

npm start

запустит node index.js

Мини-практика

Создайте новый проект, установите slugify, напишите файл index.js и получите slug для любой русской или английской фразы. Затем удалите папку node_modules, выполните npm install без имени пакета и снова запустите node index.js

Так вы увидите два сценария: установка нового пакета и восстановление зависимостей уже существующего проекта

Частые ошибки

npm не найден Проверьте node -v и npm -v. Если npm не установлен, установите Node.js заново с официального сайта или через менеджер версий

Команда запускается не в той папке Если рядом нет package.json, npm не понимает, какие зависимости относятся к проекту. Откройте терминал в корне проекта

node_modules случайно добавили в архив или репозиторий Обычно эту папку не переносят руками. Хранят package.json и package-lock.json, а зависимости восстанавливают через npm install

После установки пакет не подключается Проверьте имя пакета и способ подключения. Одни пакеты работают через require(), другие через import, а некоторые требуют настройки "type": "module" в package.json

Что почитать дальше по Node.js

Если нужен общий маршрут по теме, откройте рубрику Node.js. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x