Шпаргалка по 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": "..."
}

Использованные материалы