freeCodeCamp/guide/russian/nodejs/npm/index.md

17 KiB
Raw Blame History

title localeTitle
NPM NPM

NPM

Node.js позволяет писать приложения в JavaScript на сервере. Он построен на среде исполнения V8 JavaScript и написан на C ++ - так что это быстро. Первоначально он был предназначен как серверная среда для приложений, но разработчики начали использовать его для создания модулей, чтобы помочь им в локальной автоматизации задач. С тех пор вся новая экосистема инструментов, основанных на узлах, эволюционировала, чтобы трансформировать лицо переднего плана.

Чтобы использовать эти модули (или пакеты) в Node.js, мы должны иметь возможность устанавливать и управлять ими полезным способом. Здесь приходит npm, менеджер пакетов Node. Он устанавливает пакеты, которые вы хотите использовать, и предоставляет полезный интерфейс для работы с ними.

Установка NPM

Чтобы установить npm мы должны загружать двоичные файлы Nodejs в вашем локальном envrionment. В двоичные файлы Node.js включена последняя версия npm. Чтобы убедиться, что:

npm -v 
 5.6.0 

Node Package Manager (NPM) предоставляет две основные функции:

  • Интернет-хранилища для пакетов / модулей node.js, которые можно найти на npmjs.com .

  • Утилита командной строки для установки пакетов Node.js, управления версиями и управления зависимостями пакетов Node.js.

Установка модулей с использованием NPM

npm может устанавливать пакеты в локальном или глобальном режиме. По умолчанию NPM устанавливает любую зависимость в локальном режиме. В локальном режиме он устанавливает пакет в папку node_modules в родительском рабочем каталоге. Это место принадлежит текущему пользователю. Глобальные пакеты устанавливаются в {prefix} /lib/node_modules/ который принадлежит root, где {prefix} обычно /usr/ or /usr/local . Это означает, что вам придется использовать sudo для установки пакетов по всему миру, что может привести к ошибкам при разрешении сторонних зависимостей, а также к проблемам безопасности.

Установка пакетов в глобальном режиме

Любые пакеты, установленные во всем мире, станут доступны из командной строки. Мы используем флаг -global или -g для установки пакетов по всему миру.

$ npm install uglify-js --global 

Мы можем перечислить глобальные пакеты, которые мы установили, с командой списка npm.

$ npm list --global 
 /usr/local/lib 
 ├─┬ npm@5.6.0 
 │ ├── abbrev@1.1.0 
 │ ├── ansi-regex@2.1.1 
 │ ├── ansicolors@0.3.2 
 │ ├── ansistyles@0.1.3 
 .................... 
 └─┬ uglify-js@3.0.15 
  ├─┬ commander@2.9.0 
  │ └── graceful-readlink@1.0.1 
  └── source-map@0.5.6 

Однако вывод является довольно подробным. Мы можем изменить это с помощью опции --depth = 0.

$ npm list -g --depth=0 
 /usr/local/lib 
 ├── npm@5.6.0 
 └── uglify-js@3.0.15 

Установка пакетов в локальном режиме

Когда вы устанавливаете пакеты локально, вы обычно делаете это с помощью файла package.json.

npm install --save express 

Теперь вы можете использовать этот модуль в своем js-файле, как показано ниже.

const express = require('express'); 

Локальные модули далее делятся на два типа зависимостей: devDepenednecies и dependencies . Разница между этими двумя заключается в том, что devDependencies - это модули, которые необходимы только во время разработки, а зависимости - это модули, которые также требуются во время выполнения. Чтобы сохранить зависимость как devDependency при установке, нам нужно сделать npm install --save-dev , а не только npm install --save .

Хорошая стенограмма для установки devDependency, которую я люблю использовать, - npm i -D . Сокращение для сохранения регулярной зависимости - это -S вместо -D .

Установка конкретной версии пакета

Для этого укажем версию пакета, которую мы хотим установить.

$ npm install underscore@1.8.2 -S 

