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