Супер подробное руководство по npm

Node.js

Супер подробное руководство по npm

Введение

npm, менеджер пакетов национального узла.

  • нпм этоNodeОткрытая модульная система регистрации и управленияNode.jsСтандартная платформа распространения пакетов, используемая дляNode.jsВыпуск пакета, распространение, контроль зависимостей, URL:www.npmjs.com/
  • npm предоставляет инструменты командной строки для простой загрузки, установки, обновления и удаления пакетов, а также позволяет публиковать и поддерживать пакеты в качестве разработчика.

Как использовать нпм

  • npm устанавливается вместе с Node.js. Но это может быть не последняя версия, вам нужноnpm install npm@latest -gОбновите до последней версии.

Основные команды:

# 查看 npm 命令列表
$ npm help

# 查看各个命令的简单用法
$ npm -l

# 查看 npm 的版本
$ npm -v

# 查看 npm 的配置
$ npm config list -l

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

npm init инициализирует файл package.json

используется для инициализацииpackage.jsonдокумент. Во время этого процесса пользователю будет задан ряд вопросов.Если вы считаете, что вам не нужно изменять конфигурацию по умолчанию, просто нажмите Enter до конца.

если используется-f(представлятьforce),-y(представлятьyes), пропустить этап опроса и напрямую создать новыйpackage.jsonдокумент.

npm установить переменные окружения

  $ npm set init-author-name 'Your name'
  $ npm set init-author-email 'Your email'
  $ npm set init-author-url 'http://yourdomain.com'
  $ npm set init-license 'MIT'

Приведенная выше команда эквивалентнаnpm initЗначение по умолчанию устанавливается и выполняется позжеnpm initкогда,package.jsonИмя автора, электронная почта, домашняя страница и поля лицензии автоматически записываются с предустановленными значениями. Эта информация будет храниться в домашнем каталоге пользователя.~/.npmrcфайл, чтобы пользователю не приходилось вводить каждый элемент. Если проект имеет другие настройки, вы можете запустить его для этого проекта.npm config.

  $ npm set save-exact true

Когда приведенная выше команда настроена на присоединение к модулю,package.jsonБудет зарегистрирована точная версия модуля, а не необязательный диапазон версий.

npm config

  $ npm config set prefix $dir

Приведенная выше команда укажет$dirКаталог, установленный в глобальный каталог установки модуля. Если у вас в настоящее время есть доступ для записи в этот каталог, запуститеnpm install, уже не надоsudoКомандование авторизовано.

$ npm config set save-prefix ~

Приведенная выше команда делаетnpm install --saveа такжеnpm install --save-devПри установке нового модуля допустимый диапазон версий меняется с символа карата (^) на тильду (~), то есть с разрешения младших обновлений версии на разрешение только обновлений пакетов исправлений.

$ npm config set init.author.name $name
$ npm config set init.author.email $email

Приведенная выше команда указывает на использованиеnpm initкогда генерируетсяpackage.jsonПоле файла по умолчанию.

npm info

npm infoКоманда для просмотра конкретной информации о каждом модуле

$ npm info underscore
$ npm info underscore description
$ npm info underscore homepage
$ npm info underscore version

npm search

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

  $ npm search <搜索词>

npm list

npm listКоманда перечисляет все модули, установленные текущим проектом, и модули, от которых они зависят, в древовидной структуре.

npm list
npm list -global
npm list vue

С глобальным параметром перечислены глобально установленные модули.

npm install

Nodeмодуль принимаетnpm installкоманда для установки.

Каждый модуль может быть «установлен глобально» или «установлен локально». «Глобальная установка» относится к установке модуля в системный каталог, который может вызываться отдельными проектами. Как правило, глобальные установки работают только для модулей инструментов, таких какeslintа такжеgulp. «Локальная установка» означает загрузку модуля в текущий проект.node_modulesподкаталог, а затем только в каталоге проекта модуль может быть вызван

# 本地安装
$ npm install <package name>

# 全局安装
$ sudo npm install -global <package name>
$ sudo npm install -g <package name>

# 也支持直接输入Github代码库地址
$ npm install git://github.com/package/path.git
$ npm install git://github.com/package/path.git#0.1.0

# 强制重新安装
$ npm install <packageName> --force

# 如果你希望,所有模块都要强制重新安装,那就删除node_modules目录,重新执行npm install
$ rm -rf node_modules
$ npm install