Чтобы удалить глобальную зависимость, используйте флаг -g .

Удаление локальных пакетов

npm - менеджер пакетов, поэтому он должен иметь возможность удалить пакет. Мы можем удалить пакет:

$ npm uninstall underscore -S 

Чтобы обновить глобальную зависимость, используйте флаг -g .

Обновление пакета

Чтобы обновить пакет, вы можете:

$ npm update underscore -S 

Чтобы проверить, доступно ли обновление для любого пакета, связанного с нашим проектом:

$ npm outdated 
 
 Package     Current  Wanted  Latest  Location 
 underscore    1.8.2   1.8.3   1.8.3  project 

Текущий столбец показывает нам версию, установленную локально. Последняя колонка сообщает нам последнюю версию пакета. И столбец Wanted сообщает нам последнюю версию пакета, которую мы можем обновить, не нарушая существующий код.

Управление зависимостями с помощью package.json

Если не использовать определенный флаг и установить модуль, например, npm install express будет устанавливать модуль в папке node_modules локально, но package.json который ведет записи обо всех зависимостях, которые мы используем в проекте, не будет обновляться с нашим добавлением. Таким образом, пакет будет специфичным для разработки, он не будет установлен в среде runtimme. Убедитесь, что вы всегда используете правильный флаг и сохраняете файл package.json .

Когда вы устанавливаете пакеты локально, вам нужен файл package.json. Для его создания вы можете сделать это, используя команду npm init . Это вызовет некоторые вопросы, которые, нажав enter, вы можете сохранить значения по умолчанию.

$ npm init 
 package name: (project) 
 version: (1.0.0) 
 description: Demo of package.json 
 entry point: (index.js) 
 test command: 
 git repository: 
 keywords: 
 author: 
 license: (ISC) 

Подумайте, что package.json является хранителем всех зависимостей или проявлением проекта Node.js. Если вам нужен более быстрый способ сгенерировать файл package.json, используйте npm init --y .

Список общих атрибутов в файле package.json :

  • name - имя пакета

  • версия - семантическая версия пакета

  • описание - описание пакета

  • домашняя страница - домашняя страница пакета

  • автор - автор пакета

  • вкладчики - имя вкладчиков в пакет

  • dependencies - список зависимостей. NPM автоматически устанавливает все зависимости, указанные здесь, в папке node_module пакета.

  • devDependencies - список всех зависимостей, зависящих от разработки

  • репозиторий - тип репозитория и URL-адрес пакета

  • главная - точка входа пакета

  • ключевые слова - ключевые слова

  • лицензия - лицензия на ваш пакет, чтобы люди знали, как им разрешено использовать его, и любые ограничения, которые вы устанавливаете на него.

  • scripts - Свойство «scripts» - это словарь, содержащий команды скриптов, которые выполняются в разное время на жизненном цикле вашего пакета.

  • config - объект, который можно использовать для установки параметров конфигурации, используемых в сценариях пакета, которые сохраняются при обновлении.

Пример:

{ 
   "name": "express", 
      "description": "Fast, unopinionated, minimalist web framework", 
      "version": "4.11.2", 
      "author": { 
 
         "name": "TJ Holowaychuk", 
         "email": "tj@vision-media.ca" 
      }, 
 
   "contributors": [{ 
      "name": "Aaron Heckmann", 
      "email": "aaron.heckmann+github@gmail.com" 
   }, 
 
    ], 
   "license": "MIT", "repository": { 
      "type": "git", 
      "url": "https://github.com/strongloop/express" 
   }, 
   "homepage": "https://expressjs.com/", "keywords": [ 
      "express", 
      "framework", 
      "sinatra", 
      "web", 
      "rest", 
      "restful", 
      "router", 
      "app", 
      "api" 
   ], 
   "dependencies": { 
      "serve-static": "~1.8.1", 
 
   }, 
   "devDependencies": { 
      "jade": "~1.9.1", 
   }, 
   "engines": { 
      "node": ">= 0.10.0" 
   }, 
   "files": [ 
      "LICENSE", 
      "History.md", 
      "Readme.md", 
      "index.js", 
      "lib/" 
   ], 
   "scripts": { 
      "test": "mocha --require test/support/env 
         --reporter spec --bail --check-leaks test/ test/acceptance/", 
      "test-cov": "istanbul cover node_modules/mocha/bin/_mocha 
         -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/", 
      "test-tap": "mocha --require test/support/env 
         --reporter tap --check-leaks test/ test/acceptance/", 
      "test-travis": "istanbul cover node_modules/mocha/bin/_mocha 
         --report lcovonly -- --require test/support/env 
         --reporter spec --check-leaks test/ test/acceptance/" 
   }, 
 
 } 

