Введение в менеджер пакетов npm

Введение в npm

npm — стандартный менеджер пакетов для Node.js.
В сентябре 2022 года в реестре npm было зарегистрировано более 2,1 миллиона пакетов, что сделало его крупнейшим одноязычным хранилищем кода на Земле, и вы можете быть уверены, что есть пакет для (почти!) всего.
Он начинался как способ загрузки и управления зависимостями пакетов Node.js, но с тех пор стал инструментом, используемым также во внешнем JavaScript.
Yarn и pnpm — альтернативы npm cli. Вы также можете посмотреть на них.

Пакеты

npm управляет загрузкой зависимостей вашего проекта.

Установка всех зависимостей

Если в проекте есть package.json файл, запустив

npm install

он установит все, что нужно проекту, в папку node_modules, создав её, если она ещё не существует.

Установка одного пакета

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

npm install package-name

Более того, начиная с npm 5, эта команда добавляет package-name к package.json файлам зависимости . До версии 5 вам нужно было добавить флаг --save.
Часто к этой команде добавляются дополнительные флаги:
--save-dev устанавливает и добавляет запись в package.jsonфайл devDependencys
--no-save устанавливает, но не добавляет запись в зависимостиpackage.json файлов
--save-optional устанавливает и добавляет запись в package.jsonфайл необязательных зависимостей
--no-optional предотвратит установку дополнительных зависимостей
Также можно использовать сокращения флагов:
-S:--save
-D:--save-dev
-O:--save-optional
Разница между devDependency и зависимостями заключается в том, что первый содержит инструменты разработки, такие как библиотека тестирования, а второй входит в состав рабочего приложения.
Что касается опциональных зависимостей, разница в том, что сбой сборки зависимости не приведет к сбою установки. Но ответственность за устранение этой зависимости лежит на вашей программе.

Обновление пакетов

Обновление также упрощается, запустив

npm update

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

npm update package-name

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

Помимо простых загрузок, npm также управляет версиями , поэтому вы можете указать любую конкретную версию пакета или потребовать версию выше или ниже той, которая вам нужна.
Вы часто обнаружите, что библиотека совместима только с основной версией другой библиотеки.
Или ошибка в последней версии библиотеки, которая до сих пор не исправлена, вызывает проблему.
Указание явной версии библиотеки также помогает всем использовать одну и ту же версию пакета, так что вся команда будет использовать одну и ту же версию до тех пор, пока файл package.json не будет обновлен.
Во всех этих случаях управление версиями очень помогает и npm соответствует стандарту семантического управления версиями (semver).
Вы можете установить определенную версию пакета, запустив

npm install @

Запуск задач

Файл package.json поддерживает формат для указания задач командной строки, которые можно запускать с помощью

npm run 

Например:

{
  "scripts": {
    "start-dev": "node lib/server-development",
    "start": "node lib/server-production"
  }
}

Эту функцию очень часто используют для запуска Webpack:

{
  "scripts": {
    "watch": "webpack --watch --progress --colors --config webpack.conf.js",
    "dev": "webpack --progress --colors --config webpack.conf.js",
    "prod": "NODE_ENV=production webpack -p --config webpack.conf.js"
  }
}

Поэтому вместо того, чтобы вводить длинные команды, которые легко забыть или ошибиться, вы можете запустить

$ npm run watch
$ npm run dev
$ npm run prod

Обсуждение закрыто.