Шпаргалка по npm
Содержание
Введение
npm
- Node.js package manager - менеджер пакетов Node.js. По умолчанию берёт пакеты из репозитория npmjs.com
Команды менеджера пакетов
Для управления проектом и пакетами предназначены следующие команды:
npm init
- создать файлpackage.json
в текущем каталоге, создав таким образом новый проект,npm install <пакет>
илиnpm i <пакет>
- установить указанный пакет в каталогnode_modules
в текущем каталоге,npm install <пакет> --save
илиnpm i <пакет> -S
- установить указанный пакет и добавить его в секцию зависимостей проекта,npm install <пакет> --save-dev
илиnpm i <пакет> -D
- установить указанный пакет и добавить его в секцию зависимостей, необходимых только для разработки проекта,npm install <пакет> -g
илиnpm i <пакет> -g
- установить указанный пакет "глобально" - для общего использования, а не только для текущего проекта,npm install
- установить пакеты, указанные в файлеpackage.json
в текущем каталоге,npm ci
- установить пакеты с использованием кэша пакетов и файлаpackage-lock.json
,npm list --depth 0
- показать список установленных пакетов в проекте,npm list -g --depth 0
- показать список "глобально" установленных пакетов,npm uninstall <пакет>
- удалить пакет,npm cache clean --force
- очистить кэш пакетов,npm audit
- посмотреть список уязвимостей установленных пакетов и рекомендации по их устранению,npm audit fix
- автоматически обновить пакеты до безопасных версий,npm update
- обновить пакеты,npm publish
- опубликовать пакет, описанный в файлеpackage.json
в текущем каталоге,npm set registry <репозиторий>
- настроить npm для работы с приватным репозиторием,npm config set registry <репозиторий>
- настроить npm для работы с приватным репозиторием,npm config set proxy <прокси-сервер>
- настроить прокси-сервер для использования с протоколом HTTP,npm config set https-proxy <прокси-сервер>
- настроить прокси-сервер для использования с протоколом HTTPS,npm config set prefix <путь>
- поменить каталог для "голбальной" установки пакетов,npm root -g
- показать каталог для "глобальной" установки пакетов.
Структура файла package.json
Пример файла package.json
:
{
"name": "test-project",
"version": "1.0.0",
"description": "A Vue.js project",
"main": "src/main.js",
"private": true,
"scripts": {
"start": "npm run dev",
"test": "npm run unit",
"build": "node build/build.js"
},
"dependencies": {
"vue": "^2.5.2"
},
"devDependencies": {
"eslint": "^4.15.0",
},
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
Назначение полей:
name
- имя пакета, может состоять только изversion
- версия пакета, по правилам семантического версионирования, должна состоять из трёх номеров, разделённых точками (номера мажорной версии, минорной версии и номер исправления),description
- краткое описание пакета,homepage
- домашняя страница пакета,license
- сведения о лицензии пакета,keywords
- список ключевых слов,main
- для программ указывает точку входа в приложение,private
- логическое поле, укзаывающее на то, что приложение не подлежит публикации,scripts
- задаёт набор скриптов, которые можно запускать с помощью командыnpm run <скрипт>
,dependencies
- содержит список пакетов, которые используются для работы пакет,devDendencies
- содержит список пакетов, которые используются в процессе разработки пакет,engines
- содержит список версий Node.js, на которых работает пакет,browserlist
- содержит список браузеров и их версий, в которых работает пакет (в указанном примере - которыми пользуется больше одного процента пользователей, последние две мажорные версии браузера, Internet Explorer только старше 8 версии).
Символы в номерах версий пакетов:
~
- при обновлении пакетов устанавливать только исправленные версии,^
- при обновлении пакетов устанавливать минорные обновления (разрешается увеличивать часть версии только после последней точки),*
- любая версия пакета,>
- лобая версия пакета выше указанной,>=
- лобая версия пакета выше или равная указанной,<
- лобая версия пакета ниже указанной,<=
- лобая версия пакета ниже или равная указанной,=
- версия пакета должа быть точно равна указанной,-
- используется для указания диапазона подходящих версий, например,2.1.0 - 2.6.2
,||
- используется для комбинирования версий пакетов, например,< 2.1 || > 2.6
,
Если вместо версии указано ключевое слово latest
, то требуется самая свежая версия пакета.
Если указан только номер версии без дополнительных символов, то нужен пакет точно соответствующий указанной версии, как если бы перед номером версии был бы указан символ =
.
Кроме этого в файле могут присутствовать поле автора:
{
"author": "Flavio Copes <flavio@flaviocopes.com> (https://flaviocopes.com)"
}
Или в таком формате:
{
"author": {
"name": "Flavio Copes",
"email": "flavio@flaviocopes.com",
"url": "https://flaviocopes.com"
}
}
Поле с описанием других вкладчиков в пакет:
{
"contributors": [
"Flavio Copes <flavio@flaviocopes.com> (https://flaviocopes.com)"
]
}
Или так:
{
"contributors": [
{
"name": "Flavio Copes",
"email": "flavio@flaviocopes.com",
"url": "https://flaviocopes.com"
}
]
}
Поле репозитория пакета может принимать вид, соответствующей одной из приведённых ниже строчек:
"repository": "github:flaviocopes/testing",
"repository": "gitlab:flaviocopes/testing",
"repository": "bitbucket:flaviocopes/testing",
Используемую при разработке пакета систему контроля версий можно указать явным образом:
"repository": {
"type": "git",
"url": "https://github.com/flaviocopes/testing.git"
}
Или так:
"repository": {
"type": "svn",
"url": "..."
}