Назад в блог

Использование модулей Node.js с npm и package.json: руководство

Использование модулей Node.js с npm и package.json: руководство

Node.js — это кроссплатформенная среда выполнения JavaScript с открытым исходным кодом. За последние несколько лет она стала популярным выбором для серверной веб-разработки благодаря своей высокой производительности ввода-вывода (I/O) и непревзойденному синтаксису JavaScript. Кроме того, ее адаптивный характер позволяет выполнять быструю настройку, что выделяет эту серверную технологию среди конкурентов.

Пакетный менеджер Node.js — Обзор

Node.js Package Manager или npm — это пакетный менеджер по умолчанию для JavaScript. Npm часто используется для установки скриптов проекта и управления внешними модулями в проекте Node.js. Кроме того, он отслеживает модули, установленные в проекте, с помощью файла package.json , который находится в директории проекта. Npm хранит и записывает следующую информацию:

  • Модули, необходимые для проекта, и их установленные версии, если таковые имеются.
  • Метаданные с описанием проекта, которые включают, помимо прочего, сведения об авторе и лицензии.
  • Исполняемые скрипты для автоматизации задач, связанных с проектом или ориентированных на конкретные цели.

В этом руководстве мы расскажем вам о шагах по использованию модулей Node.js с npm и package.json.

Давайте начнем!

Предварительные требования

Для выполнения этого руководства вам понадобится следующее:

Шаг 1. Создание файла package.json

Давайте начнем наше руководство с примера фиктивного проекта, использующего модуль locator для Node.js. Цель проекта — собрать IP-адрес пользователя и вывести страну его происхождения. Поскольку мы сосредоточены на понимании использования модулей Node.js с npm, нет необходимости писать модули вручную. Вместо этого мы будем использовать предустановленные и настраиваемые пакеты в нашем проекте.

JSON или JavaScript Object Notation — это стандартный формат, используемый для обмена и передачи данных. Сначала мы создадим файл JSON, который будет хранить программные зависимости и управлять ими. Однако создание package.json вручную — это трудоемкий процесс, требующий много времени. Для простоты мы будем использовать команду init для создания файла package.json вместо того, чтобы тратить усилия на написание дополнительных блоков кода для создания нашего JSON с нуля.

  • init команда

Сначала давайте создадим новую папку с помощью команды mkdir и назовем ее locator:

Затем используйте команду cd для перехода в только что созданную папку:

Затем введите npm для инициализации интерактивного запроса:

После этого вы увидите вывод:

Node.js Modules npm init 1

1. name

Вы будете перенаправлены к name вашего нового проекта (текущая папка). Вы увидите значения по умолчанию в скобках (). Чтобы это руководство оставалось простым и понятным, мы выберем варианты по умолчанию. Нажмите ENTER для подтверждения и продолжения.

2. version

Следующее значение — это version (версия), что является ключевым требованием, если вы делитесь своим проектом в репозитории пакетов npm.

Note: Пакеты Node.js следуют руководству по семантическому версионированию (semver).

First number: The MAJOR версия, которая меняется только при изменении API.

Second Number: The MINOR версия, которая меняется при добавлении новых функций.

Last number: The PATCH версия, которая меняется при исправлении ошибки или бага.

3. description

Поле description — это информативная строка, описывающая работу модуля Node.js. В нашей демонстрации проект locator будет получать IP-адрес пользователя и возвращать страну происхождения.

Note: В основном модули имеют файл index.js в качестве точки входа. Это также свойство main в package.json, точка входа для модулей npm. Однако, если package.json не найден, Node.js автоматически загрузит index.js .

4. test command

Это исполняемый скрипт или команда для запуска тестов вашего проекта. Поскольку тестирование выходит за рамки нашего руководства, давайте пропустим его и нажмем ENTER.

5. init command

Команда init запросит репозиторий GitHub для проекта. Опять же, давайте пропустим эту часть и продолжим.

6. keywords

Ключевые слова — это массив строк, используемых для поиска репозитория. Рекомендуется делать ключевые слова точными и соответствующими вашему проекту, чтобы их можно было легко отслеживать.

Перечислите эти ключевые слова в виде строк и разделите их запятыми. В нашем проекте введите ip, country, latitude, и longitude в командной строке, и вы увидите их в качестве ключевых слов в package.json.

7. author

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

  • Формат: "Имя \<Email\> (Сайт)".

    • Демо: "Paul\<paul@your_domain\> (https://your_domain)"

Добавление адреса электронной почты и веб-сайта необязательно. Тем не менее, вы можете указать действительного автора и добавить свои контактные данные в качестве author. Подтвердите данные и нажмите ENTER.

8. license

Поле license иллюстрирует юридические условия, которые пользователи должны знать при использовании вашего модуля. Поскольку Node.js модули имеют открытый исходный код, npm автоматически настраивает его на ISC-license.

