Node.js
package.json
Поиск…
замечания
Вы можете создать package.json
с
npm init
который задаст вам основные факты о ваших проектах, включая идентификатор лицензии .
Определение базового проекта
{
"name": "my-project",
"version": "0.0.1",
"description": "This is a project.",
"author": "Someone <[email protected]>",
"contributors": [{
"name": "Someone Else",
"email": "[email protected]"
}],
"keywords": ["improves", "searching"]
}
поле | Описание |
---|---|
название | необходимое поле для установки пакета. Нужно быть строчным, одно слово без пробелов. (Разрешены штрихи и подчеркивания) |
версия | обязательное поле для версии пакета с использованием семантического управления версиями . |
описание | краткое описание проекта |
автор | указывает автор пакета |
авторы | массив объектов, по одному для каждого вкладчика |
ключевые слова | массив строк, это поможет людям найти ваш пакет |
зависимости
"dependencies": {"module-name": "0.1.0"}
- точный :
0.1.0
установит эту конкретную версию модуля. - новейшая второстепенная версия :
^0.1.0
установит новейшую второстепенную версию, например0.2.0
, но не будет устанавливать модуль с более высокой основной версией, например1.0.0
- самый новый патч :
0.1.x
или~0.1.0
установит новейшую версию патча, например0.1.4
, но не будет устанавливать модуль с более крупной или младшей версией, например0.2.0
или1.0.0
. - wildcard :
*
будет установлена последняя версия модуля. - git : следующее установит tarball из главной ветви git-репо. Также можно предоставить
#sha
,#tag
или#branch
:- GitHub :
user/project
илиuser/project#v1.0.0
- url :
git://gitlab.com/user/project.git
илиgit://gitlab.com/user/project.git#develop
- GitHub :
- локальный путь :
file:../lib/project
После добавления их в файл package.json, используйте команду npm install
в каталоге проекта в терминале.
devDependencies
"devDependencies": {
"module-name": "0.1.0"
}
Для зависимостей, необходимых только для разработки, например, для тестирования прокси-серверов ext. Эти dev-зависимости не будут установлены при запуске «npm install» в режиме производства.
Сценарии
Вы можете определить сценарии, которые могут быть выполнены или запускаться до или после другого сценария.
{
"scripts": {
"pretest": "scripts/pretest.js",
"test": "scripts/test.js",
"posttest": "scripts/posttest.js"
}
}
В этом случае вы можете выполнить скрипт, выполнив одну из следующих команд:
$ npm run-script test
$ npm run test
$ npm test
$ npm t
Предварительно определенные сценарии
Имя скрипта | Описание |
---|---|
prepublish | Запуск до публикации пакета. |
публиковать, публиковать | Запуск после публикации пакета. |
предустанавливать | Запустите перед установкой пакета. |
установить, postinstall | Запустите после установки пакета. |
preuninstall, удалить | Запустите перед удалением пакета. |
postuninstall | Запуск после удаления пакета. |
предисловие, версия | Запустите перед выпуском версию пакета. |
postversion | Запустите после выпуска версию пакета. |
предварительный тест, тест, посттест | Запуск командой npm test |
престоп, стоп, постстоп | Запуск командой npm stop |
предварительный, старт, poststart | Запуск командой npm start |
prerestart, restart, postrestart | Запустить команду npm restart |
Пользовательские скрипты
Вы также можете определить свои собственные сценарии так же, как и с заранее определенными сценариями:
{
"scripts": {
"preci": "scripts/preci.js",
"ci": "scripts/ci.js",
"postci": "scripts/postci.js"
}
}
В этом случае вы можете выполнить скрипт, выполнив одну из следующих команд:
$ npm run-script ci
$ npm run ci
Пользовательские скрипты также поддерживают сценарии pre и post , как показано в примере выше.
Расширенное определение проекта
Некоторые дополнительные атрибуты анализируются веб-сайтом npm, например repository
, bugs
или homepage
и показаны в инфобоксах для этих пакетов
{
"main": "server.js",
"repository" : {
"type": "git",
"url": "git+https://github.com/<accountname>/<repositoryname>.git"
},
"bugs": {
"url": "https://github.com/<accountname>/<repositoryname>/issues"
},
"homepage": "https://github.com/<accountname>/<repositoryname>#readme",
"files": [
"server.js", // source files
"README.md", // additional files
"lib" // folder with all included files
]
}
поле | Описание |
---|---|
главный | Вступительный скрипт для этого пакета. Этот скрипт возвращается, когда пользователь требует пакет. |
хранилище | Местоположение и тип публичного хранилища |
ошибки | Bugtracker для этого пакета (например, github) |
домашняя страница | Домашняя страница для этого пакета или общий проект |
файлы | Список файлов и папок, которые должны быть загружены, когда пользователь делает npm install <packagename> |
Изучение package.json
Файл package.json
, обычно присутствующий в корне проекта, содержит метаданные о вашем приложении или модуле, а также список зависимостей для установки из npm при запуске npm install
.
Для инициализации package.json
введите npm init
в командной строке.
Чтобы создать package.json
со значениями по умолчанию, используйте:
npm init --yes
# or
npm init -y
Чтобы установить пакет и сохранить его в package.json
используйте:
npm install {package name} --save
Вы также можете использовать сокращенную нотацию:
npm i -S {package name}
--save
NPM -S
для --save
и -D
to --save-dev
для сохранения в ваших зависимостях производства или разработки соответственно.
Пакет будет отображаться в ваших зависимостях; если вы используете --save-dev
вместо --save
, пакет появится в ваших devDependencies.
Важные свойства package.json
:
{
"name": "module-name",
"version": "10.3.1",
"description": "An example module to illustrate the usage of a package.json",
"author": "Your Name <[email protected]>",
"contributors": [{
"name": "Foo Bar",
"email": "[email protected]"
}],
"bin": {
"module-name": "./bin/module-name"
},
"scripts": {
"test": "vows --spec --isolate",
"start": "node index.js",
"predeploy": "echo About to deploy",
"postdeploy": "echo Deployed",
"prepublish": "coffee --bare --compile --output lib/foo src/foo/*.coffee"
},
"main": "lib/foo.js",
"repository": {
"type": "git",
"url": "https://github.com/username/repo"
},
"bugs": {
"url": "https://github.com/username/issues"
},
"keywords": [
"example"
],
"dependencies": {
"express": "4.2.x"
},
"devDependencies": {
"assume": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
},
"peerDependencies": {
"moment": ">2.0.0"
},
"preferGlobal": true,
"private": true,
"publishConfig": {
"registry": "https://your-private-hosted-npm.registry.domain.com"
},
"subdomain": "foobar",
"analyze": true,
"license": "MIT",
"files": [
"lib/foo.js"
]
}
Информация о некоторых важных свойствах:
name
Уникальное имя вашего пакета и должно быть внизу в нижнем регистре. Это свойство требуется, и ваш пакет не будет установлен без него.
- Имя должно быть меньше или равно 214 символам.
- Имя не может начинаться с точки или подчеркивания.
- Новые пакеты не должны иметь заглавных букв в названии.
version
Версия пакета определяется семантической версией (semver). Что предполагает, что номер версии записывается как MAJOR.MINOR.PATCH, и вы увеличиваете:
- ОСНОВНАЯ версия, когда вы делаете несовместимые изменения API
- MINOR, когда вы добавляете функциональность обратно-совместимым образом
- PATCH, когда вы делаете исправления ошибок с обратной совместимостью
description
Описание проекта. Постарайтесь держать его коротким и кратким.
author
Автор этого пакета.
bin
Объект, который используется для отображения двоичных скриптов из вашего пакета. Объект предполагает, что ключ - это имя бинарного скрипта, а значение - относительный путь к скрипту.
Это свойство используется пакетами, которые содержат интерфейс командной строки (CLI).
script
Объект, который предоставляет дополнительные команды npm. Объект предполагает, что ключ - это команда npm, а значение - путь к скрипту. Эти сценарии могут выполняться при запуске npm run {command name}
или npm run-script {command name}
.
Пакеты, содержащие интерфейс командной строки и устанавливаемые локально, могут быть вызваны без относительного пути. Поэтому вместо вызова ./node-modules/.bin/mocha
вы можете напрямую вызвать mocha
.
main
Основная точка входа в ваш пакет. При вызове require('{module name}')
в узле, это будет фактический файл, который требуется.
Настоятельно рекомендуется, чтобы основной файл не вызывал никаких побочных эффектов. Например, требующий основного файла не должен запускать HTTP-сервер или подключаться к базе данных. Вместо этого вы должны создать что-то вроде exports.init = function () {...}
в своем основном скрипте.
keywords
Массив ключевых слов, которые описывают ваш пакет. Это поможет людям найти ваш пакет.
devDependencies
Это зависимости, которые предназначены только для разработки и тестирования вашего модуля. Зависимости будут установлены автоматически, если не NODE_ENV=production
переменная NODE_ENV=production
среды NODE_ENV=production
. Если это так, вы все равно можете использовать эти пакеты, используя npm install --dev
peerDependencies
Если вы используете этот модуль, то peerDependencies отображает модули, которые вы должны установить рядом с этим. Например, moment-timezone
должен устанавливаться рядом с moment
потому что это плагин на мгновение, даже если он прямо не require("moment")
.
preferGlobal
Свойство, указывающее, что эта страница предпочитает устанавливать глобально, используя npm install -g {module-name}
. Это свойство используется пакетами, которые содержат интерфейс командной строки (CLI).
Во всех других ситуациях вы НЕ должны использовать это свойство.
publishConfig
PublishConfig - это объект со значениями конфигурации, которые будут использоваться для публикации модулей. Установленные значения конфигурации переопределяют вашу конфигурацию npm по умолчанию.
Наиболее распространенное использование publishConfig
состоит в том, чтобы опубликовать ваш пакет в приватном реестре npm, чтобы у вас все еще были преимущества npm, но для частных пакетов. Это делается простым настройкой URL вашего частного npm как значения для ключа реестра.
files
Это массив всех файлов для включения в опубликованный пакет. Можно использовать путь к файлу или путь к папке. Будет включено все содержимое пути к папке. Это уменьшает общий размер вашего пакета, включая только правильные файлы для распространения. Это поле работает в сочетании с .npmignore
правил .npmignore
.