Устанавливайте разные версии

Команда install всегда устанавливает последнюю версию модуля, если вы хотите установить конкретную версию модуля, вы можете добавить @ и номер версии после имени модуля.

$ npm install sax@latest
$ npm install sax@0.1.1
$ npm install sax@">=0.1.0 <0.2.0"

# 如果使用--save-exact参数,会在package.json文件指定安装模块的确切版本
$ npm install readable-stream --save --save-exact

$ npm install sax --save
$ npm install node-tap --save-dev
# 或者
$ npm install sax -S
$ npm install node-tap -D

# 如果要安装beta版本的模块,需要使用下面的命令
# 安装最新的beta版
$ npm install <module-name>@beta (latest beta)
# 安装指定的beta版
$ npm install <module-name>@1.3.1-beta.3

# npm install默认会安装dependencies字段和devDependencies字段中的所有模块,如果使用--production参数,可以只安装dependencies字段的模块
$ npm install --production
# 或者
$ NODE_ENV=production npm install

Избегайте системных разрешений

по умолчанию,NpmГлобальные модули устанавливаются в системные каталоги (такие как/usr/local/lib/), обычные пользователи не имеют прав на запись и должны использоватьsudoЗаказ. Это не очень удобно, можно обойтись безrootВ случае разрешения установите глобальный модуль.

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

  prefix = /home/yourUsername/npm

Затем создайте новый в основном каталогеnpmподкаталог

$ mkdir ~/npm

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

Наконец, поместите этот путь в.bash_profileфайл (или.bashrcфайл) добавленPATHПеременная.

export PATH=~/npm/bin:$PATH

npm update

Команда npm update может обновлять локально установленные модули.

# 升级当前项目的指定模块
$ npm update [package name]

# 升级全局安装的模块
$ npm update -global [package name]

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

использовать-Sили--saveпараметры, которые можно обновить при установкеpackage.jsonНомер версии модуля внутри.

Обратите внимание, что изnpm v2.6.1В начале npm update обновляет только модуль верхнего уровня, а не зависимости зависимостей, предыдущая версия обновляется рекурсивно. Если вы хотите получить эффект старой версии, используйте следующую команду.

$ npm --depth 9999 update

npm uninstall

Команда npm uninstall для удаления установленных модулей

$ npm uninstall [package name]

# 卸载全局模块
$ npm uninstall [package name] -global

npm run

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

Команда запуска npm автоматически добавит каталог node_modules/.bin в переменную среды $PATH, поэтому нет необходимости добавлять путь при вызове команды в поле scripts, что позволяет избежать глобальной установки модулей NPM.

Если вы запустите npm run напрямую без каких-либо параметров, все исполняемые команды скрипта будут перечислены в package.json.

npm имеет два встроенных сокращения команд, npm test эквивалентен выполнению npm run test, а npm start эквивалентен выполнению npm run start.

$ npm i eslint --save-dev

пре- и пост-скрипты

npm run предоставляет pre- и post-hooks для каждой команды. Взяв npm run lint в качестве примера, перед выполнением этой команды npm сначала проверит, определены ли два хука prelint и postlint.Если это так, он сначала выполнит npm run prelint, затем запустит npm run lint и, наконец, запустит npm run postlint. .

глобальные модули (доступны в любом месте командной строки) локальные модули

  • Почему глобальные модули можно использовать где угодно

глобальный модуль

  • Параметр bin должен быть настроен в package.json.
  • #! /usr/bin/env node

npm link

Это временно поместить текущий каталог в глобальный.

При разработке NPM-модулей иногда мы хотим попробовать их во время разработки. Например, при локальной отладке require('myModule') автоматически загрузит модули в локальной разработке. Node указывает, что при использовании модуля его необходимо установить в глобальный каталог или каталог node_modules проекта. Для разработки модулей решением является создание символической ссылки в глобальном каталоге node_modules, чтобы указать на локальный каталог модуля.

Ссылка npm может сделать это, и эта символическая ссылка будет создана автоматически.

Представьте себе такой сценарий, вы разработали модуль myModule, каталог src/myModule, и ваш собственный проект myProject использует этот модуль, а каталог проекта src/myProject. Сначала запустите команду npm link в каталоге модуля (src/myModule).

src/myModule$ npm link

Приведенная выше команда создаст файл символической ссылки в глобальном каталоге модулей NPM, имя файла — это имя модуля, указанное в файле package.json.

