Документация к файлу package.json

Node.js NPM

копия документа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поле.