Эта статья познакомит вас с двумя мощными менеджерами пакетов Node.js: npm и Yarn. Надеюсь, она будет вам полезна!

Краткое введение в Node.js: войдите, чтобы узнать
Первый шаг к изучению Node — это понимание менеджера пакетов Node : npm . Я думаю, что все знакомы с npm , потому что мы часто используем его для загрузки некоторых ресурсов пакетов.
Но поскольку библиотека ресурсов npm (https://www.npmjs.com/) находится за границей, скорость загрузки ресурсов с ее помощью относительно медленная, поэтому сторонние node包管理器такие как yarn и отечественные, синхронизируются с npm Обновлено зеркало Taobao (cnpm) .
Далее мы изучим это содержание более подробно, давайте начнем!
Рубрика серии Node начала обновляться. Следите за блогером, подписывайтесь на рубрику и изучайте Node, не теряясь!
что такое нпм
Прежде чем использовать npm , вы должны сначала понять, что такое npm . В первой статье серии Node [Node.js | Единственный путь от внешнего интерфейса к полному стеку] упоминается, npm — это хранилище Node с открытым исходным кодом. и является крупнейшим в мире складом с открытым исходным кодом.
Адрес этого склада: https://www.npmjs.com/.
По состоянию на 17 марта 2020 года npm предоставил 1,3 миллиона пакетов примерно 12 миллионам разработчиков, которые загрузили их 75 миллиардов раз в месяц.
Чтобы загрузить и использовать ресурсы из хранилища npm , вы можете использовать npm的指令(начиная с npm , например npm i axios download axios ) или использовать другие сторонние инструкции (сторонний Node包管理器), например, Yarn и т. д. .
Официальное заявление:
npm— это инструмент управления и распространения пакетов дляNodeJSУправление пакетами выражается в том, что это хранилище
NodeJS, в котором хранятся и управляются различные программные пакетыNodeJS.Инструмент распространения реализован в использовании
npm的指令для загрузки пакетов из хранилищаnpm.
Когда мы настраиваем среду NodeJS , вместе с NodeJS устанавливается npm指令模块. Мы можем запустить npm -v через терминал, чтобы просмотреть установленную версию:

Но если версия npm , установленная по умолчанию, слишком старая, вы также можете вручную установить и обновить npm самостоятельно:
НПМ и НПМ @latest -g
@latestозначает установку последней версии,-g— глобальную установку. Эти инструкцииnpmбудут обсуждаться позже.
Волшебную штуку можно найти выше. Устанавливаем npm через npm . Можно ли установить самому?
На самом деле это легко понять. npm的指令模块также хранится в хранилище npm в виде пакета, и имя этого пакета — npm . См. адрес npm :

Итак, то, что мы обычно называем npm, относится просто к командному модулю npm (пакет с именем npm).
Но на самом деле слово
npmотносится кnpm指令模块, а также относится кnpmсамому хранилищу с открытым исходным кодомNodeJS, поэтому мы загружаемnpmвnpm(этот npm представляет собой хранилище с открытым исходным кодом NodeJS) (этот npm представляет собой открытое хранилище NodeJS). хранилище исходных кодов с именем npm Этот пакет, этот пакет является командным модулем npm)
общие команды npm
Существует множество инструкций
npm. Здесь мы перечисляем только наиболее часто используемые. Для получения дополнительной информации см. официальную документацию npm.
: сгенерировать
npm initpackage.json
npm install : загрузить все ресурсы, записанные в package.json
npm install 包名: загрузить указанный пакет в текущий каталог.
npm uninstall 包名: удалить указанный пакет в текущем каталоге.
npm update 包名: обновите указанный пакет в текущем каталоге. Если имя пакета не добавлено, все пакеты в текущем каталоге будут обновлены.
npm outdated 包名: проверьте , не устарел ли указанный пакет в текущем каталоге . Если имя пакета не добавлено, будут проверены все пакеты в текущем каталоге.
npm info 包名: получение подробной информации о пакете в текущем каталоге.
npm list : просмотреть все пакеты, установленные в текущем каталоге, и их зависимости, а также отобразить номер версии ( list можно сократить до ls ).
npm list 包名: просмотр номера версии указанного пакета, установленного в текущем каталоге ( list можно сократить до ls ).
Несколько дополнительных моментов:
install может быть сокращено как i , например: npm install axios может быть сокращенно как npm i axios
uninstall можно сократить до un
Добавьте символ @ после имени пакета, чтобы указать версию пакета, например: npm i md5@1 загружает версию 1 md5, npm i md5@latest означает загрузку последней версии md5.
суффикс команды npm
-g : указать глобальную среду
Команда
npmпо умолчанию работает в текущем каталоге. Добавление-gуказывает работу в глобальной среде . Как упоминалось выше, установите последнюю версию npm глобально:npm i npm@latest -g, чтобы npm можно было использовать в любом каталоге. .
--save можно сократить до -s : указать зависимости в производственной среде (записанные в dependencies )
После версии
npm5значением по умолчанию является--save. Например, axios необходимо установить как в производственной среде, так и в среде разработки:npm i axios -s
--save-dev можно сократить до -D : указать зависимости в среде разработки (записанные в devDependencies ).
Чтобы установить Babel, который не нужен в производственной среде (используется только в среде разработки):
npm i babel -D
--save-prod можно сократить до -P : то же, что --save
--save-optional можно сократить до -O : указать необязательные зависимости (записанные в optionalDependencies ).
--no-save : не будет записано в package.json
Конкретные функции и различия
-g,--save,--save-devможно найти в моей статье: Разница между npm install -g/–save/–save-dev.
Суффикс команды npm также можно разместить перед именем пакета:
npm i -g npm@latest
Управление пакетами зависимостей
В npm хорошо известны зависимости: dependencies и devDependencies
Кроме того, в него фактически входят:
peerDependencies ,
optionalDependencies
bundledDependencies / bundleDependencies
Несколько зависимостей, включая эти, записаны в package.json :

