копия документа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
.
Есть несколько специальных названий скриптов. если определеноpreinstall
script, который будет вызываться перед установкой пакета. Из соображений совместимости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
поле.