Введение
npm
даNode
Менеджер модулей чрезвычайно мощный. В основном он делится на три части:
-
Веб-сайт
На этом сайте разработчики могут найти множество пакетов для использования. -
реестр
Реестр представляет собой огромную базу данных, в которой хранится информация о каждом пакете.
Например, мы хотим запроситьreact
Информация о пакете может быть доступнаhttps://registry.npmjs.org/react
, ты увидишьreact
Информация обо всех версиях модуля.
После имени модуля вы также можете указать номер версии или метку, чтобы запросить информацию о конкретной версии, например:https://registry.npmjs.org/react/16.8.1
Проверитьreact
Информация по версии 16.8.1
Конкретное использование,https://registry.npmjs.org/
После имени модуля вы получаете объект JSON, содержащий информацию обо всех версиях модуля. -
Инструмент командной строки (CLI)
Разработчики могут использовать этот инструмент командной строки иnpm
взаимодействовать, включая установку пакетов, публикацию и т. д.
механизм установки
node
Первый процесс установки модуля можно разделить на четыре простых шага:
- воплощать в жизнь
npm install <package>
Заказ -
npm
Кregistry
ZIP-адрес модуля запроса реестра - Загрузите сжатый пакет и сохраните его в каталоге кеша, по умолчанию
~/.npm
- Разархивируйте архив в папку текущего проекта
node_modules
содержание
Итак, каков URL-адрес сжатого пакета?
Когда мы запрашиваем информацию о модуле через реестр, в возвращаемом объекте JSON естьdist.tarball
атрибут, который является URL-адресом сжатого пакета этой версии модуля.
Несколько способов установки пакетов
-
установка имени пакета
npm i react
: установлен по умолчаниюreact
модульlatest
последняя версия на лейбле -
имя пакета плюс версия
npm i react@16.8.1
: Установитьreact
Версия модуля 16.8.1 -
имя пакета плюс
tag
npm i react@next
: Установитьreact
модульnext
последняя версия на лейбле -
tarball url
npm i https://registry.npmjs.org/react/-/react-16.8.1.tgz
: Установитьreact
Версия модуля 16.8.1 -
tarball file
npm i file: xxxx.xxx.tgz
доступ к файлу tarball можно получить черезnpm pack
команда, чтобы получить -
git url
npm i git+https://github.com/facebook/react.git
-
username/project
npm i github:facebook/react
номер версии
npm
Усыновленныйsemver
Спецификация является зависимой схемой управления версиями, и формат версии обычно следующий: номер основной версии, номер дополнительной версии, номер редакции.
- Номер основной версии (
major
): Общее сильно изменилось, несовместимо с более ранними версиями. - дополнительный номер версии (
minor
): Совместимость с той же основной версией API и использованием. - Поправка №(
patch
): Обычно используется для исправления ошибок. - Иногда после номера редакции может стоять предшествующий номер версии, например
1.0.0-alpha.1
,1.0.0-beta.4
,2.0.0-rc.1
Ждать. Обычно используемые предварительные версии обычноalpha
,beta
,rc
,stable
,csp
Ждать.
выпускать
-
Изменить номер версии
npm version major
: основной номер версии увеличивается на 1, а остальные номера версий возвращаются к 0.
npm version minor
: дополнительный номер версии увеличивается на 1, а номер версии возвращается к 0.
npm version patch
: номер версии плюс 1.
npm version 版本号
: Установите номер версии на указанный номер версии
npm version prerelease
: номер предварительной версии увеличивается на 1
npm version prerelease --preid=<prerelease-id>
: указать название предыдущей версии// 假定现在的版本号是1.1.1 npm version major // 2.0.0 npm version minor // 1.2.0 npm version patch // 1.1.2 npm version prerelease // 1.1.2-0 npm version prerelease --preid=alpha // 1.1.2-alpha.0 npm version 4.1.2 // 4.1.2
воплощать в жизнь
npm version
После изменения номера версии он также будет выполняться по умолчанию.git add
->git commit
->git tag
действовать,commit
информации и дляtag
Оба являются номерами версий. -
Исправлять
commit
Информация
Если нам нужно изменить информацию о представлении, просто вnpm version
добавить после команды-m
вариант,%s
будет заменен номером версии.npm version prerelease -m "update %s"
-
Отключить коммиты и пометки версий
npm version prerelease --no-git-tag-version
-
выпускать
npm publish
: опубликовать пакет npm
По умолчанию будут опубликованы все файлы всего проекта.
мы можемpackage.json
увеличить вfiles
поля для указания каталогов и файлов, которые мы публикуем.
мы также можем.npmignore
in указывает каталоги и файлы, которые мы игнорируем.
tag
npm
серединаtag
похожий наgit
серединаbranch
, издатель может указатьtag
Опубликовать на веб-сайте, пользователи могут выбрать, чтобы указатьtag
Для установки по умолчаниюtag
даlatest
. Это очень полезно для нашей повседневной разработки. Много раз мы хотим выпустить версию для проверки функции, но мы не хотим влиять на людей, которые ее используют. Мы можем использовать теги и предыдущие версии для выпуска пакетов.
npm publish --tag alpha // 发版到名为alpha的tag上
npm i <package>@<tag> // 从指定tag上安装包
link
У нас часто возникает такая ситуация в нашей повседневной разработке: есть два проекта A и B, мы инкапсулируем некоторую базовую логику для проекта A для использования другими проектами; проект B является нашим бизнес-проектом и зависит от проекта A. Затем возникает новое требование, которое требует внесения изменений в два проекта A и B. В настоящее время мы закончили написание проекта A и хотим проверить, верна ли логика проекта A в проекте B.
Конечно, мы можем проверить выпуск проекта A, а затем обновить версию проекта B для проверки, но проблема, вызванная этим, заключается в том, что могут потребоваться частые выпуски; другое решение —link
.
Конкретные методы заключаются в следующем:
- Выполнить в проекте А
npm link
Заказ. - Выполнить в проекте B
npm link A的包名
Заказ.
После выполнения двух вышеуказанных шагов, в это время в проекте Bnode_modules
Зависимости A будут указывать на наш проект A. Таким образом можно проверить без релизной версии, что очень удобно. Конечноlink
Существенным принципом на самом деле является мягкое соединение.
pack
Кромеlink
Может решить отладку вне пакета npm,pack
То же самое можно сделать.
Все еще вышеприведенная сцена, мы используем это времяpack
Конкретные методы заключаются в следующем:
- Выполнить в проекте А
npm pack
команда, будет дополнительный файл с суффиксом tgz в проекте A, скопируйте абсолютный путь к файлу. - Найдите зависимости A в package.json проекта B, замените номер версии абсолютным путем к файлу, который вы только что скопировали, и, наконец, переустановите A.
npx
npx
Инструмент для выполнения пакетов Node. Принцип очень простой, то есть когда побежит, то и прилетитnode_modules/.bin
Пути и переменные среды$PATH
Внутри проверьте, существует ли команда, если она существует, выполните ее, если ее нет, выполните временную установку, затем выполните ее и удалите пакет после выполнения.
настроить
npm config
Команды для управления конфигурацией npm
-
npm config set <key> <value>
: установить некоторую конфигурацию -
npm config get <key>
: получить указанную конфигурацию -
npm config delete <key>
: удалить указанную конфигурацию -
npm config list
: список конфигурации -
npm config edit
: Откройте файл конфигурации с помощью редактора.
Например, мы частоnpm
изregistry
сделать настройки
npm config set registry https://registry.npm.taobao.org/
npmrc
npmrc
файлnpm
Существует три уровня файлов конфигурации: уровень проекта > уровень пользователя > глобальный уровень.
Формат контента:key=value
.
Обычно мы будем строить в проекте.npmrc
файл иregistry
Настройка для предотвращенияregistry
Причина в том, что зависимости не могут быть установлены.
npm ci
- Эта команда может установить только весь проект сразу, не может добавлять отдельные зависимости
- проект должен иметь
package-lock.json
документ - Перед началом каждой установки очищается
node_modules
- не буду переписывать
package.json
а такжеpackage-lock.json
документ - Более быстрая и строгая установка
Много раз мы клонируем новый проект, делаетеnpm i
При установке он часто менялсяpackage.json
а такжеpackage-lock.json
файл, что иногда несет в себе некоторые риски, а в это время использоватьnpm ci
хороший выбор.
Запрос информации о пакете
-
npm view 包名
: показать детали пакета -
npm view 包名 versions
: показать все исторические версии пакета -
npm repo 包名
: открыть страницу исходного репозитория пакета. -
npm docs 包名
: адрес документа открытого пакета
разное
-
npm login
: войти в нпм -
npm whoami
: показать имя пользователя npm -
npm bin
: показать путь к папке bin npm -
npm root
: показать корневой каталог npm