сведения о package.json

внешний интерфейс

Перевод: сумасшедший технический ботаник

оригинал:привет, node.com/tutorial/ Я тоже…

Копирование без разрешения строго запрещено

Проекты узлов названы в корневом каталоге проекта.package.jsonЗависимости и метаданные отслеживаются в файлах. Это ядро ​​вашего проекта. Он содержит такую ​​информацию, как имя, описание и версия, а также информацию, необходимую для запуска, разработки и выборочной публикации проекта в NPM.

В этом уроке мы будем:

  • К пониманиюpackage.jsonотношения с проектом
  • Определение важных полей и метаданных
  • Узнайте, как управлятьpackage.json

Цель

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

К пониманиюpackage.json

Если вы использовали Node.js раньше, вы могли столкнуться сpackage.jsonдокумент. Это файл JSON, расположенный в корневом каталоге проекта. твойpackage.jsonСодержит важную информацию о проекте. Он содержит удобочитаемые метаданные о проекте (такие как имя и описание проекта) и функциональные метаданные (такие как номер версии пакета и список зависимостей, требуемых программой).

package.jsonПример показан ниже:

 {
        "name": "my-project",
        "version": "1.5.0",
        "description": "Express server project using compression",
        "main": "src/index.js",
        "scripts": {
            "start": "node index.js",
			"dev": "nodemon",
			"lint": "eslint **/*.js"
        },
        "dependencies": {
            "express": "^4.16.4",
			"compression": "~1.7.4"
        },
        "devDependencies": {
			"eslint": "^5.16.0",
            "nodemon": "^1.18.11"
        },
		"repository": {
			"type": "git",
			"url": "https://github.com/osiolabs/example.git"
		},
		"author": "Jon Church",
		"contributors": [{
			"name": "Amber Matz",
			"email": "example@example.com",
			"url": "https://www.osiolabs.com/#team"
		}],
		"keywords": ["server", "osiolabs", "express", "compression"]
    }

package.jsonВ чем польза?

Проэктpackage.jsonЯвляется центром настройки и описания того, как взаимодействовать с программой и запускать ее. Он используется интерфейсом командной строки npm (и yarn) для идентификации вашего проекта и понимания того, как обращаться с зависимостями вашего проекта.package.jsonФайлы позволяют npm запускать ваш проект, запускать сценарии, устанавливать зависимости, публиковать в реестре NPM и выполнять множество других полезных задач. npm CLI также является лучшим способом управления package.json, поскольку он помогает создавать и обновлять на протяжении всего жизненного цикла проекта.package.jsonдокумент.

package.jsonИграет несколько ролей в жизненном цикле проекта, некоторые из которых применимы только к пакетам, опубликованным в NPM. Даже если вы не опубликуете свой проект в реестре NPM или опубликуете его для других, тогдаpackage.jsonПо-прежнему критично для процесса разработки.

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

package.jsonОбщие поля в

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

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

name

"name": "my-project"

nameПоле определяет имя пакета. Это имя, под которым пакет будет отображаться при публикации в реестре NPM. Он не может превышать 214 символов, может быть только в нижнем регистре и должен быть безопасным для URL-адресов (дефисы и символы подчеркивания допускаются, но пробелы и другие символы не допускаются в URL-адресах).

Если вы публикуете пакет в NPM, тоnameАтрибуты обязательны и должны быть уникальными. Если вы попытаетесь опубликовать пакет с именем, которое в настоящее время используется в реестре NPM, вы получите сообщение об ошибке. Если ваш пакет не предназначен для публикации в NPM, тоnameОн не должен быть уникальным.

version

"version": "1.5.0",

versionПоля очень важны для любого опубликованного пакета и обязательны перед публикацией. Этоpackage.jsonТекущая версия описываемого ПО.

вам не нужно использоватьSemVer, но это стандарт, используемый в экосистеме Node.js, и мы настоятельно рекомендуем его использовать. Для неопубликованных пакетов это свойство не является обязательным. Обычно номер версии увеличивается в соответствии с SemVer перед публикацией новой версии в NPM. Этот рабочий процесс обычно не используется, если пакет не используется в качестве зависимости или когда пакет не публикуется в NPM. Но если вы используете пакет в качестве зависимости, убедитесь, чтоversionВажно, чтобы поля обновлялись, чтобы гарантировать, что другие используют правильную версию пакета.Дополнительные сведения о семантическом управлении версиями.

license

Это очень важное, но часто упускаемое из виду свойство.licenseПоля позволяют определитьpackage.jsonЛицензия на описываемый код. Опять же, это важно при публикации проектов в реестре NPM, поскольку лицензии могут ограничивать использование программного обеспечения определенными разработчиками или организациями. Наличие четкой лицензии помогает четко определить условия, которые можно использовать с программным обеспечением.

licenseЗначением поля обычно является код идентификатора лицензии, например.MITилиISCСтроки, такие какMITлицензия иISCлицензия. Если вы не хотите предоставлять лицензию или явно не хотите давать разрешение на использование частного или неопубликованного пакета, вы можете добавитьUNLICENSEDкак лицензия. Если вы не уверены, какую лицензию использовать,Choose a Licenseэто полезный ресурс для вас.

authorа такжеcontributors

