Manifests (package.json)
Файлы манифеста (также называемые package.json из-за своего имени) содержат все необходимое для описания настроек, уникальных для конкретного пакета. Проект может содержать несколько таких манифестов, если он использует функцию рабочей области, поскольку каждая рабочая область описывается собственным манифестом. Обратите внимание, что значения по умолчанию для этих полей можно задать через настройки initFields.
name
Имя пакета. Используется для идентификации пакета в приложении, особенно среди нескольких рабочих областей. Первая часть имени (здесь @scope/) является необязательной и используется в качестве пространства имён.
version
Версия пакета. Обычно не оказывает никакого влияния на ваш проект, за исключением случаев, когда это рабочая область — тогда её версия должна соответствовать указанным диапазонам, чтобы рабочая область была выбрана в качестве кандидата на разрешение.
type
Вариант Node.js v13.x опция. Возможные значения — commonjs (значение по умолчанию) и module. Yarn 3+ будет генерировать файл .pnp.cjs, когда используется PnP независимо от этого параметра.
private
Если значение true, пакет считается закрытым, и Yarn откажется от его публикации независимо от обстоятельств. Установка этого флага также разблокирует некоторые функции, которые не имеют смысла в опубликованных пакетах, такие как рабочие области.
license
Идентификатор SPDX, указывающий, по какой лицензии распространяется ваш пакет.
os
Значение, сравниваемое во время установки с process.platform. Если значения не совпадают, пакет не увидит выполнения своих скриптов postinstall (если они перечислены в dependencies) или не будет установлен вообще (если перечислены в optionalDependencies).
cpu
Значение, сравниваемое во время установки с process.arch. Если значения не совпадают, пакет не увидит выполнения своих скриптов postinstall (если они перечислены в dependencies) или не будет установлен вообще (если перечислены в optionalDependencies).
main
Путь, который будет использоваться для разрешения квалифицированного пути при доступе к пакету по его имени. Это поле может быть изменено во время публикации с помощью поля publishConfig.main.
module
Путь, который будет использоваться, когда среда, совместимая с ES6, будет пытаться получить доступ к пакету по его имени. Не оказывает прямого влияния на сам Yarn.
languageName
Перечисление, используемое плагинами компоновщика для определения, какой компоновщик должен установить конкретный пакет. Разрешены только некоторые значения, см. документацию для получения дополнительной информации.
bin
Поле, используемое для экспонирования некоторых исполняемых файлов JavaScript родительскому пакету. Любой элемент, перечисленный здесь, будет доступен через $PATH. Рекомендуется экспонировать только файлы JavaScript по соображениям портативности (скрипты оболочки и двоичные файлы, отличные от js, требуют у пользователя определённой оболочки и несовместимы с доступом через zip).
скрипты
Поле, используемое для перечисления небольших скриптов оболочки, которые будут выполняться при запуске yarn run. Скрипты по умолчанию выполняются миниатюрной оболочкой, поэтому некоторые расширенные функции могут быть недоступны (если у вас более сложные потребности, мы рекомендуем вам просто выполнить файл Javascript). Обратите внимание, что скрипты, содержащие : (двоеточие), являются глобальными для вашего проекта и могут вызываться независимо от текущей рабочей области. Наконец, имейте в виду, что скрипты всегда выполняются относительно ближайшей рабочей области (никогда не cwd).
зависимости
Набор зависимостей, которые должны быть доступны текущему пакету для его правильной работы. Для получения дополнительной информации см. список поддерживаемых диапазонов.
необязательные зависимости
Аналогично полю dependencies, за исключением того, что эти записи не потребуются для корректной сборки, если у них есть скрипт сборки. Обратите внимание, что такие зависимости всегда должны быть разрешимы (иначе мы не могли бы хранить их в файле блокировки, что может привести к невоспроизводимым установкам), но те, которые перечисляют поля cpu/os, не будут извлечены, если они не соответствуют текущей архитектуре системы.
Это поле обычно не то, что вам нужно, если вы не зависите от пакета fsevents. Если вам нужен пакет, который требуется только при использовании определенной функции, используйте необязательную зависимость peer. Ваши пользователи должны будут удовлетворить ее, если они будут использовать функцию, но это не приведет к тому, что ошибки сборки будут молча проглочены, когда функция потребуется.
зависимости разработки
Аналогично полю dependencies, за исключением того, что эти зависимости устанавливаются только при локальной установке и никогда не будут установлены потребителями вашего пакета.
зависимости peer
Зависимости peer — это наследуемые зависимости — потребитель вашего пакета будет обязан предоставить их. Это типично, когда вы пишете плагины, например. Обратите внимание, что зависимости peer также могут быть перечислены как обычные зависимости; в этом случае Yarn будет использовать пакет, предоставленный предками, если это возможно, но в противном случае вернётся к обычным зависимостям.
рабочие области
Рабочие области — это необязательная функция, используемая monorepo для разделения большого проекта на полунезависимые подпроекты, каждый из которых перечисляет свой набор зависимостей. Поле workspaces — это список шаблонов glob, которые соответствуют всем каталогам, которые должны стать рабочими областями вашего приложения.
dependenciesMeta
В этом поле перечислены дополнительные сведения, связанные с зависимостями, указанными в полях dependencies и devDependencies. В контексте проекта с рабочими пространствами большинство этих настроек повлияет на все рабочие пространства и, следовательно, должны быть указаны в корне проекта (за исключением случаев, оговоренных отдельно, поле dependenciesMeta будет проигнорировано, если оно найдено внутри рабочего пространства).
built
Если значение равно false, пакет никогда не будет построен (отказ от включения). Это поведение меняется, когда настройка enableScripts yarnrc переключается - в этом случае будут выполнены только пакеты с явно установленным значением built в true (список разрешенных), а пакеты с явно установленным значением built в false просто увидят предупреждения скрипта сборки, пониженные до простых сообщений.
optional
Если значение равно true, для успешной установки сборка не обязательна, и зависимость может быть пропущена, если поля os и cpu не соответствуют текущей архитектуре системы. Это то, к чему сводится поле optionalDependencies.
Эта настройка будет применена даже при нахождении внутри вложенного манифеста, но будет учитываться самое строгое требование в дереве зависимостей.
unplugged
Если значение равно true, указанный пакет будет автоматически отключён во время установки. Это нужно только для пакетов, содержащих скрипты на языках, отличных от Javascript (например, nan содержит заголовки C++).
peerDependenciesMeta
В этом поле перечислены дополнительные сведения, связанные с зависимостями, указанными в поле peerDependencies.
optional
Если значение равно true, выбранная зависимость peer будет помечена как необязательная менеджером пакетов, и пропуск её потребителем не будет считаться ошибкой.
resolutions
Это поле позволяет указать Yarn использовать определённое разрешение вместо того, что обычно выбирает решатель. Это полезно для принудительного использования всеми пакетами одной версии зависимости или для переноса исправления.
Синтаксис ключа разрешения допускает один уровень детализации, поэтому все следующие примеры корректны. Примечание: когда путь относительный, как это может быть с протоколами file: и portal:, он разрешается относительно пути проекта.
Обратите внимание, что поле resolution может быть установлено только в корне проекта и вызовет предупреждение, если используется в каком-либо другом рабочем пространстве.
preferUnplugged
Это поле указывает Yarn на принудительное извлечение содержимого на диск (полезно, когда вам нужно отправить исполняемые двоичные файлы по какой-либо причине) или принудительно оставить его в архиве (полезно, когда вы хотите, чтобы ваш пакет содержал ВСЕ исходные файлы, включая скрипты оболочки, но они не нужны для выполнения).
файлы
Необязательное поле files представляет собой массив шаблонов файлов, описывающих записи, которые должны быть включены при установке вашего пакета в качестве зависимости. Шаблоны файлов следуют синтаксису, аналогичному .gitignore, но в обратном порядке: включение файла, каталога или шаблона glob (*, **/*, и т. д.) приведет к тому, что этот файл будет включён в архив tar при его упаковке. Пропуск этого поля приведет к использованию значения по умолчанию ["*"], что означает включение всех файлов.
Некоторые специальные файлы и каталоги также включаются или исключаются, независимо от того, присутствуют ли они в массиве files.
Вы также можете указать файл .npmignore в корне вашего пакета или в подкаталогах, который будет исключать файлы из включения. Файл .npmignore работает точно так же, как файл .gitignore. Если присутствует файл .gitignore, а .npmignore отсутствует, содержимое .gitignore будет использовано вместо него. Поле files переопределяет .npmignore и .gitignore.
publishConfig
Это поле содержит различные настройки, которые учитываются только при генерации пакета из ваших локальных источников (через yarn pack или одну из команд публикации, например, yarn npm publish).
доступ
Определяет уровень доступа к пакету при публикации на репозитарий npm. Допустимые значения — public и restricted, но restricted обычно требует регистрации на платном плане (это зависит от используемого вами репозитария).
bin
Если присутствует, значение верхнего уровня поля bin из манифеста будет изменено на это новое значение перед упаковкой пакета для отправки на удалённые репозитарии. Это не изменит реальный манифест, только тот, который хранится в архиве tar.
browser
Такой же принцип, как и свойство publishConfig.bin; это значение будет использоваться вместо верхнего уровня поля browser при генерации архива рабочей области.
executableFiles
По умолчанию, по соображениям портативности, ни один файл, кроме тех, которые указаны в поле `bin`, не будет помечен как исполняемый в результирующем архиве пакета. Поле `executableFiles` позволяет объявить дополнительные поля, которые должны иметь флаг исполняемости (+x), даже если они не доступны напрямую через поле `bin`.
main
module
репозитарий
Если присутствует, заменит определённый в конфигурации репозитарий, когда пакет будет отправлен на удалённый сервер.
installConfig
Это поле содержит различные настройки, которые изменяют способ установки рабочей области.
hoistingLimits
Определяет самую высокую точку, где пакеты могут быть подняты, переопределяя для текущей рабочей области значение, первоначально заданное для nmHoistingLimits. Допустимые значения — workspaces, dependencies и none
selfReferences
Определяет, разрешено ли рабочим областям требовать себя — это приводит к созданию самоссылочных символических ссылок, переопределяя для текущей рабочей области значение, первоначально заданное для nmSelfReferences.
© 2016–present Yarn Contributors
Licensed under the BSD License.
https://v3.yarnpkg.com/configuration/manifest