Выше мы упоминали эти зависимости, когда говорили о суффиксах команд npm . Вот подробное описание того, что они представляют собой:
dependencies и devDependencies
Прочтите мою другую статью: Разница между npm install -g/–save/–save-dev
peerDependencies
Вы можете ознакомиться со статьей большого парня: Понимание одноранговых зависимостей в одной статье.
optionalDependencies
Если есть
optionalDependenciesзависимые пакеты, которые все равноdependenciesработать, даже если установка завершится неудачей, или вы хотите, чтобы npm продолжал работать, вы можете использоватьoptionalDependencies. напишите их в обоих местах.
bundledDependencies / bundleDependencies
Зависимости упаковки,
bundledDependencies— это объект массива, содержащий имена зависимых пакетов. При публикации пакеты в этом объекте будут упакованы в пакет окончательной версии. Пакеты в массиве должны быть сначала объявлены вdevDependenciesилиdependencies, в противном случае упаковка сообщит об этом. ошибка.
Проблемы с версией пакета, требующие внимания в package.json
Информация о версии всех пакетов, загруженных через npm будет записана в package.json
При запуске npm i он будет загружен на основе информации о пакете, записанной в package.json . Его правила загрузки следующие:
Если версия пакета начинается с ^ (по умолчанию) , большая версия будет заблокирована.
// пакет.json
"зависимости": {
"md5": "^2.1.0" // } начинается с ^,Через
npm iбудет установлена последняя версияmd52.xx(последняя версия из двух основных версий), которая не обязательно 2.1.0, но также может быть 2.3.0.
Если версия пакета начинается с ~ , она будет привязана ко второй основной версии.
// пакет.json
"зависимости": {
"md5": "~2.1.0"
},Через
npm iустановлю последнюю версиюmd52.1.x(последнюю версию ниже версии 2.1), которая не обязательно 2.1.0, но может быть и 2.1.1.
Версия пакета * и будет привязана к последней версии.
// пакет.json
"зависимости": {
"md5": "*"
},Через
npm iустановлю последнюю версиюmd5
Если перед версией пакета нет префикса , он будет привязан к указанной версии.
// пакет.json
"зависимости": {
"md5": "2.1.0"
},Через
npm iустановлю версию 2.1.0md5
Решить проблему низкой скорости npm
Поскольку склад npm находится за границей, нам будет медленнее использовать команду npm в Китае для загрузки содержимого этого зарубежного склада.
В настоящее время мы можем запустить следующую команду, чтобы переключить источник хранилища npm на внутренний источник образа Taobao (cnpm) :
Реестр набора конфигураций npm https://registry.npmmirror.com
Используйте npm config get registry , чтобы просмотреть текущий источник:

Когда вы будете использовать npm в будущем, он будет автоматически загружаться с внутреннего зеркального склада Taobao, и скорость будет очень высокой.
Предыдущий исходный адрес зеркала Taobao был http://registry.npm.taobao.org, но теперь он изменен на http://registry.npmmirror.com. Подробнее.
Но нам неизбежно будет немного сложно переключать источники путем изменения конфигурации npm . Мы можем установить nrm глобально, чтобы быстро переключать источники npm .
Используйте nrm для быстрого переключения источников npm
Установите nrm глобально:
npm установить -g нрм
Выполните nrm ls для просмотра переключаемых источников npm :

Используйте npm use для переключения источников , например, для переключения на источник Taobao: nrm use taobao

Используйте nrm test 源名чтобы проверить время отклика соответствующего источника:

Вы можете видеть, что скорость ответа источника Taobao намного выше, чем у источника по умолчанию npm .
Китайское зеркало npm: cnpm
cnpm — это полное зеркало npmjs.org, которое можно использовать вместо официальной версии.
Частота синхронизации между
cnpmи официальной версией — раз в 10 минут, официальный сайт cnpm.
Скачать cnpm :
npm install -g cnpm --registry=https://registry.npmmirror.com
cnpm — зеркало Taobao . Когда мы используем указанный выше источник зеркала Taobao, мы просто меняем источник npm на источник зеркала Taobao ( cnpm ) (этот источник на самом деле относится к адресу склада), а затем используем его через команда npm .
А вот чтобы напрямую загрузить полный образ cnpm , а затем вы можете использовать команду cnpm вместо команды npm :
установка cnpmcnpm и axios -g // ....
Инструкции для
cnpmточно такие же, как и дляnpm. Просто при его использовании используйте cnpm вместо npm .
Yarn — это инструмент управления зависимостями, выпущенный Facebook, который работает быстрее и эффективнее, чем npm
Установить:
npm установить -g пряжа
Обновить пряжу:
последняя версия набора пряжи версия набора пряжи из исходников
преимущество
супер быстро
yarn кэширует каждый загруженный пакет, поэтому нет необходимости загружать его снова при повторном использовании. Также используется параллельная загрузка для максимального использования ресурсов, что ускоряет установку.
Супербезопасно <br/> Перед выполнением кода yarn проверит целостность каждого установочного пакета с помощью алгоритма.
Общие инструкции по вязанию пряжи

yarn init : инициализируйте проект и сгенерируйте файл package.json . Шаги создания примерно такие же, как и npm init
yarn help : отобразить список команд
yarn install : загрузите все ресурсы, записанные в package.json , который можно сократить как yarn
yarn add 包名: загрузить указанный пакет в текущий каталог.
yarn remove 包名: удалить указанный пакет в текущем каталоге
yarn upgrade 包名: обновить указанный пакет в текущем каталоге. Вы можете добавить @指定版本号после имени пакета, чтобы указать версию, которую необходимо обновить.
суффикс команды yarn
--dev : указать зависимости в среде разработки ( devDependencies ), сокращенно -D
--peer : указать основные зависимости ( peerDependencies )
--optional : указать необязательные зависимости ( optionalDependencies )
В этой статье представлены npm и yarn , а также nrm , cnpm и т. д., производные от npm.
Блогеры используют комбинацию npm + nrm для переключения источников , поскольку это не только обеспечивает высокую скорость, но и позволяет удобно переключать источники без необходимости скачивать дополнительные пакеты, такие как cnpm и yarn
И npm , и yarn содержат много контента. В этой статье объясняется только наиболее часто используемый контент. Если вы хотите узнать больше, вы можете перейти на соответствующий официальный сайт, чтобы просмотреть его.