"author": "Jon Church jon@example.com https://www.osioslabs.com/#team",
"contributors": [{
	"name": "Amber Matz",
	"email": "example@example.com",
	"url": "https://www.osiolabs.com/#team"
}],

authorа такжеcontributorsПоля действуют аналогично. они всеpeopleполе, которое может быть"Name"Строка формата, которая также может бытьname,email,urlполевой объект. Электронная почта и URL являются необязательными.

authorтолько для одного человека,contributorsЭто может состоять из нескольких человек.

В этих полях удобно размещать контакты для общедоступных проектов и делиться заслугами с участниками.

description

Реестр НПМ будетdescriptionполе для опубликованных пакетов, которые будут включены в результаты поиска иnpmjs.comКомплектация описана на сайте.

Эта строка используется, чтобы помочь понять пакеты, когда пользователи выполняют поиск в реестре NPM. Это должно быть краткое описание пакета.

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

keywords

"keywords": ["server", "osiolabs", "express", "compression"]

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

Если вы не публикуете данные в реестре NPM, это поле бесполезно и его можно игнорировать.

main

"main": "src/index.js",

mainполеpackage.jsonфункциональные свойства. Он определяет точку входа проекта, обычно файл, используемый для запуска проекта.

Если ваш пакет (например, его имяfoo-lib) устанавливается пользователем, то когда пользователь выполняетrequire('foo-lib'), это то, что требует возвратаmainфайлов, перечисленных в полеmodule.exportsАтрибуты.

Его значение обычно находится в корневом каталоге проекта.index.jsфайл, но также может быть любым файлом, который вы выберете в качестве основной записи для пакета.

scripts

"scripts": {
	"start": "node index.js",
	"dev": "nodemon"
}

scriptsполеpackage.jsonЕще одна функция метаданных в .scriptsПолучение целевого атрибута, его значение может бытьnpm runЗапускаемый скрипт, ключом которого является фактически запущенная команда. Обычно это терминальные команды, мы помещаем их вscriptsполя, вы можете легко их записывать и повторно использовать.

scripts— мощный инструмент, используемый npm CLI для выполнения задач проекта. Они могут выполнять большинство задач в процессе разработки.Узнайте больше о скриптах npm.

repository

"repository": {
	"type": "git",
	"url": "https://github.com/osiolabs/example.git"
}

вы можете предоставитьrepositoryполе для записи репозитория, в котором находится код проекта. Это поле представляет собой объект, определяющий URL-адрес исходного кода и тип используемой системы контроля версий. Для проектов с открытым исходным кодом это может быть GitHub или Bitbucket с Git в качестве системы контроля версий.

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

dependencies

"dependencies": {
	"express": "^4.16.4",
    "compression": "~1.7.4"
}

Этоpackage.jsonОдно из самых важных полей в , в котором перечислены все зависимости, используемые проектом (внешний код, от которого зависит проект). Когда вы устанавливаете пакет с помощью интерфейса командной строки npm, он будет загружен на вашnode_modules/папку и добавьте запись в свойства зависимостей, указав имя пакета и установленную версию.

dependenciesПоле — это объект с именем пакета в качестве ключа и версией или диапазоном версий в качестве значения. Из этого списка при запуске в каталогеnpm install, npm знает, какие пакеты (и какие версии) нужно получить и установить.package.jsonизdependenciesПоля лежат в основе проекта и определяют внешние пакеты, необходимые для проекта.

каретка, видимая в версии зависимостей (^) и тильда (~) — это обозначение диапазона версий, определенного в SemVer.Узнайте больше о версиях зависимостей и SemVer.

devDependencies

"devDependencies": {
	"nodemon": "^1.18.11"
}

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

Например, перезагрузка проекта во время разработки с использованием таких инструментов, какnodemon, после того как программа будет развернута и введена в эксплуатацию, она больше не будет использоваться.devDependenciesСвойства позволяют явно указать, какие зависимости не нужны в продакшене. При установке приложения в рабочей среде вы можете использоватьnpm install --productionустановить толькоpackage.jsonизdependencyПоле контента перечислено.

devDependencyЭто хороший способ документировать, какие инструменты ваши программы требуют во время разработки. Чтобы установить пакет NPM в качестве DevDependency, вы можете запуститьnpm install --save-dev.

devDependenciesЕще одно применение свойств — их использование в наших сценариях npm.Узнайте об использовании в сценариях npmdevDependenciesБольше информации о.

Управлять вамиpackage.json

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

использоватьnpm init создай свойpackage.jsonпоможет убедиться, что вы создаете действительные файлы.

Лучше использовать команду npmnpm install,npm uninstallа такжеnpm updateуправлять зависимостями, чтобы вашpackage.jsonа такжеnode_modules/Папки синхронизируются. Добавление списка зависимостей вручную требует запуска до фактической установки зависимостей в проект.npm install.

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

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

Суммировать

package.jsonФайлы — это сердце проектов Node. Он документирует важные метаданные о проекте, которые требуются перед публикацией в NPM, а также определяет свойства компонентов проекта, которые npm использует для установки зависимостей, запуска сценариев и определения точек входа для пакетов.

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

Узнать больше о

Другие источники

Добро пожаловать в общедоступную учетную запись внешнего интерфейса: первопроходец внешнего интерфейса, получите полную серию руководств по веб-пакетам.