Поиск…


Вступление

Диспетчер пакетов узлов (npm) предоставляет следующие две основные функции: онлайн-репозитории для пакетов / модулей node.js, которые можно найти на search.nodejs.org. Утилита командной строки для установки пакетов Node.js, управления версиями и управления зависимостями пакетов Node.js.

Синтаксис

параметры

параметр пример
доступ npm publish --access=public
бункер npm bin -g
редактировать npm edit connect
Помогите npm help init
в этом npm init
устанавливать npm install
ссылка на сайт npm link
чернослив npm prune
публиковать npm publish ./
запустить снова npm restart
Начните npm start
стоп npm start
Обновить npm update
версия npm version

Установка пакетов

Вступление

Пакет - это термин, используемый npm для обозначения инструментов, которые разработчики могут использовать для своих проектов. Это включает в себя все: от библиотек и фреймворков, таких как jQuery и AngularJS, до задач, таких как Gulp.js. Пакеты появятся в папке, обычно называемой node_modules , которая также будет содержать файл package.json . Этот файл содержит информацию обо всех пакетах, включая любые зависимости, которые являются дополнительными модулями, необходимыми для использования определенного пакета.

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


Установка NPM

Обратите внимание, что для установки пакетов необходимо установить NPM.

Рекомендуемый способ установки NPM - использовать один из установщиков со страницы загрузки Node.js. Вы можете проверить, установлено ли у вас уже установленное node.js, выполнив команду npm -v или npm version .

После установки NPM с помощью установщика Node.js обязательно проверьте наличие обновлений. Это связано с тем, что NPM обновляется чаще, чем установщик Node.js. Чтобы проверить наличие обновлений, выполните следующую команду:

npm install npm@latest -g

Как установить пакеты

Для установки одного или нескольких пакетов используйте следующее:

npm install <package-name>
# or
npm i <package-name>...

# e.g. to install lodash and express
npm install lodash express

Примечание . Это установит пакет в каталог, в который в настоящее время входит командная строка, поэтому важно проверить, выбран ли соответствующий каталог

Если у вас уже есть файл package.json в вашем текущем рабочем каталоге, и в нем определены зависимости, то npm install автоматически разрешит и установит все зависимости, перечисленные в файле. Вы также можете использовать сокращенную версию команды npm install которая: npm i

Если вы хотите установить определенную версию пакета, используйте:

npm install <name>@<version>

# e.g. to install version 4.11.1 of the package lodash
npm install [email protected]

Если вы хотите установить версию, которая соответствует определенному диапазону версий, используйте:

npm install <name>@<version range>

# e.g. to install a version which matches "version >= 4.10.1" and "version < 4.11.1"
# of the package lodash
npm install lodash@">=4.10.1 <4.11.1"

Если вы хотите установить последнюю версию, используйте:

npm install <name>@latest

Вышеупомянутые команды будут искать пакеты в центральном репозитории npm на npmjs.com . Если вы не хотите устанавливать из реестра npm , поддерживаются другие параметры, такие как:

# packages distributed as a tarball
npm install <tarball file>
npm install <tarball url>

# packages available locally
npm install <local path>

# packages available as a git repository
npm install <git remote url>

# packages available on GitHub
npm install <username>/<repository>

# packages available as gist (need a package.json)
npm install gist:<gist-id>

# packages from a specific repository
npm install --registry=http://myreg.mycompany.com <package name>

# packages from a related group of packages 
# See npm scope
npm install @<scope>/<name>(@<version>)

# Scoping is useful for separating private packages hosted on private registry from
# public ones by setting registry for specific scope
npm config set @mycompany:registry http://myreg.mycompany.com
npm install @mycompany/<package name>

Обычно модули устанавливаются локально в папке с именем node_modules , которая может быть найдена в текущем рабочем каталоге. Это каталог require() будет использовать для загрузки модулей, чтобы сделать их доступными для вас.

Если вы уже создали файл package.json , вы можете использовать --save (стенографию -S ) или один из ее вариантов, чтобы автоматически добавить установленный пакет к вашему package.json в качестве зависимости. Если кто-то еще установит ваш пакет, npm автоматически прочитает зависимости из файла package.json и установит перечисленные версии. Обратите внимание, что вы все равно можете добавлять и управлять своими зависимостями, редактируя файл позже, поэтому обычно рекомендуется отслеживать зависимости, например:

npm install --save <name> # Install dependencies 
# or
npm install -S <name> # shortcut version --save 
# or
npm i -S <name>

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

npm install --save-dev <name> # Install dependencies for development purposes
# or
npm install -D <name> # shortcut version --save-dev
# or
npm i -D <name>

Установка зависимостей