Скрипты npm

Скрипты npm используются для автоматизации повторяющихся задач. Например, создание вашего проекта, минимизация каскадных таблиц стилей (CSS) и JavaScript (JS). Сценарии также используются при удалении временных файлов и папок и т. Д. Они могут быть настроены и доступны через объект scripts в package.json .

{ 
  "name": "super-cool-package", 
  "version": "1.0.0", 
  "scripts": {} 
 } 

Пример наиболее популярного сценария NPM:

"scripts": { 
    "start": "node index.js", 
    ... 
 } 

npm Кэш

Когда npm устанавливает пакет, он сохраняет копию, поэтому в следующий раз, когда вы захотите установить этот пакет, ему не нужно попадать в сеть. Копии хранятся в каталоге .npm в домашнем каталоге.

$ ls ~/.npm 
 lodash.zipobject 
 log-driver 
 log-symbols 
 logalot 
 logfmt 
 loglevel 
 long-timeout 
 longest 
 longest-strea 

С тех пор этот каталог будет загроможден старыми пакетами, поэтому иногда полезно его очищать.

$ npm cache clean 

Пряжа - альтернатива гамме

Пряжа - также менеджер пакетов JavaScript, разработанный и поддерживаемый Facebook. Оба имеют общий уровень сходства, когда они приходят к их использованию. Предполагается, что он будет быстрее устанавливать зависимости, чем npm. Чтобы установить его:

npm install -g yarn 

Пряжа не намеревается заменить npm, больше похоже на улучшение на нем. Он использует один и тот же файл package.json и сохраняет зависимости от папки node_modules/ . Чтобы инициализировать projcet, вы будете использовать:

yarn init 

Добавление, обновление и устранение зависимостей

Добавление новой зависимости легко и похоже на npm:

yarn add [package-name] 

Если вам нужна конкретная версия пакета или тег, вы можете это сделать.

yarn add express@4.14.1 

Для зависимостей dev, одноранговых зависимостей и необязательных зависимостей вы передаете -dev -peer -optional соответственно.

yarn add gulp --dev 

Будет экономить gulp под devDependencies. Чтобы обновить или удалить пакет, вы просто заменяете команду add либо обновлением, либо удалением, за которым следует имя пакета.

# upgrade a gulp from 3.9.1 to version 4 
 yarn upgrade gulp@4.0 
 
 # remove a gulp 
 yarn remove gulp 

После каждой установки, обновления или удаления пряжа обновляет файл yarn.lock, который отслеживает точную версию пакета, установленную в каталоге node_modules. Аналогичная функция была обновлена ​​в npm. Теперь есть package-lock.json которые ведут себя точно так же, как и yarn.lock в новых версиях npm.

Номера версий пакета и то, что они означают

Первый выпуск пакета npm всегда равен 1.0.0

Исправлены ошибки, или незначительные изменения увеличивали третью цифру, а hense 1.0.0 стал 1.0.1

Новые функции, которые не прерывают предыдущие версии пакета, увеличивают вторую цифру, hense 1.0.0 станет 1.1.0

Все изменения, которые нарушают предыдущие выпуски пакета, увеличивают первую цифру, hense 1.0.0 станет 2.0.0

Важно помнить об этом при обновлении пакетов, чтобы сохранить стабильный проект!