Skip to content

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

Введение в npm

npm — это стандартный менеджер пакетов для Node.js.

В сентябре 2022 года в реестре npm было зарегистрировано более 2,1 миллиона пакетов, что делает его крупнейшим в мире репозиторием кода на одном языке. Вы можете быть уверены, что существует пакет (практически!) для всего.

Изначально он предназначался для загрузки и управления зависимостями пакетов Node.js, но с тех пор стал инструментом, используемым также во фронтенд-разработке на JavaScript.

TIP

Yarn и pnpm являются альтернативами командной строке npm. Вы также можете ознакомиться с ними.

Пакеты

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

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

bash
npm install

Это установит все необходимое для проекта в папке node_modules, создав её, если она ещё не существует.

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

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

bash
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, то разница в том, что сбой сборки зависимости не приведёт к сбою установки. Но ваша программа отвечает за обработку отсутствия зависимости. Подробнее об необязательных зависимостях.

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

Обновление также легко выполняется с помощью команды:

bash
npm update

Это обновит все зависимости до их последних версий.

Вы также можете указать один пакет для обновления:

bash
npm update <package-name>

Удаление пакетов

Чтобы удалить пакет, можно выполнить команду:

bash
npm uninstall <package-name>

Версионирование

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

Часто библиотека совместима только с основным релизом другой библиотеки.

Или ошибка в последнем релизе библиотеки, ещё не исправленная, вызывает проблему.

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

Во всех этих случаях версионирование очень помогает, и npm следует стандарту семантического версионирования (semver).

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

bash
npm install <package-name>@<version>

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

bash
npm install <package-name>@latest

Запуск задач

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

bash
npm run <task-name>

Например, если у вас есть файл package.json со следующим содержимым:

json
{
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  }
}

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

json
{
  "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"
  }
}

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

bash
npm run watch
npm run dev
npm run prod