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

NPM
Те знания npm, которые мы должны освоить

Введение

npmдаNodeМенеджер модулей чрезвычайно мощный. В основном он делится на три части:

  1. Веб-сайт
    На этом сайте разработчики могут найти множество пакетов для использования.

  2. реестр
    Реестр представляет собой огромную базу данных, в которой хранится информация о каждом пакете.
    Например, мы хотим запроситьreactИнформация о пакете может быть доступнаhttps://registry.npmjs.org/react, ты увидишьreactИнформация обо всех версиях модуля.
    После имени модуля вы также можете указать номер версии или метку, чтобы запросить информацию о конкретной версии, например:https://registry.npmjs.org/react/16.8.1ПроверитьreactИнформация по версии 16.8.1
    Конкретное использование,https://registry.npmjs.org/После имени модуля вы получаете объект JSON, содержащий информацию обо всех версиях модуля.

  3. Инструмент командной строки (CLI)
    Разработчики могут использовать этот инструмент командной строки иnpmвзаимодействовать, включая установку пакетов, публикацию и т. д.

механизм установки

nodeПервый процесс установки модуля можно разделить на четыре простых шага:

  1. воплощать в жизньnpm install <package>Заказ
  2. npmКregistryZIP-адрес модуля запроса реестра
  3. Загрузите сжатый пакет и сохраните его в каталоге кеша, по умолчанию~/.npm
  4. Разархивируйте архив в папку текущего проекта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поля для указания каталогов и файлов, которые мы публикуем.
    мы также можем.npmignorein указывает каталоги и файлы, которые мы игнорируем.

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.

Конкретные методы заключаются в следующем:

  1. Выполнить в проекте Аnpm linkЗаказ.
  2. Выполнить в проекте Bnpm link A的包名Заказ.

После выполнения двух вышеуказанных шагов, в это время в проекте Bnode_modulesЗависимости A будут указывать на наш проект A. Таким образом можно проверить без релизной версии, что очень удобно. КонечноlinkСущественным принципом на самом деле является мягкое соединение.

pack

КромеlinkМожет решить отладку вне пакета npm,packТо же самое можно сделать.
Все еще вышеприведенная сцена, мы используем это времяpack

Конкретные методы заключаются в следующем:

  1. Выполнить в проекте Аnpm packкоманда, будет дополнительный файл с суффиксом tgz в проекте A, скопируйте абсолютный путь к файлу.
  2. Найдите зависимости 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

Справочная статья