Некоторые модули не только предоставляют библиотеку для вас, но также предоставляют один или несколько двоичных файлов, которые предназначены для использования в командной строке. Хотя вы все равно можете устанавливать эти пакеты локально, часто рекомендуется устанавливать их в глобальном масштабе, чтобы инструменты командной строки могли быть включены. В этом случае npm автоматически свяжет двоичные файлы с соответствующими путями (например, /usr/local/bin/<name> ), чтобы их можно было использовать из командной строки. Чтобы установить пакет по всему миру, используйте:

npm install --global <name>
# or
npm install -g <name>
# or
npm i -g <name>

# e.g. to install the grunt command line tool
npm install -g grunt-cli

Если вы хотите просмотреть список всех установленных пакетов и связанных с ними версий в текущей рабочей области, используйте:

npm list
npm list <name>

Добавление необязательного аргумента имени может проверить версию определенного пакета.


Примечание. Если вы сталкиваетесь с проблемами разрешений при попытке установить модуль npm во всем мире, не поддавайтесь искушению выпустить sudo npm install -g ... для решения проблемы. Предоставление сторонних скриптов для работы с вашей системой с повышенными привилегиями опасно. Проблема с разрешением может означать, что у вас возникла проблема с тем, как была установлена ​​сама npm . Если вы заинтересованы в установке узла в изолированной среде, вы можете попробовать использовать nvm .

Если у вас есть инструменты для сборки или другие зависимости только для разработки (например, Grunt), вы можете не захотеть связать их с приложением, которое вы развертываете. Если это так, вы хотите, чтобы он был зависимым от разработки, который указан в package.json под devDependencies . Чтобы установить пакет как зависимость от разработки, используйте --save-dev (или -D ).

npm install --save-dev <name> // Install development dependencies which is not included in production 
# or
npm install -D <name>

Вы увидите, что пакет затем добавляется в devDependencies вашего package.json .

Чтобы установить зависимости загруженного / клонированного проекта node.js, вы можете просто использовать

npm install
# or
npm i

npm автоматически считывает зависимости от package.json и устанавливает их.

NPM за прокси-сервером

Если ваш интернет-доступ через прокси-сервер, вам может потребоваться изменить команды установки npm, которые будут обращаться к удаленным репозиториям. npm использует файл конфигурации, который может быть обновлен через командную строку:

npm config set

Вы можете найти свои настройки прокси на панели настроек вашего браузера. После того, как вы получили настройки прокси-сервера (URL-адрес сервера, порт, имя пользователя и пароль); вам необходимо настроить конфигурацию npm следующим образом.

$ npm config set proxy http://<username>:<password>@<proxy-server-url>:<port>
$ npm config set https-proxy http://<username>:<password>@<proxy-server-url>:<port>

username , password , поля port являются необязательными. Как только вы их установили, ваша npm install , npm i -g и т. Д. npm i -g работать правильно.

Области и репозитории

# Set the repository for the scope "myscope"
npm config set @myscope:registry http://registry.corporation.com

# Login at a repository and associate it with the scope "myscope"
npm adduser --registry=http://registry.corporation.com --scope=@myscope

# Install a package "mylib" from the scope "myscope"
npm install @myscope/mylib

Если имя вашего собственного пакета начинается с @myscope а область «myscope» связана с другим репозиторием, npm publish будет загружать ваш пакет в этот репозиторий.

Вы также можете сохранить эти настройки в файле .npmrc :

@myscope:registry=http://registry.corporation.com
//registry.corporation.com/:_authToken=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxx

Это полезно при автоматизации сборки на CI-сервере fe

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

Чтобы удалить один или несколько локально установленных пакетов, используйте:

npm uninstall <package name>

Команда удаления для npm содержит пять псевдонимов, которые также можно использовать:

npm remove <package name>
npm rm <package name>
npm r <package name>

npm unlink <package name>
npm un <package name>

Если вы хотите удалить пакет из файла package.json как часть удаления, используйте флаг --save (стенограмма: -S ):

npm uninstall --save <package name>
npm uninstall -S <package name>

Для зависимостей разработки используйте флаг --save-dev (стенограмма: -D ):

npm uninstall --save-dev <package name>
npm uninstall -D <package name>

Для дополнительной зависимости используйте флаг --save-optional (стенограмма: -O ):

npm uninstall --save-optional <package name>
npm uninstall -O <package name>

Для пакетов, которые установлены глобально, используйте флаг --global (стенограмма: -g ):

npm uninstall -g <package name>

Основные семантические версии

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