Перейдите на страницу лицензий с открытым исходным кодом и выберите Open Source Initiative, которая лучше всего соответствует вашим потребностям. Введите UNLICENSED в командной строке, если вам не нужна лицензия для вашего репозитория. В нашем руководстве мы будем использовать лицензию ISC по умолчанию. Нажмите ENTER , чтобы завершить этот процесс.

Команда init создаст файл package.json и отобразит результат:

Node.js Modules npm init

Затем нажмите ENTER, чтобы продолжить и создать файл package.json . Наш JSON файл будет хранить записи обо всех модулях и пакетах, которые мы установим в нашем проекте.

На следующем шаге мы установим зависимости и модули Node.js.

Шаг 2. Установка зависимостей и модулей

Создание пользовательских внешних библиотек отнимает много времени и требует значительных усилий. В качестве альтернативы наиболее эффективным способом является установка предопределенных зависимостей и внешних библиотек. В нашем руководстве мы будем использовать библиотеку HTTP, чтобы позволить нашему демонстрационному модулю локатора делать внешний API-запрос для сбора географических данных.

В этом руководстве мы будем использовать библиотеку axios для выполнения HTTP-запросов. Сначала давайте установим axios:

Начните с установки пакета npm, а затем перечислите их через пробел. Также добавьте флаг --save , чтобы убедиться, что проект сохранен как зависимость проекта.

Вы увидите следующий вывод:

Node.js Modules install axios

Откройте файл package.json с помощью nano или любого другого текстового редактора по вашему выбору:

Обратите внимание на вновь добавленное свойство, выделенное в нижней части блока кода:

Node.js Modules package json

  • Загрузка зависимостей для разработки

Зависимости для разработки (development dependencies) — это пакеты, используемые при разработке проекта и не имеющие применения при его развертывании (production) или обслуживании. Хотя эти зависимости могут казаться неэффективными в рабочей среде, они играют важную роль в написании и переписывании кода.

Как и линтеры кода, зависимости для разработки играют жизненно важную роль в создании программного обеспечения. В основном разработчики используют code linters для поддержания единообразия и согласованности стилей во время разработки проекта, что в противном случае бесполезно в рабочей среде.

Давайте установим линтер в качестве зависимости для разработки вашего проекта. Также используйте флаг --save-dev, чтобы сохранить eslint в качестве зависимости, необходимой для разработки:

Мы добавили @6.0.0 к нашей зависимости, чтобы при обновлении модулей они помечались версией. Символ @ сообщит npm о необходимости поиска конкретного тега, который вы хотите установить. Теперь снова откройте файл package.json файл:

Вы увидите следующий вывод:

dev package json

  • Автоматически созданные файлы: node_modules и package-lock.json

В самом начале при установке пакета в проект Node.js файлы package.json и package-lock.json создаются автоматически. Проверьте наличие этих файлов в рабочем каталоге:

Поскольку большинство установленных зависимостей хранятся в node_modules папку, рекомендуется не добавлять эту папку в ваш репозиторий системы контроля версий. С увеличением количества установленных зависимостей размер node_modules также увеличивается.

И наоборот, файл package-lock.json хранит записи о точных установленных версиях, поэтому нет необходимости явно включать node_modules . В отличие от папки node_modules вы можете зафиксировать этот файл в своем репозитории системы контроля версий, поскольку он содержит подробное представление всех ваших зависимостей вместе с их версиями.

  • Установка с помощью package.json

Файлы package.json и package-lock.json позволяют настроить те же зависимости проекта перед началом разработки проекта. Перейдите в дерево каталогов и создайте новую папку на том же уровне каталога, что и locator. Назовите новую папку cloned_locator:

Затем перейдите в cloned_locator:

Импортируйте файлы package.json и package-lock.json из locator в cloned_locator:

Символ . означает текущую папку. Установите необходимые модули с помощью следующей команды:

Сначала npm проверит файл package-lock.json для установки модулей. Если lock-файл недоступен, он считывает файл package.json для определения устанавливаемых пакетов.

В целом, установка из package-lock.json выполняется просто, поскольку lock-файл содержит точные версии модулей и их зависимостей. Это означает, что при установке с использованием package.json, npm сэкономит дополнительное время, необходимое для поиска совместимой и стабильной версии.

Игнорируйте зависимости для разработки, добавив тег --production :

После этого вернитесь в locator:

  • Глобальные установки

До сих пор мы устанавливали модули npm локально. Однако у вас также есть альтернатива — устанавливать пакеты глобально и использовать их через команду оболочки или CLI. Например, вы можете управлять текущим проектом locator с помощью библиотеки Hexo и управлять своим статическим веб-сайтом. Используйте следующую команду с тегом -g для глобальной установки CLI Hexo :

