Как создать файл package json
Утилита npm — это менеджер пакетов, который входит в состав Node.js. Пакетом называется один или несколько js-файлов, представляющих собой какую-то библиотеку или инструмент. Менеджер пакетов предназначен для скачивания пакетов из облачного сервера, либо для загрузки (публикации) пакетов на этот сервер.
1. Инициализация проекта
Для создания нового проекта нужно создать директорию проекта, перейти в нее и выполнить команду
В процессе инициализации, npm задаст несколько вопросов на тему того как должен называться проект, какая у него должна быть версия, описание и тому подобное. В конце npm спросит все ли правильно и покажет содержимое файла package.json , который и станет основой нового проекта.
2. Файл package-lock.json
Сразу после установки хотя бы одного пакета, рядом с package.json будет создан файл package-lock.json , который будет обновляться каждый раз при добавлении новой зависимости. В этом файле содержится описание состояния текущей иерархии используемых в приложении модулей: их точные версии и точные версии используемых ими пакетов и так до конца. При развертывании приложения в новой среде наличие файла package-lock.json гарантирует, что будут установлены версии тех пакетов, которые использовались в разработке в последний раз.
3. Установленные пакеты
Получить список всех установленных в директории проекта npm-пакетов можно с помощью команды
Дополнительная опция --all команды list выводит все пакеты в виде дерева
Получить список всех установленных глобально npm-пакетов (см.ниже) можно с помощью команды
4. Подробная информация о пакете
Посмотреть подробную информацию о пакете, доступного через npm-репозиторий
Получить информацию из npm-репозитория о последней доступной версии пакета
5. Локальная установка пакетов
Установить все пакеты из секций dependencies и devDependencies файла package.json :
Установить все пакеты из секции dependencies файла package.json (для production сервера)
Установить пакет package-name , но не добавлять его в файл package.json :
Установить пакет package-name и добавить в секцию devDependencies файла package.json :
Установить пакет package-name и добавить в секцию dependencies файла package.json :
6. Локальное удаление пакетов
Удалить пакет package-name , но не удалять его из файла package.json :
Удалить пакет package-name и удалить его из секции devDependencies файла package.json :
Удалить пакет package-name и удалить его из секции dependencies файла package.json :
7. Глобальная установка пакета
По умолчанию npm будет устанавливать все пакеты в локальной директории, в которым мы сейчас работаем (директория проекта). Если нужно, чтобы пакет был доступен всем приложениям, его нужно установить глобально. Но это не лучшее решение — разные проекты могут требовать разные версии одного пакета. Глобально установленный пакет будет нормально работать в одном проекте и вызывать ошибку в другом.
Куда именно будет установлен пакет, можно узнать с помощью команды npm config get prefix .8. Глобальное удаление пакета
Так что если из-за глобально установки пакета возникли трудности — можно удалить его с помощью команды
9. Локальное обновление пакетов
Обновить один пакет или все пакеты проекта (нужно выполнять из директории проекта):
Чтобы узнать, вышли ли новые версии используемых в проекте пакетов
10. Как безопасно обновляться
Некоторые из доступных обновлений пакетов представляют собой мажорные релизы, обновления до которых не произойдёт при выполнении npm update . Обновление до мажорных релизов не производится, так как они могут содержать серьёзные изменения, не отличающиеся обратной совместимостью.
Для того, чтобы обновиться до новых мажорных версий всех используемых пакетов, нужно глобально установить пакет
Теперь можно посмотреть, какие пакеты можно обновить (без внесения каких-либо изменений):
- Red = major upgrade
- Cyan = minor upgrade
- Green = patch upgrade
Убедившись, что обновление достаточно безопасно, можно выполнять следующую команду:
Эта команда обновит файл package.json , внеся изменения в указания о подходящих версиях пакетов в разделы dependencies и devDependencies . Это позволит npm обновить пакеты, используемые в проекте, до новых мажорных версий при запуске команды npm update .
Если нужно установить самые свежие версии пакетов для только что только что загруженного проекта, в котором пока нет директории node_modules , то, вместо npm update , выполняем команду npm install .
11. Глобальное обновление пакетов
Обновить один пакет или все пакеты, установленные глобально (можно выполнять из любого места):
12. Установка конкретной версии
Установка старой версии npm-пакета может понадобиться для решения проблем совместимости:
Узнать, какие версии некоего пакета имеются в npm-репозитории
13. Запуск скриптов
Файл package.json часто содержит секцию scripts , которая содержит скрипты для автоматизации рутиных задач. Можно запустить или остановить веб-сервер, собрать приложение, прогнать тесты и так далее.
Запускать эти команды можно с помощью команды
К переменной окружения PATH будет добавлен путь node_modules/.bin , так что в первую очередь будут выполнены локальные скрипты проекта.
Некоторые скрипты можно запускать без указания run , например npm start , npm stop или npm test .14. Справка по менеджеру пакетов
У менеджера пакетов есть подробная справка по все командам
Для примера, посмотрим справку по команде install (в браузере)
Утилита npx
Существует множество утилит в виде пакетов (например, create-react-app ), которые изначально предполагалось устанавливать глобально. Запускать их из командной строки было очень просто — достаточно ввести имя утилиты в консоли. Однако мы уже знаем, что глобальная установка пакетов создает множество проблем.
Конечно, мы можем что-нибудь придумать, чтобы избежать проблем с глобальной установкой таких утилит. Например, установить пакет create-react-app глобально, запустить один раз из директории проекта, чтобы создать React-приложение — и сразу после этого удалить.
Еще один способ — установить create-react-app локально в какую-то временную директорию. И добавить команду в секцию scripts файла package.json . После этого можно запускать утилиту из этой директории с помощью npm run , указывая путь к директории проекта, который надо создать.
Второй пример с пакетом create-react-app получился не слишком удачным. Потому что утилита предназначена для развертывания React-приложения в пустой директории проекта. Поэтому мы не можем установить create-react-app локально, как dev-зависимость проекта — и вынуждены устанавливать во временной директории. Но в случае других пакетов такого рода можно установить пакет локально как dev-зависимость проекта — и запускать через run-script .В общем, получается сложно и хлопотно — тут на помощь приходит утилита npx , которая позволяет:
- во-первых, легко запустить локально установленный пакет без run-script
- во-вторых, легко запустить пакет, который не установлен ни локально, ни глобально
- в-третьих, запускать разные версии одной утилиты с помощью package@version
Посмотрим на то, как использовать команду npx на примере простой утилиты cowsay . Это абсолютно бессмысленная утилита, которая выводит на экран «говорящую» корову — но подходит в качестве примера. Если пакет cowsay установлен глобально, выполнение в командной строке команды cowsay hello приведёт к выводу в консоль «говорящей» коровы.
Если пакет cowsay не установлен глобально, подобная команда выдаст ошибку:
Используем команду npx , когда пакет cowsay не установлен глобально:
Утилита npx скачает пакет cowsay из npm-репозитория, установит во временную директорию и выполнит утилиту. Что важно — не загрязняя глобальное пространство. Так что при использовании npx необходимости в глобальной установке пакетов больше нет.
Если запускать npx из директории проекта, то сначала будет выполнен поиск в node_modules/.bin . Если пакет уже установлен локально — он будет выполнен. А если не установлен — npx найдет его в npm-репозитории, скачает, установит во временную директорию и выполнит.
Несколько раз встречал команду npm it и никак не мог понять, что она означает. Оказывается, это синоним команды npm install-test , которая выполняет последовательно две команды:
Благодаря высокой производительности ввода/вывода (I/O), хорошо известному синтаксису JavaScript и другим удобным функциям Node.js быстро стал популярной средой выполнения для веб-разработки бэкенда. Но по мере роста изначально сложного приложения управлять его кодовой базой и ее зависимостями становится все труднее. Node.js решает эту проблему с помощью модулей. Модули – это отдельные файлы JavaScript, содержащие функции или объекты, которые могут использоваться другими программами или модулями. Набор из одного или нескольких модулей обычно называется пакетом, такими пакетами обычно управляют менеджеры пакетов.
- Все необходимые проекту модули и их установленные версии.
- Все метаданные проекта, такие как автор, лицензия и т.п.
- Скрипты, которые можно запускать для автоматизации задач в рамках проекта.
По мере усложнения проектов 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 состоит из данных, хранящихся в виде пар «ключ-значение».
Команда 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 <pkg>` 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, чтобы принять его.
Нажмите 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, чтобы сохранить значение по умолчанию.
Большинство модулей используют в качестве основной точки входа файл index.js. Это значение по умолчанию свойства main файла package.json, которое является точкой входа для модулей npm. Если у вас нет файла package.json, Node.js по умолчанию попытается загрузить index.js.Затем вам будет предложено указать test command – это исполняемый скрипт или команда для тестового запуска вашего проекта. Многие популярные модули Node.js тестируются с помощью Mocha, Jest, Jasmine или других тестовых фреймворков. Тестирование выходит за рамки данной статьи, потому пока что оставьте этот параметр пустым и нажмите Enter, чтобы продолжить.
Потом команда init запросит репозиторий проекта на GitHub. В этом мануале мы не будем использовать его, поэтому также оставьте поле пустым.
После репозитория команда запрашивает ключевые слова, keywords. Это свойство представляет собой массив строк, содержащий полезные термины, которые люди могут использовать для поиска вашего проекта. Лучше всего использовать здесь небольшой набор слов, действительно имеющих отношение к вашему проекту – тогда поиск будет более точным.
Перечислите эти ключевые слова через запятую в виде строки. Для нашего тестового проекта мы используем ip, geo, country. Следовательно, в готовом пакете package.json в массиве keywords будет три элемента.
Следующее поле – author, автор. Оно поможет пользователям вашего модуля связаться с вами в случае необходимости. Например, если кто-то обнаружит в модуле уязвимость, он сможет сообщить вам о проблеме, чтобы вы ее исправили.
Теперь вам будет предложено ввести лицензию, 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 <8host@your_domain> (https://your_domain)",
Если данные в файле соответствуют вашим ожиданиям, нажмите Enter, чтобы завершить этот процесс и создать файл package.json. С помощью этого файла вы будете вести учет модулей, которые вы устанавливаете для своего проекта.
Теперь, когда у вас есть файл package.json, вы можете попробовать выполнить установку модулей.
2: Установка модулей
Для выполнения вспомогательных задач в разработке программного обеспечения часто используются внешние библиотеки. Это позволяет разработчикам сосредоточиться на бизнес-логике, быстрее и эффективнее создавать приложение.
npm install axios --save
В данной статье мы хотим познакомить вас с package lock и package json файлами. Разберемся, для чего необходимы lock файлы, при работе с npm.
Давайте начнём с npm (node-modules) - это сборщик пакетов в программной платформе node.js. Актуальную версию node.js можно скачать по ссылке. В основном предназначена для установки модулей. Для просмотра актуальных версий модулей npm создаёт файл package.json.
Что такое пакет в JavaScript?
Пакетом называется один или несколько файлов в JS, в виде инструмента или библиотеки. Npm хранит в себе самый большой набор пакетов. Npm необходим для скачивания пакетов и загрузки их, благодаря этому можно хорошо ускорить своё написание кода.
Что такое package.json?
Package.json - это файл, который представляет зависимости верхнего уровня от других пакетов при помощи семантического управления версиями. Любой пакет, может исходить из другого пакета, у них образуется взаимосвязь.
Package.json файл состоит:
1. Dependencies (зависимости) в которых хранятся названия и версия модуля
2. Метаданные - это описание, автор, лицензия и т.д.
3. Скрипты
Типы зависимостей в package.json
Давайте разберем несколько основных зависимостей проекта, чтобы лучше понимать что в него входит и что можно редактировать.
• dependencies — главные зависимости которые находятся в вашем проекте. Их можно применять и запускать в коде.
• devDependencies — взаимосвязи разработки.
• peerDependencies — равные взаимосвязи, при добавлении которых, мы даем понять какую версию для взаимосвязи следует установить
• optionalDependencies — второстепенные зависимости. Если при установке произойдет сбой, на основную сборку это не повлияет.
• bundledDependencies — в нём содержится массив пакетов. Данный массив нужен, если вам требуется добавить новую зависимость, которой нет в npm.
Назначение package-lock.json
package-lock.json если коротко, то предназначен для блокировки зависимостей от определенного номера версии. В package-lock.json файле перечислены зависимости вашего приложения и зависимости всех его зависимостей. Другими словами, он описывает, какую версию каждого отдельного пакета вы установили. Вот почему это намного дольше, чем package.json. Когда вы используете package-lock.json для установки зависимостей, вы получаете точно такие же пакеты, неважно, устанавливаете ли вы их сейчас или через несколько лет, когда мы, надеюсь, больше не будем использовать клавиатуры.
Чтобы установить зависимости на основе текущего package-lock.json файла, вы должны использовать npm ci вместо npm install.
Используя, npm ci вы сможете избежать проблем, которые возникают, когда приложение работает на вашем компьютере, но не работает на чужом, потому что они в конечном итоге загрузили различные зависимости из-за использования npm install.
Вот почему при запуске ваших сборок на сервере непрерывной интеграции вам следует устанавливать зависимости, используя npm ci вместо npm install. Это приведет к тому, что сборка CI-сервера будет работать так же, как на вашем компьютере.
Назначение package.json
Как говорилось уже выше, файл package.json - один из основных частей проекта основан на Node.js. Многие уже встречали этот файл у себя в проектах, но открыв его - ничего не поняли, так и остался для вас “тёмным туманом”. Зачем использовать данный файл?
Package специализирован не только лишь на взаимосвязях, но и для определения свойств проекта:
Чтоб отключить автоматическое создания файла следует написать в npmrc package-lock=false. Наличие package-lock.json в проекте необязательно.
Разбивка параметров
- name - параметр name обозначает имя создаваемого проекта. Имя не должно превышать 214 знаков. Запрещены пробелы, подчеркивания, дефисы и CAPS LOCK.
- Зачем нужно столько ограничений? После создания пакета происходит генерация url страницы.
- author - описание об авторе проекта. Может быть имя, фамилия. Может быть представлен в виде массива с указаниями соц. сетей.
- contributors - люди, которые разрабатывали данный проект (массив)
- bugs - Отслеживание багов в проекте, можно указать ссылку на GitHub трекер.
- homepage - Главная страница пакета
- version - Указывает текущую версию пакета.
Правила написания версии:
Первая цифра - это внесены критические изменения
Вторая цифра - обозначает, что выпуск содержит новые функции.
Третья цифра - указывает на исправления.
- license - лицензия пакета
- keywords - ключи(теги) для поиска вашего проекта. Чем лучше их задать, тем легче людям найти ваш пакет.
- description - описание проекта. Если выкладывать в сеть, то данное описание обязательно!
- repository - добавьте сюда git репозиторий пакета. Данное свойство содержит префиксы (gitlab:url, bitbucket:url)
- main - Главная файл пакета
- private - если значение true, то оно не даст загрузить набор в npm
- scripts - скрипты, которые могут быть доступны через npm
- dependencies - перечень установленных взаимосвязей
- devDependencies - зависимости разработки
- engines - показывает, какие средства и версии Node.js употребляться для работы пакета
- browserslist - помогает показать, какие браузеры могут поддерживать пакет
Менеджеры версий
Существует несколько возможностей, разрешающих пользоваться многими версиями Node.js на вашем пк. Одна из них n, вторая - Node Version Manages(nvm). Кто искал данное решение, изучите информацию на ресурсах: Install Multiple Versions of Node.js using nvm.
Что из себя представляет расширение JSON
Формат JSON - это текстовый формат служит для обмена данными созданный на объектах JS. Данные в файле представлены в виде “ключ - значение”.
Как создать package.json?
Из-за того, что package.json довольно глобальный и состоит из множества свойств, то в ручную его писать трудно и очень долго. Для быстроты решения задачи, npm сделали команду init. Откройте консоль в области текущей папки и напишите команду: npm init. Данная команда позволяет создать файл package.json. После этого вы получаете вот такой ответ:
Затем после всех вопросов, в основном вы все пропускаете через Enter, мы получаем те самые данные в виде “ключ - значение”
Наш package.json создан!
Установка модулей
Для начала в своём проекте в консоли напишите команду
npm install
Данная команда установит файл node_modules(короткий вариант команды npm i). Вторым этапом мы установим какую-нибудь библиотеку. К примеру: gulp-sass - помогает скомпилировать код, и сжать стили. Для установки напишем команду
npm install gulp-sass --save
Если вам нужны еще библиотеки просто перечисляете их, отделяя отступом. Но не забывайте добавлять аргумент --save, для сохранения библиотеки как зависимость самого проекта.
Аргумент --save показывает npm следить за актуальной версией package.json. Хорошая возможность, дать другим разработчиком увидеть какие зависимости необходимы проекту.
По итогу у нас получились созданные файлы: package.json, package-lock.json, node_modules.
Сгенерированная папка node_modules хранит в себе все модули вашего проекта. Данную папку в Git репозиторий мы не добавляем! Так как в ней хранится множество зависимостей и они будут только добавляться, вы будете очень долго ждать загрузки. Загружать нужно только 2 файла package.json, package-lock.json, даже после того, как другой разработчик сделает копию вашего проекта, он сможет установить нужные зависимости сохраненные в package.json.
Не забудьте добавить файл node_modules в gitignore.
Заключение
По итогу, в данной статье мы разобрали базу package и package lock, рассказали о самых распространенных и часто встречающихся ошибках, которые следует избегать.
Углубились в структуру файлов. Показали как установить node_modules, а также научились устанавливать дополнительные библиотеки.
В конечном итоге помните, что на git node_modules лучше не добавлять. И теперь любой скопированный проект вы сможете настроить сами, так, чтобы он работал.
Всем привет! В этой статье мы рассмотрим, зачем в NodeJS нужен файл package.json и как его использовать.
Введение
В прошлой статье мы рассмотрели, как работать с NPM и устанавливать пакеты. Вы можете установить один пакет, а можете и десять. Но в любом случае хорошей идеей будет следить за тем, что вы устанавливаете и какие у проекта зависимости. В NodeJS мы можем делать это, используя файл package.json.
Настройка
Мы можем создать файл вручную, а можем использовать пошаговую установку через терминал. Давайте воспользуемся вторым способом.
В командной строке введите следующее:
- Имя(здесь будет вписано название папки с проектом). Можете оставить таким же или ввести другое название проекта
- Версия(1.0.0 или другая). Можете оставить по умолчанию
- Описание. Здесь вы можете написать, о чем ваш проект. А можете оставить это поле пустым
- Точка входа(app.js). Здесь вы можете указать ваш главный файл проекта или оставить тот, что в скобках
- Тестовая команда. Оставьте пустым
- Git репозиторий. Оставьте пустым
- Ключевые слова. Можете оставить пустым
- Автор. Можете вписать автора проекта или оставить пустым
- Лицензия(ISC). Оставьте пустым
Теперь введите английскую букву y и нажмите Enter.
Поздравляю! Теперь у вас создан файл package.json, и он находится в корне проекта. Вы можете открыть его и увидеть, что там просто объект, в котором содержится информация о вашем текущем приложении.
Крутая возможность этого файла заключается в том, что мы можем следить за необходимыми нам пакетами и зависимостями. Представим, что над вашим проектом трудятся несколько разработчиков. Вы передаете код вашего приложения другому разработчику, но как он узнает, какие зависимости для проекта ему необходимы? Для этого вы просто можете передать ему файл package.json, и они сами установятся.
Чтобы добавить какой-нибудь пакет в этот файл, его просто-напросто нужно установить с флагом -save, и он пропишется там автоматически. Конечно, при желании вы можете сделать это и вручную.
Давайте установим уже знакомый нам пакет express:
npm install express -save
После установки, файл package.json будет автоматически обновлен, и вы сможете увидеть там новый объект dependencies, где и будут находиться все зависимости проекта.
Если вы теперь удалите пакет express, то в зависимостях он все равно останется. Т.е. в следующий раз вы можете просто написать:
Файл package.json - ключевой элемент во многих базах кода приложений, основанных на экосистеме Node.js.
Если вы работаете с JavaScript или когда-либо взаимодействовали с проектом JavaScript, Node.js или внешним интерфейсом, вы наверняка встречали package.json файл.
Что то, что для? Что вы должны знать об этом и какие интересные вещи вы можете с ним сделать?
В package.json файл является своего рода манифестом для вашего проекта. Он может делать многое, совершенно не связанное с этим. Например, это центральный репозиторий конфигурации для инструментов. Это также где npm и yarn сохранить имена и версии установленного пакета.
Файловая структура
Вот пример файла package.json:
Оно пустое! Нет фиксированных требований к тому, что должно быть в package.json файл для приложения. Единственное требование - соблюдение формата JSON, в противном случае он не может быть прочитан программами, которые пытаются программно получить доступ к его свойствам.
Если вы создаете пакет Node.js, который хотите распространять по npm все кардинально меняется, и у вас должен быть набор свойств, которые помогут другим людям его использовать. Позже мы увидим об этом больше.
Это еще один package.json:
Он определяет name свойство, которое сообщает имя приложения или пакета, который содержится в той же папке, где находится этот файл.
Вот гораздо более сложный пример, который я извлек из образца приложения Vue.js:
Существуютлотыо том, что здесь происходит:
- name устанавливает имя приложения / пакета
- version указывает текущую версию
- description это краткое описание приложения / пакета
- main установить точку входа для приложения
- private если установлено на true предотвращает случайную публикацию приложения / пакета на npm
- scripts определяет набор скриптов узла, которые вы можете запустить
- dependencies устанавливает список npm пакеты, установленные как зависимости
- devDependencies устанавливает список npm пакеты, установленные как зависимости разработки
- engines устанавливает, на каких версиях Node работает этот пакет / приложение
- browserslist используется, чтобы указать, какие браузеры (и их версии) вы хотите поддерживать
Все эти свойства используются либо npm или другие инструменты, которые мы можем использовать.
Разбивка свойств
В этом разделе подробно описаны свойства, которые вы можете использовать. Я имею в виду «пакет», но то же самое относится и к локальным приложениям, которые вы не используете в качестве пакетов.
Устанавливает имя пакета.
Имя должно быть меньше 214 символов, не должно содержать пробелов, оно может содержать только строчные буквы, дефисы ( - ) или подчеркивания ( _ ).
Это потому, что когда пакет публикуется на npm , он получает свой собственный URL на основе этого свойства.
Если вы опубликовали этот пакет публично на GitHub, хорошим значением для этого свойства будет имя репозитория GitHub.
author
Перечисляет имя автора пакета
Также может использоваться с этим форматом:
contributors
Помимо автора, у проекта может быть один или несколько участников. Это свойство представляет собой массив, в котором они перечислены.
Также может использоваться с этим форматом:
Ссылки на средство отслеживания проблем с пакетами, скорее всего, на страницу проблем с GitHub.
homepage
Устанавливает домашнюю страницу пакета
version
Указывает текущую версию пакета.
Это свойство соответствует нотации семантического управления версиями (semver) для версий, что означает, что версия всегда выражается тремя числами: x.x.x .
Первое число - это основная версия, вторая - второстепенная версия, а третья - версия исправления.
В этих числах есть смысл: выпуск, который только исправляет ошибки, является выпуском с исправлениями, выпуск, который вводит обратно совместимые изменения, является второстепенным выпуском, основной выпуск может иметь критические изменения.
license
Указывает лицензию пакета.
keywords
Это свойство содержит массив ключевых слов, связанных с тем, что делает ваш пакет.
description
Это свойство содержит краткое описание пакета
Это особенно полезно, если вы решили опубликовать свой пакет в npm чтобы люди могли узнать, о чем этот пакет.
repository
Это свойство указывает, где находится этот репозиторий пакетов.
Обратите внимание на github префикс. Есть и другие популярные сервисы:
Вы можете явно установить систему контроля версий:
Вы можете использовать разные системы контроля версий:
Устанавливает точку входа для пакета.
Когда вы импортируете этот пакет в приложение, именно здесь приложение будет искать экспорт модуля.
private
если установлено на true предотвращает случайную публикацию приложения / пакета на npm
scripts
Определяет набор скриптов узла, которые вы можете запустить
Эти сценарии представляют собой приложения командной строки. Вы можете запустить их, позвонив npm run XXXX или же yarn XXXX , куда XXXX это имя команды. Пример: npm run dev .
Вы можете использовать любое имя для команды, а скрипты могут делать буквально все, что захотите.
dependencies
Устанавливает список npm пакеты устанавливаются как зависимости.
Когда вы устанавливаете пакет с помощью npm или yarn:
этот пакет автоматически добавляется в этот список.
devDependencies
Устанавливает список npm пакеты, установленные как зависимости разработки.
Они отличаются от dependencies потому что они предназначены для установки только на машине разработки, а не для запуска кода в производственной среде.
Когда вы устанавливаете пакет с помощью npm или yarn:
этот пакет автоматически добавляется в этот список.
engines
Устанавливает, с какими версиями Node.js и других команд работает этот пакет / приложение.
browserslist
Используется, чтобы указать, какие браузеры (и их версии) вы хотите поддерживать. На него ссылаются Babel, Autoprefixer и другие инструменты, чтобы добавить только полифилы и резервные варианты, необходимые для браузеров, на которые вы нацеливаетесь.
Свойства, зависящие от команды
В package.json файл также может содержать конфигурацию для конкретной команды, например для Babel, ESLint и других.
У каждого есть определенное свойство, например eslintConfig , babel и другие. Они зависят от команды, и вы можете найти, как их использовать, в документации по соответствующей команде / проекту.
Версии пакета
В приведенном выше описании вы видели такие номера версий:
3.0.0 или же ^0.13.0 . Что они означают и какие еще спецификаторы версии можно использовать?
Этот символ указывает, какие обновления принимает ваш пакет, исходя из этой зависимости.
Учитывая, что при использовании semver (семантическое управление версиями) все версии имеют 3 цифры, первая из которых является основным выпуском, вторая - второстепенным выпуском, а третья - выпуском патча, у вас есть следующие правила:
: если вы напишете
Есть и другие правила:
- без символа: вы принимаете только ту конкретную версию, которую указали
- latest : вы хотите использовать последнюю доступную версию
и вы можете комбинировать большинство из вышеперечисленных в диапазонах, например: 1.0.0 || >=1.1.0 <1.2.0 , чтобы использовать 1.0.0 или одну версию от 1.1.0 и выше, но ниже 1.2.0.
Читайте также: