Все, что вам нужно знать о Yarn и npm

внешний интерфейс Программа перевода самородков Yarn NPM

Yarn — это новый менеджер пакетов JavaScript, созданный Facebook, Google, Exponent и Tilde. так какОфициальное объявлениеНаписанная, ее цель — решить несколько проблем, с которыми эти команды столкнулись при использовании npm, а именно:

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

Но не паникуйте! Он не предназначен для полной замены npm. Yarn — это просто новый клиент CLI, который может получать модули из репозитория npm.

Должны ли все сейчас прыгать в скорый поезд Yarn? Возможно, вы никогда не сталкивались с этими проблемами при использовании npm. В этой статье мы сравним npm и Yarn, чтобы вы могли решить, что лучше для вас.

Yarn 标志

Yarn и npm: функциональные различия

На первый взгляд Yarn и npm похожи. Но, как мы знаем в глубине, Yarn и npm разные.

файл пряжи.lock

package.jsonВ файле есть информация, что npm и Yarn отслеживают зависимости проекта, и номер версии не всегда точен. Однако вы можете определить диапазон версий. Таким образом, вы можете выбрать самую высокую и самую низкую версию пакета, но разрешить npm устанавливать последние исправления для исправления некоторых ошибок.

существуетСемантическое управление версиямиВ идеальном мире выпущенные исправления не должны содержать каких-либо существенных модификаций. Но, к сожалению, это не всегда так. Политика npm может привести к тому, что два устройства будут использовать одно и то жеpackage.jsonфайл, но установлена ​​другая версия пакета, что может привести к сбоям.

Чтобы избежать некорректного сопоставления версий пакетов, точную установленную версию необходимо зафиксировать в файле блокировки. Каждый раз, когда добавляется модуль, Yarn создает (или обновляет)yarn.lockдокумент. Таким образом, вы можете гарантировать, чтоpackage.jsonПри определении дополнительного диапазона версий в файле другие устройства устанавливают тот же пакет.

В команде npmnpm shrinkwrapТакже можно создать файл блокировки иnpm installчтениеpackage.jsonЭтот файл блокировки будет прочитан первым, и Yarn будет прочитан первымyarn.lockаналогичным образом. Самое критичное отличие состоит в том, что Yarn обязательно создаст и обновитyarn.lock, но npm не создаст его по умолчанию, а будет использовать только как файлnpm-shrinkwrap.jsonОбновите его, когда он существует.

  1. документация по yarn.lock
  2. документация по усадке npm

Параллельная установка

Всякий раз, когда npm или Yarn необходимо установить пакет, генерируется ряд задач. При использовании npm эти задачи выполняются в порядке пакетов, т. е. только после полной установки одного пакета будет установлен следующий. Yarn выполняет задачи параллельно, повышая производительность.

Напротив, я установил пакет, используя как npm, так и Yarn.express, ни один из них не упаковывает, не блокирует файлы и не кэширует. Эта установка включает в себя в общей сложности 42 пакета.

propertag.cmd.push(function() { proper_display('sitepoint_content_1'); });

  • нпм: 9 секунд
  • Пряжа: 1,37 секунды

Я не могу поверить своим глазам. Повторение этого шага приводит к аналогичным результатам. Затем я установил пакетgulp, всего загружается 195 зависимостей.

  • нпм: 11 секунд
  • Пряжа: 7,81 секунды

Похоже, что разница в времени скачивания сильно зависит от количества установленных пакетов. Но в любом случае пряжа быстрее.

более чистый вывод

Вывод npm по умолчанию подробный. Например, при запускеnpm install <package>, он будет рекурсивно перечислять все установленные пакеты. Пряжа, с другой стороны, очень проста. В нем содержится очень мало важной информации с соответствующими смайликами (если вы не работаете в Windows), в то время как подробную информацию можно получить с помощью других команд.

“yarn install” 命令的输出

Пряжа и npm: различия в CLI

Помимо функциональных различий, в Yarn есть несколько разных команд. Некоторые команды npm были удалены, другие изменены, а также добавлено несколько интересных команд.

глобальная пряжа

и npm необходимы для глобальных операций установки-gили--globalФлаги разные, команду Yarn нужно использоватьglobalкак префикс. Как и в случае с npm, зависимости для конкретного проекта не должны устанавливаться глобально.

globalПрефикс применяется только кyarn add,yarn bin,yarn lsа такжеyarn remove. Кромеyarn addЭти команды такие же, как команда NPM.

  1. глобальная документация пряжи

пряжа установить

npm installПорядок будет следоватьpackage.jsonФайл устанавливает зависимости и позволяет добавлять новые пакеты.yarn installтолько скачатьyarn.lockПеречисленные зависимости, загрузите, если файл отсутствуетpackage.jsonперечислено.

  1. документация по установке пряжи
  2. документация по установке npm

пряжа добавить [–dev]

