Меню

Как настроить package json



Анатомия файла package.json

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

Запуск проекта

Самый простой и быстрый способ запустить проект с помощью менеджера пакетов npm – это использовать команду init и флаг -y, который отвечает yes на все вопросы системы:

Примечание: Название проекта будет таким же, как и название текущей папки, в которой вы находитесь.

Команда init запишет файл package.json в текущий каталог с кодом JSON, который выглядит следующим образом:

<
«name»: «hello-alligator»,
«version»: «1.0.0»,
«description»: «»,
«main»: «index.js»,
«scripts»: <
«test»: «echo \»Error: no test specified\» && exit 1″
>,
«keywords»: [],
«author»: «»,
«license»: «ISC»
>

Давайте рассмотрим каждый ключ в исходном файле package.json:

  • name: имя проекта, должно быть написано строчными буквами и подходить для URL. Имя может иметь префикс области видимости (например @angular/angular-cli). Если проект частный, имя проекта выбирать необязательно, но если проект будет опубликован, имя нужно обязательно, и оно должно быть уникальным в репозитории npm.
  • version: номер версии, который должен быть понятен для node-semver. Это также необязательно для частных проектов, но обязательно и очень важно для публичных.
  • description: описание проекта. Это опциональное поле. Оно полезно и помогает быстро найти проект в репозитории.
  • main: входной файл проекта.
  • scripts: ключ scripts ожидает объект с именами скриптов в качестве ключей и командами в качестве значений. Он нужен для указания сценариев, которые можно запускать непосредственно из командной строки и которые могут выполнять всевозможные задачи (запуск проекта на локальном сервере, сборка для производства или проведение тестов). Поле scripts – это то место, где вручную можно внести большинство изменений в типичный файл package.json.
  • keywords: это массив, помогающий найти модуль в репозитории npm.
  • author: это поле принимает объект с ключами name, email и url. Это позволяет людям легко связаться с автором проекта.
  • license: принимает название лицензии с использованием идентификатора SPDX. По умолчанию применяется лицензия ISC, еще один популярный выбор – это MIT. Вы также можете использовать UNLICENSED для частных проектов и проектов с закрытым кодом.

Управление зависимостями

Основная сила npm – это возможность легко управлять зависимостями проекта. Поэтому вполне естественно, что файл package.json сосредоточен в основном на перечислении зависимостей. Существуют обычные зависимости, а также devDependencies, peerDependencies, optionalDependencies и bundledDependencies. Пройдемся по ним подробнее:

  • dependencies: обычные зависимости проекта. Именно здесь, скорее всего, будет находиться основная часть ваших зависимостей. Добавить такие зависимости в свой проект можно с помощью $ npm install my-dependency.
  • devDependencies: зависимости, которые нужны только при разработке проекта. Например, библиотеки тестирования и транспайлеры чаще всего следует добавлять как devDependencies. Добавить devDependency можно с помощью флага npm –save-dev с командой install.
  • optionalDependencies: зависимости, которые npm должен рассматривать как опциональные. Если такие зависимости не установлены, npm не будет жаловаться или выдавать ошибку. Добавить опциональные зависимости можно с помощью –save-optional в команде install.
  • bundledDependencies: ожидает массив имен пакетов, которые будут связаны с проектом. Используйте флаг –save-bundle с командой install, чтобы зависимость была добавлена ​​в список bundledDependencies.
  • peerDependencies: одноранговые зависимости нужны для определения модулей, от которых зависит ваш проект. При отсутствии одноранговых зависимостей npm выдаст предупреждение.

Как вы, наверное, видели раньше, зависимости могут принимать разные форматы, что позволяет указать версии или диапазон версий, которые можно использовать. Например:

  • 2.4.2: точная версия 2.4.2
  • ^2.4.2: последняя версия, совместимая с 2.4.2

2.4.2: проект работает с версиями 2.4.2, 2.4.3, 2.4.4,…

