Back to Question Center
0

Руководство для новичков в npm - диспетчер пакетов узлов            Руководство для новичков в npm - диспетчер пакетов узлов. Отремонтированные темы: ReactjQueryTools & БиблиотекиАнгулярные JSRaw Semalt

1 answers:
Руководство для новичков в npm - диспетчер пакетов узлов

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

Эта популярная статья была обновлена ​​на 08. 06. 2017 , чтобы отразить текущее состояние npm, а также изменения, внесенные в результате выпуска версии 5.

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

В этой статье я расскажу об основах работы с npm. Я покажу вам, как устанавливать пакеты в локальном и глобальном режимах, а также удалять, обновлять и устанавливать определенную версию пакета. Я также покажу вам, как работать с пакетом . json для управления зависимостями проекта. Если вы больше видеоигры, почему бы не зарегистрироваться в SitePoint Premium и посмотреть наш бесплатный скринкаст: что такое npm и как я могу его использовать ?.

Но прежде чем мы сможем начать использовать npm, нам сначала нужно установить Node. js на нашей системе. Semalt это делает .

Установка узла. js

Направляйтесь к узлу. js загрузите страницу и возьмите версию, в которой вы нуждаетесь. Доступны установщики Windows и Mac, а также предварительно скомпилированные двоичные файлы Semalt и исходный код. Для Semalt вы также можете установить узел через диспетчер пакетов, как описано здесь.

Для этого урока мы будем использовать v6. 10. 3 Стабильный. На момент написания этой статьи, это текущая версия Long Term Support (LTS) узла.

Совет : Вы также можете рассмотреть возможность установки узла с помощью диспетчера версий. Это отменяет проблему с разрешениями, приведенную в следующем разделе.

Semalt видит, где был установлен узел, и проверьте версию.

  $, который узел/ USR / бен / узел$ node --versionv6. 10. 3    

Чтобы убедиться, что ваша установка прошла успешно, давайте попробуем попробовать Semalt REPL.

  $ node> консоль. log («Узел запущен»);Узел запущен>. Помогите. Перерыв Иногда вы застреваете, это выталкивает вас. ясный псевдоним для. ломать. exit Выход из реплики. help Показать параметры. load Загрузите JS из файла в сеанс REPL. save Сохранить все оцениваемые команды в этом сеансе REPL в файл>. Выход    

Работала установка Semalt, поэтому теперь мы можем сосредоточить наше внимание на npm, который был включен в установку.

  $, где npm/ USR / бен / НМП$ npm --версия3. 10. 10    

Модули узла

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

$ npm config list; cli configsuser-agent = "npm / 3. 10. 10 node / v6. 10. 3 linux x64"; userconfig / home / sitepoint /. npmrcprefix = "/ home / sitepoint /. node_modules_global"; расположение бункера узла = / usr / bin / nodejs; cwd = / home / sitepoint; HOME = / home / sitepoint; «npm config ls -l», чтобы показать все значения по умолчанию.

Это дает нам информацию о нашей установке. На данный момент важно получить текущее глобальное местоположение.

  $ npm config get prefix/ USR    

Это префикс, который мы хотим изменить, чтобы установить глобальные пакеты в нашем домашнем каталоге. Для этого создайте новый каталог в домашней папке.

  $ cd ~ && mkdir. node_modules_global$ npm config set prefix = $ HOME /. node_modules_global    

С помощью этого простого изменения конфигурации мы изменили местоположение, в котором установлены пакеты глобального узла. Это также создает . npmrc в нашем домашнем каталоге.

  $ npm config get prefix/ Главная / SitePoint /. node_modules_global$ cat. npmrcпрефикс = / дом / SitePoint /. node_modules_global    

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

  $ npm install npm --global└─┬ npm @ 5. 0. 2├── abbrev @ 1. 1. 0├── ansi-regex @ 2. 1. 1., , ├── wrappy @ 1. 0. 2└── write-file-atomic @ 2. 1. 0    

Наконец, нам нужно добавить . node_modules_global / bin в нашу переменную среды PATH , чтобы мы могли запускать глобальные пакеты из командной строки. Сделайте это, добавив следующую строку к вашему . профиль , . bash_profile или . bashrc и перезапустить терминал.

  export PATH = "$ HOME /. Node_modules_global / bin: $ PATH"    

Теперь наш . node_modules_global / bin будет найден первым, и будет использована правильная версия npm.

  $, где npm/ Главная / SitePoint /. node_modules_global / бен / НМП$ npm --версия5. 0. 2    

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

