Введение в менеджер пакетов npm
Знакомство с npm
npm
- это стандартный менеджер пакетов для Node.js.
В сентябре 2022 года в реестре npm было зарегистрировано более 2,1 миллиона пакетов, что делает его крупнейшим в мире хранилищем кода на одном языке, и вы можете быть уверены, что там есть пакет (почти!) для всего.
Он начинался как способ загрузки и управления зависимостями пакетов Node.js, но с тех пор стал инструментом, используемым также во frontend JavaScript.
TIP
Yarn
и pnpm
являются альтернативами npm cli. Вы также можете их проверить.
Пакеты
Установка всех зависимостей
Вы можете установить все зависимости, перечисленные в вашем файле package.json
, выполнив команду:
npm install
она установит все, что нужно проекту, в папку node_modules
, создав ее, если она еще не существует.
Установка отдельного пакета
Вы можете установить отдельный пакет, выполнив команду:
npm install <имя-пакета>
Кроме того, начиная с npm 5, эта команда добавляет <имя-пакета>
в зависимости файла package.json
. До версии 5 вам нужно было добавить флаг --save
.
Часто вы увидите больше флагов, добавленных к этой команде:
--save-dev
(или-D
), который добавляет пакет в разделdevDependencies
файлаpackage.json
.--no-save
, который предотвращает сохранение пакета в файлpackage.json
.--no-optional
, который предотвращает установку необязательных зависимостей.--save-optional
, который добавляет пакет в разделoptionalDependencies
файлаpackage.json
.
Также можно использовать сокращения флагов:
-S
:--save
-D
:--save-dev
-O
:--save-optional
Разница между devDependencies и dependencies заключается в том, что первые содержат инструменты разработки, такие как библиотека тестирования, а вторые поставляются вместе с приложением в production.
Что касается optionalDependencies, то разница в том, что сбой сборки зависимости не приведет к сбою установки. Но ваша программа несет ответственность за обработку отсутствия зависимости. Подробнее об необязательных зависимостях.
Обновление пакетов
Обновление также упрощается путем запуска
npm update
Это обновит все зависимости до последней версии.
Вы также можете указать один пакет для обновления:
npm update <package-name>
Удаление пакетов
Чтобы удалить пакет, вы можете запустить:
npm uninstall <package-name>
Версионность
В дополнение к обычным загрузкам, npm
также управляет версиями, поэтому вы можете указать любую конкретную версию пакета или требовать версию выше или ниже, чем вам нужно.
Часто вы обнаружите, что библиотека совместима только с основной версией другой библиотеки.
Или ошибка в последней версии библиотеки, все еще не исправленная, вызывает проблему.
Указание явной версии библиотеки также помогает поддерживать у всех одну и ту же версию пакета, чтобы вся команда работала с одной и той же версией до тех пор, пока не будет обновлен файл package.json
.
Во всех этих случаях версионность очень помогает, и npm
следует стандарту семантического версионирования (semver).
Вы можете установить конкретную версию пакета, запустив
npm install <package-name>@<version>
Вы также можете установить последнюю версию пакета, запустив
npm install <package-name>@latest
Запуск задач
Файл package.json поддерживает формат для указания задач командной строки, которые можно запустить с помощью
npm run <task-name>
Например, если у вас есть файл package.json со следующим содержимым:
{
"scripts": {
"start": "node index.js",
"test": "jest"
}
}
Очень часто эта функция используется для запуска 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