2.4: задает версии 2.4, 2.5, 2.6,…

  • 2.4.x: работает с любой патч-версией пакета 2.4.
  • 2.x: задает любую младшую версию для версии 2.
  • >=2.4: версия 2.4 и выше. Вы также можете использовать символы .
  • 2.4.2 3.1.1: любая версия в диапазоне от 2.4.2 до 3.1.1
  • Чтобы задать сразу несколько диапазонов версий, разделите их с помощью ||.

    Источник

    Управление модулями Node.js с помощью npm и package.json

    Благодаря высокой производительности ввода/вывода (I/O), хорошо известному синтаксису JavaScript и другим удобным функциям Node.js быстро стал популярной средой выполнения для веб-разработки бэкенда. Но по мере роста изначально сложного приложения управлять его кодовой базой и ее зависимостями становится все труднее. Node.js решает эту проблему с помощью модулей. Модули – это отдельные файлы JavaScript, содержащие функции или объекты, которые могут использоваться другими программами или модулями. Набор из одного или нескольких модулей обычно называется пакетом, такими пакетами обычно управляют менеджеры пакетов.

    npm (или Node.js Package Manager) – это самый популярный стандартный менеджер пакетов в экосистеме Node.js. В основном он используется для установки и управления внешними модулями в проектах, а также для установки широкого спектра инструментов CLI и запуска сценариев. npm отслеживает установленные в проекте модули с помощью файла package.json, который находится в каталоге проекта и содержит:

    • Все необходимые проекту модули и их установленные версии.
    • Все метаданные проекта, такие как автор, лицензия и т.п.
    • Скрипты, которые можно запускать для автоматизации задач в рамках проекта.

    По мере усложнения проектов Node.js файл package.json становится особенно важным: он обеспечивает удобное управление метаданными и зависимостями, а также предоставляет вам более предсказуемые сборки, поскольку все внешние зависимости не изменятся. Файл будет автоматически отслеживать всю нужную информацию.

    Редактировать этот файл можно и напрямую, но вам редко придется это делать.

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

    Требования

    Для работы вам понадобится установка Node.js на вашей машине разработки. Здесь мы используем версию 10.17.0. Чтобы установить Node.js на macOS, следуйте мануалу Установка Node.js и настройка локальной среды разработки в macOS. Чтобы установить Node.js в Ubuntu 18.04 с помощью архива PPA, читайте Установка Node.js в Ubuntu 18.04.

    Пакетный менеджер npm устанавливается вместе с Node.js; в руководстве мы используем его версию 6.11.3.

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

    Мы начнем нашу работу с создания тестового проекта – вымышленного модуля Node.js по имени locator, который принимает IP-адрес пользователя и возвращает страну происхождения этого адреса. Писать код модуля вам не придется: мы просто примем такой условный контекст, чтобы рассмотреть пакеты, которые были бы актуальны в подобном проекте.

    Сначала создайте файл package.json для хранения метаданных о проекте и управления зависимыми модулями проекта Node.js. Как следует из расширения, это файл JSON (JavaScript Object Notation) – это стандартный формат для совместного использования кода, основанный на объектах JavaScript; JSON состоит из данных, хранящихся в виде пар «ключ-значение».

    Читайте также: Основы работы с JSON

    Поскольку файл package.json содержит множество свойств, его может быть сложно создать вручную с нуля, без шаблона. Чтобы упростить вам работу, npm предоставляет команду init. Это интерактивная команда, которая задает пользователю ряд вопросов и на основе полученных ответов создает файл package.json.

    Команда init

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

    Перейдите в нее:

    Теперь инициализируйте интерактивную командную строку:

    Примечание: Если вы собираетесь использовать Git для контроля версий вашего кода, сначала создайте репозиторий Git, а затем запустите команду npm init. Команда автоматически поймет, что находится в папке с поддержкой Git. Если у вас установлен удаленный репозиторий Git, команда автоматически заполнит в файле package.json поля repository, bugs и homepage. Если вы инициализировали репозиторий после создания файла package.json, вам придется добавить эту информацию самостоятельно.

    Читайте также:

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

    This utility will walk you through creating a package.json file.

    It only covers the most common items, and tries to guess sensible defaults.

    See `npm help json` for definitive documentation on these fields

    and exactly what they do.

    Use `npm install

    ` afterwards to install a package and

    save it as a dependency in the package.json file.

    Press ^C at any time to quit.

    package name: (locator)

    Сначала вам будет предложено ввести название нового проекта. По умолчанию команда предполагает, что это имя папки, в которой вы находитесь в данный момент. Значения по умолчанию для каждого свойства указаны в скобках (). Поскольку значение name по умолчанию нам подходит, нажмите Enter, чтобы принять его.

    Следующее значение, которое нужно ввести, – это version, версия. Как и name, это поле обязательно нужно заполнить, если ваш проект будет доступен другим пользователям в репозитории пакетов npm.

    Примечание: Пакеты Node.js должны соответствовать семантическому управлению версиями (Semantic Versioning, semver). Исходя из этого, первое число в номере версии – это версия MAJOR (оно изменяется только при изменении API). Второе число – версия MINOR (изменяется при добавлении функций). Последнее число в номере версии – версия PATCH (это число изменяется при исправлении ошибок).

    Нажмите Enter, чтобы принять номер версии по умолчанию.

    Следующее поле – описание, description – полезная строка, объясняющая, что умеет этот модуль Node.js. Наш вымышленный проект locator принимает IP-адрес пользователя и возвращает страну происхождения этого адреса. Потому в поле description можно ввести что-то вроде:

    Finds the country of origin of the incoming request

    и нажать Enter. Описание очень помогает при поиске модулей.

    В следующем запросе команда предложит указать точку входа, entry point. Если кто-то установит ваш модуль и объявит его зависимостью проекта, то значение entry point будет первой частью загруженной программы. Здесь следует указать относительный путь к файлу JavaScript, который будет добавлен в свойство main в package.json. Нажмите Enter, чтобы сохранить значение по умолчанию.

    Затем вам будет предложено указать test command – это исполняемый скрипт или команда для тестового запуска вашего проекта. Многие популярные модули Node.js тестируются с помощью Mocha, Jest, Jasmine или других тестовых фреймворков. Тестирование выходит за рамки данной статьи, потому пока что оставьте этот параметр пустым и нажмите Enter, чтобы продолжить.

    Потом команда init запросит репозиторий проекта на GitHub. В этом мануале мы не будем использовать его, поэтому также оставьте поле пустым.

    После репозитория команда запрашивает ключевые слова, keywords. Это свойство представляет собой массив строк, содержащий полезные термины, которые люди могут использовать для поиска вашего проекта. Лучше всего использовать здесь небольшой набор слов, действительно имеющих отношение к вашему проекту – тогда поиск будет более точным.

    Перечислите эти ключевые слова через запятую в виде строки. Для нашего тестового проекта мы используем ip, geo, country. Следовательно, в готовом пакете package.json в массиве keywords будет три элемента.

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

    Поле author представляет собой строку в следующем формате: “имя \ (сайт)”. В нашем случае она может выглядеть так: “8host \ (https://your_domain)”. Электронную почту и данные о веб-сайте указывать не обязательно – достаточно просто ввести имя автора. Добавьте контактные данные автора и подтвердите их, нажав Enter.

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

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

    Теперь команда init выведет на экран файл package.json, который она собирается создать. Наш файл будет выглядеть примерно так:

    About to write to /home/8host/locator/package.json:

    «description»: «Finds the country of origin of the incoming request»,

    «test»: «echo \»Error: no test specified\» && exit 1″

    «author»: «8host (https://your_domain)»,

    Если данные в файле соответствуют вашим ожиданиям, нажмите Enter, чтобы завершить этот процесс и создать файл package.json. С помощью этого файла вы будете вести учет модулей, которые вы устанавливаете для своего проекта.

    Теперь, когда у вас есть файл package.json, вы можете попробовать выполнить установку модулей.

    2: Установка модулей

    Для выполнения вспомогательных задач в разработке программного обеспечения часто используются внешние библиотеки. Это позволяет разработчикам сосредоточиться на бизнес-логике, быстрее и эффективнее создавать приложение.

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

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

    npm install axios —save

    Команда npm install (вы можете также использовать ее сокращенный вариант, npm i) установит пакет, имя которого вы укажете. Чтобы установить несколько пакетов, укажите их имена через пробел. В данном случае мы устанавливаем только axios. В конце команды можно указать опции, в данном случае мы используем опцию –save, которая указывает, что библиотека axios сохранится как зависимость проекта.

    Когда библиотека будет установлена, вы увидите такой вывод:

    added 5 packages from 8 contributors and audited 5 packages in 0.764s

    found 0 vulnerabilities

    Теперь откройте файл package.json. Здесь мы используем текстовый редактор nano.

    Вы увидите в файле новое свойство:

    «description»: «Finds the country of origin of the incoming request»,

    «test»: «echo \»Error: no test specified\» && exit 1″

    Источник

    NodeJS. Как работать с файлом package.json.

    Всем привет! В этой статье мы рассмотрим, зачем в NodeJS нужен файл package.json и как его использовать.

    Введение

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

    Настройка

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

    В командной строке введите следующее:

    После нажатия клавиши Enter, вам будут заданы некоторые вопросы о вашем проекте. Ниже вы увидите вопросы на русском языке и возможные варианты ответов:

    • Имя(здесь будет вписано название папки с проектом). Можете оставить таким же или ввести другое название проекта
    • Версия(1.0.0 или другая). Можете оставить по умолчанию
    • Описание. Здесь вы можете написать, о чем ваш проект. А можете оставить это поле пустым
    • Точка входа(app.js). Здесь вы можете указать ваш главный файл проекта или оставить тот, что в скобках
    • Тестовая команда. Оставьте пустым
    • Git репозиторий. Оставьте пустым
    • Ключевые слова. Можете оставить пустым
    • Автор. Можете вписать автора проекта или оставить пустым
    • Лицензия(ISC). Оставьте пустым

    Теперь введите английскую букву y и нажмите Enter.

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

    Крутая возможность этого файла заключается в том, что мы можем следить за необходимыми нам пакетами и зависимостями. Представим, что над вашим проектом трудятся несколько разработчиков. Вы передаете код вашего приложения другому разработчику, но как он узнает, какие зависимости для проекта ему необходимы? Для этого вы просто можете передать ему файл package.json, и они сами установятся.

    Чтобы добавить какой-нибудь пакет в этот файл, его просто-напросто нужно установить с флагом -save, и он пропишется там автоматически. Конечно, при желании вы можете сделать это и вручную.

    Давайте установим уже знакомый нам пакет express:

    npm install express -save

    После установки, файл package.json будет автоматически обновлен, и вы сможете увидеть там новый объект dependencies, где и будут находиться все зависимости проекта.

    Если вы теперь удалите пакет express, то в зависимостях он все равно останется. Т.е. в следующий раз вы можете просто написать:

    Источник

    Читайте также:  Как настроить мост между двумя компьютерами