NPM. Package.json. Установка модулей. Определение команд
Кроме встроенных и кастомных модулей Node.js существует огромный пласт различных библиотек и фреймворков, разнообразных утилит, которые создаются сторонними производителями и которые также можно использовать в проекте, например, express, grunt, gulp и так далее. И они тоже нам доступны в рамках Node.js. Чтобы удобнее было работать со всеми сторонними решениями, они распространяются в виде пакетов. Пакет по сути представляет набор функциональностей.
Для автоматизации установки и обновления пакетов, как правило, применяются систему управления пакетами или менеджеры.
Непосредственно в Node.js
для этой цели используется пакетный менеджер NPM
(https://www.npmjs.com/) (Node Package Manager).
NPM по умолчанию устанавливается вместе с Node.js, поэтому ничего устанавливать не требуется.
Чтобы узнать текущую версию npm, в командной строке/терминале надо ввести следующую команду:
1npm -v
package.json
Для более удобного управления конфигурацией и пакетами приложения в npm
применяется файл конфигурации package.json
.
Так, добавим в папку нашего проекта новый файл package.json
.
Для этого в командной строке/терминале напишем следующую команду:
1npm init
После этого в командной строке/терминале появятся подсказки: Вы можете ввести данные вручную или же нажать enter что бы пропустить и сгенерировать их автоматически.
Далее для примера установим в проект express
.
Express
представляет легковесный веб-фреймворк для упрощения работы с Node.js
.
Для установки в командной строке/терминале нужно перейти в каталог проекта и выполнить следующие команды:
1npm install express
После установки express в папке вашего проекта появится подпапка node_modules
, в которой будут хранится все установленные внешние модули.
В частности, в подкаталоге node_modules/express
будут располагаться файлы фреймворка Express
.
После установки, если мы откроем файл package.json
, то мы увидим информацию о пакете:
1{2"dependencies": {3 "express": "^4.17.1"4 }5}
Информация обо всех добавляемых пакетах, которые используются при работе приложения, добавляется в секцию dependencies
.
Для использования установленного пакета нам необходимо воспользоваться функцией require
1// Создаем веб сервер с помощью фреймворка express2// получаем модуль Express3const express = require("express");4// создаем приложение5const app = express();67// устанавливаем обработчик для маршрута "/"8app.get("/", function(request, response){9 response.end("Hello from Express!");10});11// начинаем прослушивание подключений на 3000 порту12app.listen(3000);
Первая строка получает установленный модуль express, а вторая создает объект приложения.
В Express
мы можем связать обработку запросов с определенными маршрутами. Например, "/" - представляет главную страницу или корневой маршрут.
Для обработки запроса вызывается функция app.get()
.
Первый параметр функции - маршрут, а второй - функция, которая будет обрабатывать запрос по этому маршруту.
И чтобы сервер начал прослушивать подключения, надо вызвать метод app.listen()
, в который передается номер порта.
Добавление множества пакетов
Файл package.json
играет большую роль и может облегчить работу с пакетами в различных ситуациях.
Например, мы планируем использовать множество пакетов. Мы можем определить все пакеты в файле package.json
и потом одной командой их установить.
Для загрузки всех пакетов выполнить команду:
1npm install
Эта команда возьмет определение всех пакетов из секций dependencies
и загрузит их в проект.
Если пакет с нужной версией уже есть в проекте, то по новой он не загружается.
devDependencies
Кроме пакетов, которые применяются в приложении, когда оно запущено и находится в рабочем состояни,
например, express, то есть в состоянии "production",
есть еще пакеты, которые применяются при разработке приложения и его тестировании.
Такие пакеты, как правило, добавляются в другую секцию - devDependencies
.
Например, загрузим в проект пакет jest
, который используется для тестирования приложения:
1npm install jest --save-dev
Флаг --save-dev
указывается, что информацию о пакете следует сохранить именно в секции devDependencies
файла package.json:
1{2"devDependencies": {3"prettier": "2.1.2",4 "jest": "^26.6.3"5 }6}
Удаление пакетов
Для удаления пакетов используется команда npm uninstall
. Например:
1npm uninstall expresss
Если нам надо удалить не один пакет, а несколько, то мы можем удалить их определение из файла package.json
и ввести команду npm install
,
и удаленные из package.js
пакеты также будут удалены из папки node_modules
.
Команды NPM
NPM позволяет определять в файле package.json
команды, которые выполняют определенные действия. Например, добавим скрипт для запуска нашего веб сервера из предыдущих заданий:
1{2"scripts" : {3 "start" : "node app.js"4 }5}
Здесь добавлена секция scripts, которая определяет две команды. Вообще команд может быть много в соответствии с целями и задачами разработчика.
Первая команда называется start. Она по сути выполняет команду node app.js, которая выполняет код в файле app.js
Названия команд могут быть произвольными. Но здесь надо учитывать один момент. Есть условно говоря есть зарезервированные названия для команд, например, start, test, run и ряд других. Их не очень много. И как раз первая команда из выше определенного файла package.json называется start. И для выполнения подобных команд в терминале/командной строке надо выполнить команду
1npm [название_команды]
1npm start
Команды с остальными названия, как например, "dev" запускаются так:
1npm run [название_команды]