а такжеnpm install <package>аналогичный,yarn add <package>Позволяет добавлять и устанавливать зависимости. Как буквально означает название команды, она может добавлять зависимости, что означает, что она автоматически добавит ссылку на пакет вpackage.jsonфайл и npm--saveТот же знак. Пряжа--devЭтот флаг сделает пакет зависимым от режима разработки, а npm--save-devТот же знак.

  1. пряжа добавить документацию
  2. документация по установке npm

yarn licenses [ls|generate-disclaimer]

На момент написания этой статьи в пряже были доступны эквивалентные команды, недоступные в npm.yarn licenses lsВозможность перечислить лицензионные соглашения для всех установленных пакетов.yarn licenses generate-disclaimerМожет генерировать заявления об отказе от ответственности для всех лицензионных соглашений, включая все пакеты. В некоторых лицензионных соглашениях указано, что вы должны включить лицензию проекта в свой проект, и эта команда является полезным инструментом в этом случае.

  1. документация по лицензиям на пряжу

yarn why

Эта команда может проанализировать граф зависимостей и выяснить, почему указанный пакет был установлен в вашем проекте. Возможно, вы явно указали его установку, или, может быть, это одна из зависимостей установленного вами пакета.yarn whyпоможет определить причину.

  1. пряжа почему документация

yarn upgrade [package]

Эта команда обновит пакет, чтобы соответствоватьpackage.jsonУстановите последнюю версию правила и создайте ее заново.yarn.lockдокумент. это иnpm updateаналогичный.

Интересно, что когда указан пакет, он обновит пакет до последней версии и обновитpackage.jsonметка определена в . Это означает, что эта команда может обновить пакет до нового основного выпуска.

  1. документация по обновлению пряжи

yarn generate-lock-entry

yarn generate-lock-entryкоманда сгенерируетyarn.lockфайл, основанный наpackage.jsonПараметры зависимости в . с участиемnpm shrinkwrapочень похожий. Используйте эту команду с осторожностью, так как она создаст файл блокировки, и когда вы пройдетеyarn addа такжеyarn upgradeПри обновлении зависимостей он будет обновляться автоматически.

  1. документация по генерированию замков пряжи
  2. документация по усадке npm

Стабильность и надежность

Может ли экспресс Yarn сойти с рельсов? В первый день выпуска он получил многоОбратная связь, но эффективность решения проблем не менее удивительна. Все это означает, что сообщество усердно работает над поиском и решением проблем. Глядя на количество и разнообразие этих проблем, мы знаем, что Yarn более стабилен для большинства пользователей, но для некоторых крайних случаев он может не подойти.

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

Глядя в будущее

Возможно, вы знаете историю Node.js и io.js. Вкратце, io.js — это форк Node.js, который был создан некоторыми основными участниками из-за разногласий в управлении проектом Node.js. Однако io.js предпочла открытый исходный код. Менее чем через год две команды пришли к соглашению, поэтому io.js снова объединили с Node.js, и разработка io.js остановилась. Является ли этот выбор правильным или неправильным прямо сейчас, в результате в Node.js появилось множество замечательных функций.

Я наблюдаю похожую картину в npm и Yarn. Хотя Yarn не является форком, он устраняет несколько уязвимостей npm. Было бы неплохо, если бы npm извлек уроки из этого и попросил Facebook, Google и других участников Yarn помочь оптимизировать npm? Хотя рано об этом говорить, надеюсь.

В любом случае, будущее Yarn выглядит светлым. Появление этого нового менеджера пакетов взволновало людей в сообществе, и люди постепенно приняли его. К сожалению, у него нет никаких инструкций по планированию, поэтому я не знаю, какие сюрпризы готовит для нас Yarn.

Суммировать

Yarn имеет более высокий рейтинг по сравнению с npm. Мы можем свободно получать файлы блокировки, удивительно быстро устанавливать пакеты, и они автоматически сохраняются вpackage.json. Есть также несколько недостатков в установке и использовании Yarn. Вы можете сначала попробовать его в проекте, чтобы увидеть, работает ли он для вас. Таким образом, Yarn становится альтернативой npm.

propertag.cmd.push(function() { proper_display('sitepoint_content_2'); });

Я настоятельно рекомендую вам попробовать Yarn в проекте. Если вы с осторожностью относитесь к установке и использованию нового программного обеспечения, тоже дайте ему несколько месяцев. В конце концов, npm проверен в бою, что в мире разработки программного обеспечения определенно того стоит.

Если вы ждете, пока npm установит пакеты, возможно, просто прочитайтеРекомендации по переходу на Yarn ;)

После прочтения статьи Что вы думаете? Вы уже используете Yarn? Хотите попробовать? Или вы думаете, что это приведет только к дальнейшему расколу и без того фрагментированной экосистемы? Пожалуйста, напишите свои мысли в комментариях.

Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,товар,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.