Эта статья познакомит вас с двумя мощными менеджерами пакетов 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 init
: сгенерировать package.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
будет установлена последняя версияmd5
2.xx
(последняя версия из двух основных версий), которая не обязательно 2.1.0, но также может быть 2.3.0.
Если версия пакета начинается с ~
, она будет привязана ко второй основной версии.
// пакет.json "зависимости": { "md5": "~2.1.0" },
Через
npm i
установлю последнюю версиюmd5
2.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
кэширует каждый загруженный пакет, поэтому нет необходимости загружать его снова при повторном использовании. Также используется параллельная загрузка для максимального использования ресурсов, что ускоряет установку.
Супербезопасно
Перед выполнением кода 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
содержат много контента. В этой статье объясняется только наиболее часто используемый контент. Если вы хотите узнать больше, вы можете перейти на соответствующий официальный сайт, чтобы просмотреть его.