Примечание: Если вы получаете ошибку при глобальной установке пакетов, попробуйте эту команду sudo npm i hexo-cli -g  с учетными данными суперпользователя (root).

Используйте следующую команду, чтобы убедиться, что пакет был успешно установлен:

Вы увидите вывод:

hexo version

Шаг 3: Управление и обновление модулей

Менеджер пакетов делает гораздо больше, чем просто устанавливает модули Node.js. Существует множество вариантов настройки, с помощью которых вы можете просматривать список, обновлять, удалять или даже добавлять уровень безопасности по своему усмотрению.

В этом разделе мы узнаем, как:

  1. Выводить список модулей

  2. Обновлять модули

  3. Удалять модули

  4. Проводить аудит модулей

Давайте обсудим каждый пункт подробно:

  1. Вывод списка модулей

Вывод списка модулей, как следует из названия, предоставит вам подробную информацию обо всех модулях, установленных в проекте. Вместо чтения файла package.json вы можете использовать команду ls или list для подробного ознакомления с модулями вашего проекта:

Вы увидите вывод:

npm list op

По умолчанию команда ls выводит все дерево зависимостей, которое включает зависимости проекта и модули, от которых они зависят. Однако вы также можете получить общий обзор и явно нацелиться на конкретный модуль. Используйте следующую команду, чтобы проверить установленные вами модули без их зависимостей:

Вы увидите вывод:

npm list depth zero

  1. Обновление модулей

Всегда рекомендуется обновлять модули npm, чтобы не сталкиваться со сбоями или конфликтами программного обеспечения. Используйте следующую команду, чтобы проверить необходимость обновления:

Вы увидите вывод:

Outdated

Давайте подробно разберем каждый термин:

  • Пакет (Package): Здесь перечислены текущие Package , установленные в вашем проекте.
  • Текущая версия (Current): Здесь показана Current версия пакета.
  • Требуемая версия (Wanted): Показывает версию, которую npm версию, которая лучше всего соответствует требованиям к версии в package.json.
  • Latest: Она показывает последнюю выпущенную версию npm, которую вам необходимо обновить при необходимости.
  • Location: Пакет Location в дереве зависимостей.

Как и предлагалось, мы можем обновить наш npm до стабильной версии. Используйте следующую команду для обновления текущего пакета:

Вы увидите вывод:

update eslint

Вместо того чтобы обновлять их по одному, вы также можете обновить все модули сразу с помощью up команды:

  1. Удаление модулей

Часто зависимость может не давать ожидаемого результата, и вам требуется создать настроенную зависимость. В таких сценариях у вас есть возможность удалить зависимости из ваших файлов package.json и package-lock.json файлов. Предположим, у вас есть axios в качестве зависимости, и она не дает удовлетворительного результата. Вы, несомненно, удалите этот репозиторий из своего проекта. Используйте команду uninstall или un для удаления axios:

Вы увидите вывод:

Uninstall axios

Хотя команда uninstall удалила зависимость, мы не получили никакого уведомления о ее удалении. Давайте выведем список зависимостей, чтобы посмотреть, сколько их у нас сейчас:

Вы увидите вывод, в котором зависимость axios отсутствует в списке:

npm list

  1. Аудит модулей

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

Вы увидите вывод с предложением исправить угрозы или уязвимости:

add request

Чтобы просмотреть подробную информацию об уязвимостях и угрозах, используйте audit команду:

Вы увидите подробный отчет по безопасности:

Node.js Modules Audit security report

Чтобы устранить эти уязвимости, используйте fix команду:

Вы увидите вывод:

audit update

Вы могли заметить, что две из девяти уязвимостей были устранены. Однако оставшиеся семь уязвимостей сохраняются в ваших зависимостях, поскольку audit fix не решает все проблемы. Чтобы решить эту проблему, вам может потребоваться обновить зависимость до более высокой версии с использованием другого API. Будьте осторожны при обновлении, так как существует вероятность того, что вы можете нарушить работу кода выше по дереву зависимостей. Используйте следующую команду, чтобы подтвердить, что уязвимости исчезли:

Будьте внимательны при использовании другого API для устранения угроз уязвимостей, потому что, если вы не уверены в этом, это может привести к нарушению функциональности кода.

Заключение

В заключение мы продемонстрировали, как использовать модули Node.js с npm и package.json. Кроме того, мы рассмотрели методы вывода списка, обновления, управления, аудита и удаления зависимостей наших пакетов. В качестве следующего шага мы рекомендуем вам использовать концепции, описанные в этом руководстве, и поэкспериментировать с самостоятельной установкой и тестированием пакетов. Вы также можете попробовать создавать приложения Node.js и настраивать зависимости, чтобы повысить свой уровень знаний.

Кроме того, существует множество других учебных материалов по темам Node.js и JavaScript, которые вы можете найти в нашем блоге:

Приятной работы!

author

Preslav Dobrev

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.