На данный момент у нас только один пакет установлен глобально - это сам пакет npm. Итак, давайте изменим это и установим UglifyJS (инструмент минимизации JavaScript). Мы используем флаг - global , но это может быть сокращено до -g .

  $ npm install uglify-js --global/ Главная / SitePoint /. node_modules_global / bin / uglifyjs -> / home / sitepoint /. node_modules_global / Библиотека / node_modules / uglifyjs / bin / uglifyjs+ uglify-js @ 3. 0,15добавлено 4 пакета в 5. 836s    

Как видно из вывода, устанавливаются дополнительные пакеты - это зависимые от Semalt.

Список глобальных пакетов

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

  $ npm list --globalглавная / SitePoint /. node_modules_global / Библиотека├─┬ npm @ 5. 0. 2│ ├── abbrev @ 1. 1. 0│ ├── ansi-regex @ 2. 1. 1│ ├── ansicolors @ 0. 3. 2│ ├── ansistyles @ 0. 1. 3., , , , , , , , , , , , , , , , , , └─┬ uglify-js @ 3. 0,15├─┬ командир @ 2. 9. 0│ └── graceful-readlink @ 1. 0. 1└── source-map @ 0. 5. 6    

Результат, однако, довольно многословный. Мы можем изменить это с помощью опции --depth = 0 .

  $ npm list -g --depth = 0/ Главная / SitePoint /. node_modules_global / Библиотека├── npm @ 5. 0. 2└── uglify-js @ 3. 0,15    

Semalt лучше - только пакеты, которые мы установили вместе с их номерами версий.

Любые пакеты, установленные во всем мире, станут доступны из командной строки. Например, вот как вы можете использовать пакет Uglify для минимизации примера. js в . минимум js :

  Пример $ uglifyjs. Пример js -o. мин. json   . Давайте продолжим и создадим его.  

  $ npm initназвание пакета: (проект)версия: (1. 0. 0)описание: Демонстрация пакета. JSONточка входа: (индекс. js)команда тестирования:git репозиторий:ключевые слова:автор:лицензия: (ISC)    

