Публикация своиих пакетов NPM
Чтобы опубликовать пакет, потребуется собрать все исходные коды и файл package.json
в одной директории. В package.json должны быть указаны название, версия и зависимости пакета:
package.json{
"name": "canvas-project",
"version": "0.1.0",
"devDependencies": {
"canvas-chart": "~1.3.0"
}
}
Посмотрев на этот код, мы можем сказать, что пакет canvas-project
зависит от пакета canvas-chart
. Опубликовать пакет можно с помощью комадны:
npm publish
Метаданные
name
author
contributors
bugs
homepage
version
license
keywords
description
repository
main
private
scripts
dependencies
devDependencies
engines
browserslist
name
Задает имя пакета:
"name": "test-project"
Имя должно содержать менее 214 символов, не должно содержать пробелов, оно может содержать только строчные буквы, дефисы, символы подчеркивания. Это связано с тем, что когда пакет публикуется на npm, он получает собственный URL-адрес на основе этого свойства. Если вы публично опубликовали этот пакет на GitHub, хорошим значением для этого свойства является имя репозитория GitHub.
author
Выводит имя автора пакета:
{
"author": "Flavio Copes (https://flaviocopes.com)"
}
Также можно использовать с этим форматом:
{
"author": {
"name": "Flavio Copes",
"email": "your@email.com",
"url": "https://flaviocopes.com"
}
}
contributors
У проекта может быть один или несколько участников. Это свойство представляет собой массив, в котором они перечислены:
{
"contributors": [
"Flavio Copes <your@email.com> (https://flaviocopes.com)"
]
}
Также можно использовать с этим форматом:
{
"contributors": [
{
"name": "Flavio Copes",
"email": "your@email.com",
"url": "https://flaviocopes.com"
}
]
}
bugs
Ссылки на систему отслеживания проблем с пакетами, скорее всего, на страницу проблем GitHub:
{
"bugs": "https://github.com/flaviocopes/package/issues"
}
homepage
Устанавливает домашнюю страницу пакета:
{
"homepage": "https://flaviocopes.com/package"
}
version
Указывает текущую версию пакета:
"version": "1.0.0"
Это свойство соответствует нотации семантической версии (semver) для версий, что означает, что версия всегда выражается тремя числами: x.x.x
.
Первое число — основная версия, второе — дополнительная версия, а третье — версия исправления.
license
Указывает лицензию пакета:
"license": "MIT"
keywords
Это свойство содержит массив ключевых слов, которые связаны с тем, что делает ваш пакет:
"keywords": [
"email",
"machine learning",
"ai"
]
Это помогает людям найти ваш пакет при навигации по похожим пакетам или при просмотре веб-сайта https://www.npmjs.com/.
description
Это свойство содержит краткое описание пакета. Это особенно полезно, если решили опубликовать свой пакет, чтобы люди могли узнать, о чем этот пакет:
"description": "A package to work with strings"
repository
Это свойство указывает, где находится этот репозиторий пакетов:
"repository": "github:flaviocopes/testing",
Обратите внимание на github префикс:
"repository": "gitlab:flaviocopes/testing",
"repository": "bitbucket:flaviocopes/testing",
Вы можете явно установить систему контроля версий:
"repository": {
"type": "git",
"url": "https://github.com/flaviocopes/testing.git"
}
Вы можете использовать разные системы контроля версий:
"repository": {
"type": "svn",
"url": "..."
}
main
Устанавливает точку входа для пакета. Когда вы импортируете этот пакет в приложение, именно там приложение будет искать экспортируемые модули:
"main": "src/main.js"
private
Если установлено, в true
это позволит предотвратить случайную публикацию приложения/пакета на npm
:
"private": true
scripts
Определяет набор сценариев узлов, которые вы можете запускать. Эти сценарии являются приложениями командной строки. Вы можете запустить их, вызвав npm run XXXX
или yarn XXXX
, где XXXX
имя команды, пример:
npm run dev
Вы можете использовать любое имя для команды, а скрипты могут делать буквально все, что вы хотите:
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"unit": "jest --config test/unit/jest.conf.js --coverage",
"test": "npm run unit",
"lint": "eslint --ext .js,.vue src test/unit",
"build": "node build/build.js"
}
dependencies
Устанавливает список npm
пакетов, установленных как зависимости, когда вы устанавливаете пакет с помощью npm
или yarn
, раздел предназначен для установки только на продакшен (боевой) версии:
npm install имя_команды
yarn add имя_команды
"dependencies": {
"vue": "^2.5.2"
}
devDependencies
Устанавливает список npm
пакетов, установленных как зависимости, когда вы устанавливаете пакет с помощью npm
или yarn
, раздел предназначен для установки только на тестовой (не боевой) версии:
npm install имя_команды
yarn add имя_команды
"devDependencies": {
"autoprefixer": "^7.1.2",
"babel-core": "^6.22.1"
}
engines
Устанавливает, с какими версиями Node.js и другими командами работает этот пакет/приложение:
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0",
"yarn": "^0.13.0"
}
browserslist
Используется чтобы указать какие браузеры и их версии, вы хотите поддерживать. На него ссылаются Babel, Autoprefixer и другие инструменты, чтобы добавлять только полифиллы и резервные копии, необходимые для целевых браузеров:
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
Эта конфигурация означает, что вы хотите поддерживать последние 2 основные версии всех браузеров с использованием не менее 1% из статистики CanIUse.com, кроме IE8 и ниже.