Например, если ваш пакет находится в версии 1.2.3 для изменения версии, вам необходимо:

  1. Патч релиз: npm version patch => 1.2.4
  2. младший выпуск: npm version minor => 1.3.0
  3. основной выпуск: npm version major => 2.0.0

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

npm version 3.1.4 => 3.1.4

Когда вы устанавливаете версию пакета с помощью одной из приведенных выше команд npm, npm изменяет поле версии файла package.json, фиксирует его, а также создает новый тег Git с версией с префиксом «v», как если бы вы Выпустили команду:

git tag v3.1.4

В отличие от других менеджеров пакетов, таких как Bower, реестр npm не полагается на теги Git, которые создаются для каждой версии. Но, если вам нравится использовать теги, вы должны помнить о том, чтобы нажимать вновь созданный тег после нападания на версию пакета:

git push origin master (нажать на изменение package.json)

git push origin v3.1.4 (нажать новый тег)

Или вы можете сделать это одним махом:

git push origin master --tags

Настройка конфигурации пакета

Конфигурации пакетов Node.js содержатся в файле package.json который вы можете найти в корне каждого проекта. Вы можете настроить новый файл конфигурации, вызвав:

npm init

Это попытается прочитать текущую рабочую директорию для информации репозитория Git (если она существует) и переменных среды, чтобы попытаться автозаполнять некоторые из значений placeholder для вас. В противном случае он предоставит диалоговое окно ввода для основных параметров.

Если вы хотите создать package.json со значениями по умолчанию, используйте:

npm init --yes
# or
npm init -y 

Если вы создаете package.json для проекта, который вы не собираетесь публиковать в виде пакета npm (т. Е. Исключительно для округления ваших зависимостей), вы можете передать это намерение в файле package.json :

  1. При желании для private публикации запрещается публикация private собственности.
  2. Необязательно установите для свойства license значение «НЕИЗВЕСТНОЕ», чтобы лишить других права использовать ваш пакет.

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

npm install --save <package>

Пакет и связанные метаданные (например, версия пакета) будут отображаться в ваших зависимостях. Если вы сохраните, если в качестве зависимости развития (используя --save-dev ) пакет вместо этого появится в ваших devDependencies .

С помощью этого bare-bones package.json вы будете сталкиваться с предупреждающими сообщениями при установке или обновлении пакетов, сообщая вам, что вам не хватает описания и поля репозитория. Хотя безопасно игнорировать эти сообщения, вы можете избавиться от них, открыв package.json в любом текстовом редакторе и добавив следующие строки к объекту JSON:

[...]
"description": "No description",
"repository": {
  "private": true
},
[...]

Публикация пакета

Во-первых, убедитесь, что вы настроили свой пакет (как указано в разделе «Настройка конфигурации пакета» ). Затем вы должны войти в npmjs.

Если у вас уже есть пользователь npm

npm login

Если у вас нет пользователя

npm adduser

Чтобы проверить, что ваш пользователь зарегистрирован в текущем клиенте

npm config ls

После этого, когда ваш пакет готов к публикации, используйте

npm publish

И все готово.

Если вам нужно опубликовать новую версию, убедитесь, что вы обновили версию своего пакета, как указано в Basic semantic versioning . В противном случае npm не позволит вам публиковать пакет.

{
    name: "package-name",
    version: "1.0.4"
}

Запуск скриптов

Вы можете определить скрипты в вашем package.json , например:

{
  "name": "your-package",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "author": "",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {},
  "scripts": {
    "echo": "echo hello!"
  }
}

Чтобы запустить echo скрипт, запустите npm run echo из командной строки. Произвольные сценарии, такие как echo выше, должны выполняться с npm run <script name> . npm также имеет ряд официальных сценариев, которые он запускает на определенных этапах жизни пакета (например, preinstall ). См. Здесь полный обзор того, как npm обрабатывает поля сценария.

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

  "scripts": {
    "test": "mocha tests",
    "start": "pm2 start index.js"
  }

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

Если ваши скрипты становятся очень длинными, их можно разбить на части, например:

  "scripts": {
    "very-complex-command": "npm run chain-1 && npm run chain-2",
    "chain-1": "webpack",
    "chain-2": "node app.js"
  }

Удаление посторонних пакетов

Для удаления посторонних пакетов (пакетов, которые установлены, но не в списке зависимостей) выполните следующую команду:

npm prune

Чтобы удалить все пакеты dev добавьте флаг --production :

npm prune --production

Подробнее об этом

Список установленных пакетов

Чтобы создать список (древовидное представление) установленных пакетов, используйте

npm list

ls , la и ll - это псевдонимы команды списка . Команды la и ll показывают расширенную информацию, такую ​​как описание и репозиторий.

Опции

Формат ответа можно изменить, передав параметры.

