HTML / CSSJavaScriptNode jsПаттерны проектированияПрактические

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// Создаем веб сервер с помощью фреймворка express
2// получаем модуль Express
3const express = require("express");
4// создаем приложение
5const app = express();
6
7// устанавливаем обработчик для маршрута "/"
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 [название_команды]
Hello