/path/to/global/node_modules/myModule -> src/myModule

На этом этапе модуль myModule можно вызывать глобально. Однако, если мы хотим, чтобы этот модуль был установлен в проекте, необходимо выполнить следующие шаги.

Перейдите в каталог проекта и снова запустите команду npm link, указав имя модуля.

src/myProject$ npm link myModule

Приведенная выше команда эквивалентна созданию символической ссылки на локальный модуль.

src/myProject/node_modules/myModule -> /path/to/global/node_modules/myModule

Затем вы можете загрузить модуль в свой проект.

var myModule = require('myModule');

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

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

src/myProject$ npm unlink myModule

npm bin

# 项目根目录下执行
$ npm bin
./node_modules/.bin

npm adduser

$ npm adduser
Username: YOUR_USER_NAME
Password: YOUR_PASSWORD
Email: YOUR_EMAIL@domain.com

npm publish

npm publish используется для публикации текущего модуля на npmjs.com. Перед выполнением вам необходимо подать заявку на имя пользователя от npmjs.com.

# 需要向npmjs.com申请用户名
$ npm adduser

# 登录
$ npm login

# 发布
$ npm publish

# 如果当前模块是一个beta版,比如1.3.1-beta.3,那么发布的时候需要使用tag参数,将其发布到指定标签,默认的发布标签是latest
$ npm publish --tag beta

# 如果发布私有模块,模块初始化的时候,需要加上scope参数。只有npm的付费用户才能发布私有模块。
$ npm init --scope=<yourscope>

# 如果你的模块是用ES6写的,那么发布的时候,最好转成ES5。首先,需要安装Babel。
$ npm install --save-dev babel-cli@6 babel-preset-es2015@6

Затем напишите скрипт сборки в package.json.

"scripts": {
  "build": "babel source --presets babel-preset-es2015 --out-dir distribution",
  "prepublish": "npm run build"
}

Выполнение приведенного выше сценария преобразует исходные файлы ES6 в исходном каталоге в исходные файлы ES5 в каталоге распространения. Затем создайте два файла .npmignore и .gitignore в корневом каталоге проекта и запишите следующее содержимое соответственно.

// .npmignore
source

// .gitignore
node_modules
distribution

npm deprecate

Если вы хотите объявить версию модуля устаревшей, вы можете использовать команду npm deprecate.

$ npm deprecate my-thing@"< 0.2.3" "critical bug fixed in v0.2.3"

github / npm

Проблемы с управлением номерами версий npm

  • Спецификация semver указывает номер версии, состоящий из 3 битов MAJOR MINOR PATCH
    • MAJOR может быть несовместим со старыми версиями
    • MINOR добавил некоторые API vue.observable, совместимые со старыми версиями.
    • ПАТЧ исправления ошибок

Все теги git соответствуют версии npm.

npm version major minor patch

Он будет автоматически связан с git

Значение номера версии

  • 2.2.0 должно быть 2.2.0
  • ^ 2.2.0 ограничен основными версиями, а последующие обновления могут быть не более 2
  • ~2.2.0 ограничен первыми двумя версиями, если последняя версия больше 0
  • =2.0 больше, чем эта версия

  • <=2.0
  • 1.0.0 - 2.0.0

предварительная версия

  • альфа предварительный просмотр внутренняя бета
  • бета бета публичная бета
  • rc финальная тестовая версия

scripts

  • Ярлыки команд, которые могут настраивать сценарии (вы можете помещать длинные команды в сценарии)
  • Выполнение команды поместит папку .bin в текущем каталоге node_modules в глобальную (чтобы ее можно было использовать напрямую)
  • NPM Run Start может быть сокращенным в качестве NPM начать

npx

  • Согласованность npx и сценария может помочь нам напрямую запустить содержимое каталога .bin.
  • Если каталог .bin существует, будет выполнен соответствующий скрипт, если нет, то он будет скачан и запущен

npx — это всего лишь временная схема использования. Сгенерировано после npm5.2

Переключение источника (npm nrm nvm)

  • npm install nrm -g
  • nrm ls / nrm use

выпуск пакета

  • Как опубликовать пакет сначала зарегистрируйте учетную запись npm
  • Обязательно отправьте его на официальный источник
  • npm addUser добавить пользователя
  • npm опубликовать пакет публикации

Ссылка на ссылку: менеджер модулей npm (Yifeng Ruan)