Пакетный менеджер npm и управление пакетами

Последнее обновление: 22.11.2023

Кроме встроенных и кастомных модулей Node.js существует огромный пласт различных библиотек и фреймворков, разнообразных утилит, которые создаются сторонними производителями и которые также можно использовать в проекте, например, express, grunt, gulp и так далее. И они тоже нам доступны в рамках Node.js. Чтобы удобнее было работать со всеми сторонними решениями, они распространяются в виде пакетов. Пакет по сути представляет набор функциональностей.

Для автоматизации установки и обновления пакетов, как правило, применяется система управления пакетами или менеджеры. Непосредственно в Node.js для этой цели используется пакетный менеджер NPM (Node Package Manager). NPM по умолчанию устанавливается вместе с Node.js, поэтому ничего доустанавливать не требуется. Но можно обновить установленную версию до самой последней. Для этого в командной строке/терминале надо запустить следующую команду:

npm install npm@latest -g

Чтобы узнать текущую версию npm, в командной строке/терминале надо ввести следующую команду:

npm -v

Для нас менеджер npm важен в том плане, что с его помощью легко управлять пакетами.

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

Для установки пакета через npm применяется команда npm install, после которой указываются пакеты

npm install имя_пакета1 имя_пакета2 имя_пакетаN

В качестве демонстрации будем устанавливать пакет lodash. Lodash представляет собой библиотеку, которая позволяет манипулировать данными, в частности, массивами. Кому интересно, может подробнее узнать на официальном сайте библиотеки - https://lodash.com/.

Допустим, для проекта где-нибудь в файловой системе определим каталог app и перейдем в терминале/командной строке к папке проекта с помощью команды cd. Затем для установки Lodash в проект введем команду

npm install lodash

После установки express в папке проекта app появится подпапка node_modules, в которой будут хранится все установленные внешние модули. В частности, в подкаталоге node_modules/lodash будут располагаться файлы библиотеки Lodash.

NPM в Node.js

Кроме того, при установке пакета в папку проекта добавляется файл package.json. После добавления lodash в нашем случае он будет иметь примерно следующий вид:

{
  "dependencies": {
    "lodash": "^4.17.21"
  }
}

Файл package.json представляет собой объект-конфигурацию в формате json, где каждое свойство представляет отдельную секцию. Так, здесь определена секция "dependencies", которая хранит установленные пакеты. И здесь мы видим, что у нас установлен пакет "lodash", а версия пакета - "^4.17.21".

Также в проекте создан еще один файл - package-lock.json. Этот файл автоматически генерируется при любых операциях, в которых npm изменяет файл package.json и структуру каталогов/файлов в каталоге node_modules. Данный файл упрощает для npm управление пакетами.

После установке библиотеки lodash мы можем ее использовать. Так, определим в папке проекта файл app.js со следующим кодом:

const lodash = require("lodash")

const people = ["Tom", "Sam", "Bob"];
const employees = ["Tom", "Alice", "Sam"];

// объединение массивов - в результате только уникальные значения
const result1 = lodash.union(people, employees);
console.log(result1);    // [ "Tom", "Sam", "Bob", "Alice" ]

// пересечение массивов - в результате только общие значения
const result2 = lodash.intersection(people, employees);
console.log(result2);    // [ "Tom", "Sam" ]

Поскольку мы установили библиотеку lodash через npm, то мы можем получить соответствующий модуль через выражение require:

const lodash = require("lodash")

Затем мы можем обращаться к функциям этого модуля. Для демонстрации здесь применяется функция uninon, которая объединяет два массива (множества) и возвращает новое множество только с уникальными значениями. А функция intersection() также применяется к массивам, но возвращает множество, которое содержит только общие для всех массивов элементы.

В консоли запустим файл app.js командой node app.js:

c:\app> node app.js
[ "Tom", "Sam", "Bob", "Alice" ]
[ "Tom", "Sam" ]
c:\app> 

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

npm uninstall пакет1 пакет2 пакетN

Например, удалим ранее установленный lodash:

npm uninstall lodash

Если после удаления мы откроем папку node_modules, то увидим, что она пустая. И также изменится файл package.json - он будет содержать пустой объект:

{}

Получение информации о пакете

С помощью команды npm info [пакет] можно получить информацию об определенном пакете. Например, получим информацию о пакете lodash:

c:\app> npm info lodash

lodash@4.17.21 | MIT | deps: none | versions: 114
Lodash modular utilities.
https://lodash.com/

keywords: modules, stdlib, util

dist
.tarball: https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz
.shasum: 679591c564c3bffaae8454cf0b3df370c3d6911c
.integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
.unpackedSize: 1.4 MB

maintainers:
- mathias <mathias@qiwi.be>
- jdalton <john.david.dalton@gmail.com>
- bnjmnt4n <benjamin@dev.ofcr.se>

dist-tags:
latest: 4.17.21  

published over a year ago by bnjmnt4n <benjamin@dev.ofcr.se>

c:\app> 

Здесь мы видим большой массив данных типа версии, лицензии, кто поддерживает, кто и когда опубликовал, размер пакета, домашнюю страницу.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850