Введение в менеджер пакетов npm
Введение в npm
npm
— это стандартный менеджер пакетов для Node.js.
В сентябре 2022 года в реестре npm было зарегистрировано более 2,1 миллиона пакетов, что делает его крупнейшим в мире репозиторием кода на одном языке. Вы можете быть уверены, что существует пакет (практически!) для всего.
Изначально он предназначался для загрузки и управления зависимостями пакетов Node.js, но с тех пор стал инструментом, используемым также во фронтенд-разработке на JavaScript.
TIP
Yarn
и pnpm
являются альтернативами командной строке npm. Вы также можете ознакомиться с ними.
Пакеты
Установка всех зависимостей
Вы можете установить все зависимости, указанные в файле package.json
, выполнив следующую команду:
npm install
Это установит все необходимое для проекта в папке node_modules
, создав её, если она ещё не существует.
Установка отдельного пакета
Вы можете установить отдельный пакет, выполнив следующую команду:
npm install <package-name>
Кроме того, начиная с npm 5, эта команда добавляет <package-name>
в раздел dependencies
файла 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
заключается в том, что первые содержат инструменты разработки, например, библиотеку для тестирования, в то время как вторые поставляются с приложением в продакшене.
Что касается 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