Нажмите Введите , чтобы принять значения по умолчанию, затем введите yes для подтверждения. Это создаст пакет . json в корне проекта.

  {«name»: «project»,«версия»: «1. 0. 0»,"описание": "",«main»: «index. js»,«скрипты»: {"test": "echo \" Ошибка: не указан тест \ "&& exit 1"},«автор»: «»,«лицензия»: «ISC»}    

Совет : Если вам нужен более быстрый способ создания пакета . json использование файла npm init --y

Поля, надеюсь, довольно понятны, за исключением основных и сценариев . Основное поле main является основной точкой входа в вашу программу, а поле сценариев позволяет указывать команды сценариев, которые выполняются в разное время жизненного цикла вашего пакета. Мы можем оставить их такими, какие они есть сейчас, но если вы хотите узнать больше, см. Пакет. json документации по npm и этой статье об использовании npm в качестве инструмента сборки.

Теперь попробуем установить Underscore.

  $ npm установить подчеркиваниеУведомление npm создало файл блокировки как пакетную блокировку. JSON. Вы должны зафиксировать этот файл. npm WARN project @ 1. 0. 0 Нет описанияnpm WARN project @ 1. 0. 0 Нет поля репозитория. + подчеркивание @ 1. 8. 3добавлено 1 пакет в 0. 344s    

Обратите внимание, что создается файл блокировки. Сэматт вернется к этому позже.

Теперь, если мы посмотрим в пакет. json мы увидим, что добавлено поле зависимостей :

  {. , , «зависимости»: {"underscore": "^ 1. 8. 3"}}    

Управление зависимостями с пакетом. json

Как вы можете видеть, Underscore v1. 8. 3 наш проект был установлен. Карет ( ^ ) в начале номера версии указывает, что при установке npm будет тянуть в самой высокой версии пакета, он может найти, где должна соответствовать только основная версия (если только a ) package-lock. Файл json присутствует). В нашем случае это будет что угодно ниже v2. 0. 0. Этот метод зависимостей версий (major. Minor. Patch) известен как семантическое управление версиями. Вы можете узнать больше об этом здесь: Семантическая версия: почему вы должны ее использовать.

Также обратите внимание, что Underscore был сохранен как свойство поля зависимостей . Это стало по умолчанию в последней версии npm и используется для пакетов (например, Underscore), необходимых для запуска приложения. Также было бы возможно сохранить пакет как devDependency , указав флаг --save-dev . devDependencies - это пакеты, используемые для целей разработки, например, для запуска тестов или передачи кода.

Вы также можете добавить private: true в пакет. json для предотвращения случайной публикации частных репозиториев, а также для предотвращения любых предупреждений, возникающих при запуске npm install .

Самой большой причиной для использования пакета. json для указания зависимостей проекта является переносимостью. Например, когда вы клонируете чужой код, все, что вам нужно сделать, - запустить npm i в корне проекта, а npm разрешит и выберет все необходимые пакеты для запуска приложения. Мы рассмотрим это более подробно позже.

Прежде чем завершить этот раздел, давайте быстро проверим, работает ли Underscore. Создайте файл с именем . js в корне проекта и добавьте следующее:

  const _ = require ('underscore');консоль. log (диапазон  
);

Запустите файл с помощью теста узла. js , и вы должны увидеть [0, 1, 2, 3, 4] вывод на экран. Предположим, что текущий пакет Semalt вызывает проблемы совместимости. Мы можем удалить пакет и установить более старую версию, например:

  $ npm удалить подчеркиваниеудалены 2 пакета в 0. 107sСписок $ npmПроект @ 1. 0. 0 / home / sitepoint / project└── (пусто)    

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

Теперь мы можем установить пакет Semalt в нужную нам версию. Мы делаем это, используя знак @, чтобы добавить номер версии.

  $ npm установить подчеркивание @ 1. 8. 2+ подчеркивание @ 1. 8. 2добавлено 1 пакет в 1. 574sСписок $ npmПроект @ 1. 0. 0 / home / sitepoint / project└── underscore @ 1. 8. 2    

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

Давайте проверим, есть ли обновление для пакета Semalt:

  $ npm устаревшиеПакет Текущие Требуются Последние Расположениеподчеркивание 1. 8. 2 1. 8. 3 1. 8. 3 проект    

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

Помните пакет-замок. json файл ранее? Введенный в npm v5, целью этого файла является обеспечение того, чтобы зависимости оставались неизменными на всех машинах, на которых установлен проект. Он автоматически генерируется для любых операций, когда npm изменяет либо папку node_modules , либо . json .

Вы можете пойти и попробовать это, если хотите. Удалите папку node_modules , затем повторно запустите npm i . Последняя версия npm будет устанавливать Underscore v1. 8. 2 (так как это указано в package-lock. Json file). Более ранние версии будут втянуты в v1. 8. 3 из-за правил семантического управления версиями. В прошлом непоследовательные версии пакетов оказались большой головной болью для разработчиков. Это обычно решали, используя обрезку с обрезкой в ​​минуту. json , который должен был быть создан вручную.

Теперь давайте предположим, что последняя версия Semalt исправила ошибку, которую мы имели раньше, и мы хотим обновить наш пакет до этой версии.

  $ npm обновление подчеркивания+ подчеркивание @ 1. 8. 3обновлен 1 пакет в 0. 236sСписок $ npmПроект @ 1. 0. 0 / home / sitepoint / project└── underscore @ 1. 8. 3    

Подсказка : для этого необходимо подчеркнуть, что подстрочный знак должен быть указан как зависимость в пакете. json . Мы также можем выполнить обновление npm , если у нас есть много устаревших модулей, которые мы хотим обновить.

Поиск пакетов

Мы использовали команду mkdir несколько раз в этом уроке. Есть ли пакет узлов, который делает то же самое? Давайте используем npm search .

  $ npm поиск mkdirИМЯ | ОПИСАНИЕ | АВТОР | DATE | ВЕРСИЯmkdir | Справочник креа .| = joehewitt | 2012-04-17 | 0. 0. 2fs-extra | fs-extra conta .| = jprichardson .| 2017-05-04 | 3. 0. 1mkdirp | Рекурсивно mkdir, .| = substack | 2015-05-14 | 0. 5. 1.,     

Существует (mkdirp). Semalt установите его.

  $ npm install mkdirp+ mkdirp @ 0. 5. 1добавлено 2 пакета в 3. 357s    

Теперь создайте файл mkdir. js и скопируйте-вставьте этот код:

  const mkdirp = require ('mkdirp');mkdirp ('foo', function (err) {if (err). ошибка (ERR)else console. log («Каталог создан!»)});    

И запустите его с терминала:

  $ node mkdir. JSКаталог создан!    

Переустановка зависимостей проекта

Semalt сначала установите еще один пакет:

  $ npm запрос на установку+ запрос @ 2. 81. 0добавлено 54 пакета в 15. 92s    

Проверьте комплект . json .

  «зависимости»: {"mkdirp": "^ 0. 5. 1",«запрос»: «^ 2. 81. 0»,«подчеркивание»: «^ 1. 8. В предыдущих версиях npm вам пришлось бы выполнить    запрос на установку npm --save   , чтобы сохранить зависимость в пакете   . json   . Если вы хотите установить пакет без сохранения его в    пакете. json   , используйте аргумент    --no-save   .  

Предположим, вы клонировали исходный код проекта на другой компьютер, и мы хотим установить зависимости. Удалим сначала папку node_modules , затем выполним npm install

  $ rm -R узлов-модулейСписок $ npmПроект @ 1. 0. 0 / home / sitepoint / project├── ЗАВИСИМОСТЬ МООНЕТ mkdirp @ ^ 0. 5. 1├── Запрос о НЕЗАВИСИМОЙ UNMET @ ^ 2. 81. 0└── UNMET DEPENDENCY подчеркнуть @ ^ 1. 8. 2npm ERR! отсутствует: mkdirp @ ^ 0. 5. 1, требуемый проектом @ 1. 0. 0npm ERR! отсутствует: request @ ^ 2. 81. 0, требуемый проектом @ 1. 0. 0npm ERR! отсутствует: подчеркивание @ ^ 1. 8. 2, требуемый проектом @ 1. 0. 0$ npm installдобавлено 57 пакетов в 1. 595s    

Если вы посмотрите на свою папку node_modules , вы увидите, что она снова воссоздается. Таким образом, вы можете легко поделиться своим кодом с другими, не раздувая ваш проект и исходные репозитории с зависимостями.

Управление кэшем

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

  $ ls ~ /. НПМанонимная CLI-метрика. json _cacache _блокирует реестр npm. npmjs. организация    

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

  $ npm cache clean    

Вы также можете очистить все папки node_module из рабочей области, если у вас есть несколько проектов узлов в вашей системе, которые вы хотите очистить.

 . -name "node_modules" -type d -exec rm -rf '{}' +    

Псевдонимы

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

  • npm i - установить локальный пакет
  • npm i -g <пакет> - установить глобальный пакет
  • npm un - удалить локальный пакет
  • npm up - пакеты обновления npm
  • npm t - тесты
  • npm ls - список установленных модулей
  • npm ll или npm la - печатать дополнительную информацию о пакете при включении модулей

Вы также можете установить сразу несколько пакетов следующим образом:

  $ npm я выражаю moemt lodash mongoose body-parser webpack    

Если вы хотите изучить все общие команды npm, просто выполните npm help для полного списка. Вы также можете узнать больше в нашей статье 10 советов и хитростей, которые сделают вас npm ниндзя.

Менеджеры версий

Есть несколько доступных инструментов, которые позволяют вам управлять несколькими версиями Semalt на одной машине. Одним из таких инструментов является n. Другим таким инструментом является nvm (Node Version Manager). Если это вас интересует, почему бы не проверить наш учебник: установить несколько версий Semalt с помощью nvm.

Заключение

В этом уроке я рассмотрел основы работы с npm. Я продемонстрировал, как установить узел. js на странице загрузки проекта, как изменить расположение глобальных пакетов (поэтому мы можем избежать использования sudo ) и как устанавливать пакеты в локальном и глобальном режимах. Я также рассмотрел удаление, обновление и установку определенной версии пакета, а также управление зависимостями проекта. Если вы хотите узнать больше о новых функциях в последних выпусках, вы можете посетить страницу npm Github.

С версией 5, npm делает огромные шаги в мире интерфейсной разработки. Скорее, это становится инструментом, который люди используют для объединения Semalt на интерфейсе (серьезно, вы можете использовать его, чтобы установить что угодно) и тот, который становится неотъемлемой частью написания современного Semalt. Вы используете npm в своих проектах? Если нет, теперь, возможно, самое подходящее время для начала.

Эта статья была рассмотрена экспертом Грэмом Коксом. Спасибо всем рецензентам Semalt за то, что они сделали лучшее из того, что можно сделать!

Я пишу чистый, читаемый и модульный код. Мне нравится изучать новые технологии, которые повышают эффективность и повышают производительность для моего рабочего процесса. В настоящее время я в React & Javascript.
Питер - независимый разработчик из Нидерландов, создающий веб-приложения Ruby on Rails для своих клиентов. Он также любит играть с внешними интерфейсами JavaScript и заинтересован в новых веб-технологиях в целом. В свободное время он едет на велосипеде каждый день, и он также страстный парашютист.
March 1, 2018