копия документаyarnpkgОфициальный документ, а не полная копия, добавляет некоторое содержание и некоторые описания и хранится как примечание. Вы также можете обратиться кnpm documentation, std-pkg, clean-publish, package-json-validator, cosmiconfig, rc.
欢迎来点 Star:GitHub.com/Jay WC называют любовью/…
Важные поля
твойpackage.jsonДва самых важных поля вnameа такжеversion, без них ваш пакет не установится.nameа такжеversionПоля используются вместе для создания уникального идентификатора.
name
{
"name": "my-awesome-package"
}
Это ваш包Имя. Он используется в URL-адресах, в качестве аргументов в командной строке иnode_modulesимя каталога в .
yarn add [包名]
# or
npm install [包名]
node_modules/[包名]
https://registry.npmjs.org/[包名]/-/[包名]-[version].tgz
правило
- Должно быть меньше или равно 214 символам (включая
@scope/для пакета объема). - нельзя указать точками (
.) или подчеркивание (_)начало. - Имя не должно содержать заглавных букв.
- Должны использоваться только безопасные символы URL.
Tips
- Не используйте и
Node.jsОсновной модуль имеет то же имя. - не включать в название
jsилиnodeслово. - Короткий и лаконичный, люди могут понять функцию пакета, когда увидят название, и помнят, что он также будет использоваться в
require()в вызове. - Убедитесь, что имя находится вnpm registryединственный.
version
Текущая версия пакета, строго соблюдаетсяSemantic Versioning 2.0.0Спецификация семантической версии.
{
"version": "1.0.0"
}
информационное поле
description
Описание — это строка, которая помогает пользователям понять функцию пакета, и диспетчер пакетов также будет использовать эту строку в качестве ключа поиска.
{
"description": "我的包的概要简短描述"
}
keywords
Ключевые слова — это массив строк, полезный при поиске пакетов в менеджере пакетов.
{
"keywords": ["short", "relevant", "keywords", "for", "searching"]
}
license
Для всех пакетов должна быть указана лицензия, чтобы пользователи знали, с какой авторизацией они используют пакет и какие дополнительные ограничения есть у пакета.
{
"license": "MIT",
"license": "(MIT or GPL-3.0)",
"license": "SEE LICENSE IN LICENSE_FILENAME.txt",
"license": "UNLICENSED"
}
Поощряйте использование открытого исходного кода(OSI-approved)лицензии, если у вас нет особых причин не использовать ее. Если пакет, который вы разрабатываете, является частью вашей работы, лучше обсудить его с компанией, прежде чем принимать решение.
Поле лицензии должно быть одним из следующих:
- Если вы используете стандартную лицензию, вам потребуется действующаяИдентификатор лицензии SPDX.
- Если вы используете несколько стандартных лицензий, вам потребуется действующаяSPDX License Expression 2.0 Syntax Expression.
- Если вы используете нестандартную лицензию,
SEE LICENSE IN <文件名>Строка, указывающая нав каталоге верхнего уровня вашего пакета. - Если вы не хотите разрешать другим использовать ваши частные или нераскрытые пакеты ни на каких условиях,
UNLICENSEDнить.
Поле класса ссылки
Различные поля ссылок на проектную документацию, эскалацию проблем и сайты размещения кода.
homepage
Домашняя страница проекта или домашняя страница документации пакета.
{
"homepage": "https://your-package.org"
}
bugs
URL-адрес системы обратной связи по проблемам или ссылка, например адрес электронной почты. Таким образом пользователи могут оставлять вам отзывы.
{
"bugs": "https://github.com/user/repo/issues"
}
repository
где размещен код.
{
"repository": { "type": "git", "url": "https://github.com/user/repo.git" },
"repository": "github:user/repo",
"repository": "gitlab:user/repo",
"repository": "bitbucket:user/repo",
"repository": "gist:a1b2c3d4e5f"
}
The repository is the location where the actual code for your package lives.
Поля класса обслуживания проекта
Сопровождающий проекта.
author
Информация об авторе, лицо.
{
"author": { "name": "Your Name", "email": "you@example.com", "url": "http://your-website.com" },
"author": "Your Name <you@example.com> (http://your-website.com)"
}
contributors
Информация о соавторах, наверное, много людей.
{
"contributors": [
{ "name": "Your Friend", "email": "friend@example.com", "url": "http://friends-website.com" }
{ "name": "Other Friend", "email": "other@example.com", "url": "http://other-website.com" }
],
"contributors": [
"Your Friend <friend@example.com> (http://friends-website.com)",
"Other Friend <other@example.com> (http://other-website.com)"
]
}
информация о файле
Указывает файлы, которые нужно включить в проект, и файл входа для проекта.
files
{
"files": [
"filename.js",
"directory/",
"glob/*.{js,json}"
]
}
Файлы, содержащиеся в проекте, могут быть отдельными файлами, целыми папками или файлами, совпадающими с подстановочными знаками.
main
Входной файл для проекта.
{
"main": "filename.js"
}
bin
Исполняемые файлы, которые устанавливаются вместе с проектом.
{
"bin": "bin.js",
"bin": {
"命令名称": "bin/命令路径/命令名称.js",
"other-command": "bin/other-command"
}
}
man
Входной файл для проекта.
{
"man": "./man/doc.1",
"man": ["./man/doc.1", "./man/doc.2"]
}
directories
{
"directories": {
"lib": "path/to/lib/",
"bin": "path/to/bin/",
"man": "path/to/man/",
"doc": "path/to/doc/",
"example": "path/to/example/"
}
}
Когда ваш пакет установлен, вы можете указать точное место для размещения двоичных файлов, справочных страниц, документации, примеров и т. д.
types
Это толькоTypeScriptполе действует, если ваш пакет имеетmain.jsфайл, вам также нужноpackage.jsonВ файле указывается основной файл декларации. БудуtypesСвойство настроено так, чтобы оно указывало на связанный файл объявления. Например:
{
"types": "./lib/main.d.ts",
}
Если ваш основной файл декларации называетсяindex.d.tsи находится в корневом каталоге пакета (index.jsрядом), разметка не требуетсяtypesсвойств, рекомендуется это сделать.
Поле пакета
module
pkg.moduleукажет наES2015Модули для синтаксиса модуля, но указывают только на функции синтаксиса, поддерживаемые целевой средой. полное описаниеэто здесь.
служба поддержки:rollup, webpack
browser
поля предоставляются автором модуля какJavaScriptПодсказка для пакета или компонента, чтобы упаковать модуль для использования клиентами. предложениеэто здесь.
esnext
полныйПредложение здесь. Краткое описание:
-
esnext: исходный код, использующий функции этапа 4 (или старше) в модулях ES, не скомпилированный. -
main: указывает на модуль CommonJS (или модуль UMD), чейJavaScriptа такжеNode.jsЭто настолько современно, насколько нынешний может справиться. - наиболее
moduleВариант использования должен быть в состоянии пройтиesnextиметь дело с. -
browserв состоянии пройтиesnextрасширенная версия для обработки
{
"main": "main.js",
"esnext": {
"main": "main-esnext.js",
"browser": "browser-specific-main-esnext.js"
}
}
Смотрите также:Delivering untranspiled source code via npm
поле класса задач
Пакет также может содержать некоторые исполняемые сценарии или другую информацию о конфигурации.
scripts
{
"scripts": {
"build-project": "node build-project.js"
}
}
Скрипты — отличный способ определить задачи, связанные с автоматизацией разработки, например, с использованием простого процесса сборки или инструментов разработки. существуетscriptsДоступ к сценарию, определенному в поле, можно получить черезyarn run <script>команда для выполнения. Например, приведенный вышеbuild-projectДоступ к скриптам можно получить черезyarn run build-projectпозвонить и выполнитьnode build-project.js.
Есть несколько специальных названий скриптов. если определеноpreinstallscript, который будет вызываться перед установкой пакета. Из соображений совместимостиinstall,postinstallа такжеprepublishСкрипт будет вызван после завершения установки пакета.
startЗначение сценария по умолчанию равноnode server.js.
Справочная документация:npm docs
специфическийscripts
Для следующего скриптаnpmслужба поддержкиpackage.jsonдокументscriptsПоле команды по умолчанию:
-
prepublish: запускать до того, как пакет будет упакован и опубликован, и локально без каких-либо аргументовnpmзапустить перед установкой. (следующим образом) -
prepare: запустить перед упаковкой и публикацией пакета локально без каких-либо аргументовnpm installи при установке зависимостей git (см. ниже). Это вpreublishпосле бега, но вpreublishOnlyбеги раньше. -
prepublishOnly: выполнить перед подготовкой и упаковкой пакета, только для выпусков npm. (следующим образом.) -
prepack: упаковкаtarballбежать раньше (вnpm pack,npm publish, и при установке зависимостей git) -
postpack: генерируетtarballПосле этого бегите и двигайтесь к конечному пункту назначения. -
publish,postpublish: запустить после публикации пакета. -
preinstall: запустить перед установкой пакета. -
install,postinstall: запустить после установки пакета. -
preuninstall,uninstall: выполнить перед удалением пакета. -
postuninstall: запустить после удаления пакета. -
preversion: выполнить перед изменением версии пакета. -
version: запускать после изменения версии пакета, но перед фиксацией. -
postversion: запустить после изменения версии пакета, затем зафиксировать. -
pretest,test,posttest: Зависит отnpm testкоманда работает. -
prestop,stop,poststop: Зависит отnpm stopкоманда работает. -
prestart,start,poststart: Зависит отnpm startкоманда работает. -
prerestart,restart,postrestart: Зависит отnpm restartкоманда работает. ПРИМЕЧАНИЕ. Если сценарий перезапуска не указан,npm restartбудет работатьstopа такжеstartсценарий. -
preshrinkwrap,shrinkwrap,postshrinkwrap: Зависит отnpm shrinkwrapкоманда работает.
Справочная документация:npm docs.
config
{
"config": {
"port": "8080"
}
}
Настройте параметры или параметры для вашего скрипта.
Поле класса описания зависимости
Ваш пакет, скорее всего, зависит от других пакетов. ты можешь в своемpackage.jsonУкажите эти зависимости в файле.
dependencies
Это зависимости, необходимые как для версии разработки, так и для версии вашего пакета.
{
"dependencies": {
"package-1": "^3.1.4",
"package-2": "file:./path/to/dir"
}
}
Вы можете указать точную версию, минимальную версию (например,
>=) или диапазон версий (например,>= ... <).
Пакет также может указывать на папку локального каталога.
devDependencies
Это пакеты, которые необходимы только во время разработки вашего пакета, но не будут установлены в рабочей среде.
{
"devDependencies": {
"package-2": "^0.4.2"
}
}
peerDependencies
Параллельные зависимости позволяют указать совместимость вашего пакета с другими версиями пакета.
{
"peerDependencies": {
"package-3": "^2.7.18"
}
}
optionalDependencies
Необязательные зависимости могут использоваться с вашим пакетом, но не являются обязательными. Если дополнительный пакет не найден, установка может быть продолжена.
{
"optionalDependencies": {
"package-5": "^1.6.1"
}
}
bundledDependencies
Зависимости пакетов — это массив имен пакетов, которые будут упакованы вместе с вашим пакетом при его публикации.
{
"bundledDependencies": [
"package-4"
]
}
система
Вы можете предоставить информацию системного уровня, связанную с вашим пакетом, например совместимость с операционной системой.
engines
Укажите версию, которую должны использовать клиенты, использующие ваш пакет, это проверитprocess.versionsи текущийyarnВерсия.
{
"engines": {
"node": ">=4.4.7 <7.0.0",
"zlib": "^1.2.8",
"yarn": "^0.14.0"
}
}
Эта проверка следует обычномуsemverправило, за одним исключением. Это позволяет предварительным версиям соответствовать предварительным версиям, которые явно не указывают предварительную версию.semver. Например,1.4.0-rc.0соответствовать>=1.3.0, но отличается от типичногоsemverПроверьте на несоответствие.
os
Этот параметр указывает совместимость вашего пакета с ОС, он будет проверятьprocess.platform.
{
"os": ["darwin", "linux"],
"os": ["!win32"]
}
cpu
Используйте эту опцию, чтобы указать, что ваш пакет будет работать только на определенных архитектурах ЦП, который проверяетprocess.arch.
{
"cpu": ["x64", "ia32"],
"cpu": ["!arm", "!mips"]
}
выпускать
private
{
"private": true
}
Если вы не хотите, чтобы ваш пакет публиковался в менеджере пакетов (npm или частный менеджер пакетов), установитеtrue.
publishConfig
Эти значения конфигурации будут использоваться при публикации вашего пакета. Например, вы можете пометить пакеты.
{
"publishConfig": {
"registry": "https://registry.npm.taobao.org"
}
}
Это набор значений конфигурации, которые будут использоваться при публикации. Особенно удобно, если вы хотите установить флаги, реестр или права доступа, чтобы гарантировать, что данный пакет не помечен какlatest, опубликовано для широкой публикиregistryИли по умолчанию модули с областью действия (@scoped) являются частными.
Любое значение конфигурации может быть переопределено, но толькоtag,registryа такжеaccessможет быть важно для публикации,npm-config.
Yarn
flat
Если ваш пакет допускает только одну версию данной зависимости, вы хотите принудительно и в командной строкеyarn install --flatДля того же поведения установите это значение наtrue.
{
"flat": true
}
Обратите внимание, что если вашpackage.jsonВключать"flat": trueи другие пакеты зависят от вашего пакета (например, если вы создаете библиотеку, а не приложение), эти другие пакеты также должны находиться в своихpackage.jsonплюс"flat": trueили в командной строке с помощьюyarn install --flatУстановить.
resolutions
{
"resolutions": {
"transitive-package-1": "0.0.29",
"transitive-package-2": "file:./local-forks/transitive-package-2",
"dependencies-package-1/transitive-package-3": "^2.1.1"
}
}
Позволяет переопределить версию конкретной вложенной зависимости. Полную спецификацию см.Выборочное разрешение версии RFC.
Уведомление,yarn install --flatКоманда автоматическиpackage.jsonдобавить в файлresolutionsполе.