npm list --json
  • json - отображает информацию в формате json
  • long - показывает расширенную информацию
  • parseable - показывает список синтаксического анализа вместо дерева
  • global - показывает глобально установленные пакеты
  • depth - максимальная глубина отображения дерева зависимостей
  • dev / development - показывает devDependencies
  • prod / production - Показывает зависимости

Если вы хотите, вы также можете перейти на домашнюю страницу пакета.

npm home <package name>

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

Поскольку сам npm является модулем Node.js, он может быть обновлен с использованием самого себя.

Если ОС - это Windows, необходимо запустить командную строку в качестве администратора

npm install -g npm@latest

Если вы хотите проверить обновленные версии, вы можете:

npm outdated

Чтобы обновить конкретный пакет:

npm update <package name>

Это обновит пакет до последней версии в соответствии с ограничениями в package.json

Если вы также хотите заблокировать обновленную версию в package.json:

npm update <package name> --save

Блокировка модулей для определенных версий

По умолчанию npm устанавливает последнюю доступную версию модулей в соответствии с семантической версией каждой зависимости. Это может быть проблематично, если автор модуля не придерживается semver и, например, вносит изменения в обновление модуля.

Чтобы заблокировать каждую версию зависимостей (и версии их зависимостей и т. Д.) Для конкретной версии, установленной локально в папке node_modules , используйте

npm shrinkwrap

Затем будет создан npm-shrinkwrap.json вместе с вашим package.json котором перечислены конкретные версии зависимостей.

Настройка для общедоступных пакетов

Вы можете использовать npm install -g для установки пакета «глобально». Обычно это делается для установки исполняемого файла, который вы можете добавить к своему пути для запуска. Например:

npm install -g gulp-cli

Если вы обновите свой путь, вы можете вызвать gulp напрямую.

Во многих ОС npm install -g попытается записать в каталог, который ваш пользователь может не написать, например, /usr/bin . Вы не должны использовать sudo npm install в этом случае, так как существует вероятность угрозы выполнения произвольных скриптов с помощью sudo и пользователь root может создавать каталоги в вашем доме, которые вы не можете записать, что затрудняет будущие установки.

Вы можете указать npm где устанавливать глобальные модули через ваш конфигурационный файл ~/.npmrc . Это называется prefix который можно просмотреть с npm prefix .

prefix=~/.npm-global-modules

Это будет использовать префикс всякий раз, когда вы запускаете npm install -g . Вы также можете использовать npm install --prefix ~/.npm-global-modules чтобы установить префикс при установке. Если префикс совпадает с вашей конфигурацией, вам не нужно использовать -g .

Чтобы использовать глобально установленный модуль, он должен быть на вашем пути:

export PATH=$PATH:~/.npm-global-modules/bin

Теперь, когда вы запускаете npm install -g gulp-cli вы сможете использовать gulp .

Примечание. Когда вы npm install (без -g ), префикс будет каталогом с package.json или текущим каталогом, если нигде не найдено в иерархии. Это также создает каталог node_modules/.bin который имеет исполняемые файлы. Если вы хотите использовать исполняемый файл, специфичный для проекта, нет необходимости использовать npm install -g . Вы можете использовать его в node_modules/.bin .

Связывание проектов для более быстрой отладки и разработки

Построение зависимостей проекта иногда может быть утомительной задачей. Вместо публикации версии пакета для NPM и установки зависимости для проверки изменений используйте npm link . npm link создает символическую ссылку, поэтому последний код может быть протестирован в локальной среде. Это упрощает тестирование глобальных инструментов и зависимостей проектов, позволяя запустить последний код перед выпуском опубликованной версии.

Текст справки

NAME
       npm-link - Symlink a package folder

SYNOPSIS
         npm link (in package dir)
         npm link [<@scope>/]<pkg>[@<version>]

         alias: npm ln

Шаги для связывания зависимостей проекта

При создании ссылки зависимостей обратите внимание, что имя пакета - это то, что будет указано в родительском проекте.

  1. CD в ​​каталог зависимостей (например: cd ../my-dep )
  2. npm link
  3. CD в ​​проект, который будет использовать зависимость
  4. npm link my-dep или если namespaced npm link @namespace/my-dep

Шаги по связыванию глобального инструмента

  1. CD в ​​каталог проекта (например: cd eslint-watch )
  2. npm link
  3. Использовать инструмент
  4. esw --quiet

Проблемы, которые могут возникнуть

Связывание проектов иногда может вызывать проблемы, если уже установлена ​​зависимость или глобальный инструмент. npm uninstall (-g) <pkg> а затем запуск npm link обычно разрешает любые проблемы, которые могут возникнуть.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow