Самая большая проблема, которая беспокоит npm, — это скорость. К сожалению, даже в последней версии (6) npm работает медленно. Если вам когда-нибудь приходилось удалять папку node_modules, чтобы выполнить чистую установку в более крупном проекте, вы поймете, о чем я. Вентиляторы начинают крутиться, ноутбук греется и можно идти читать статью, пока npm пережевывает зависимости.

Пряжа в помощь

Yarn появился в первые дни, и вы определенно слышали о нем во время своих путешествий по Github. Раньше (до npm 5 с package-lock.json) Yarn решала проблемы с согласованностью, будучи первой, кто сгенерировал файл блокировки (yarn.lock). Этот файл можно было бы вернуть, и у разработчиков были бы согласованные зависимости на нескольких машинах.

Скорость

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

Не в сети

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

модернизация пряжи-интерактив

Это невероятно 😍. Если вы запустите yarn upgrade-interactive, вы получите интерактивный интерфейс командной строки, где вы можете выбрать, какие пакеты обновлять, а какие нет. Это простая вещь, но без которой вы уже не сможете жить, если попробуете ее один раз.

пряжа почему

Как и предыдущая команда, это очень удобный кли-клик. просто запустите yarn why some-package и пряжа расскажет вам, почему он был установлен, из какой зависимости он взялся и т. д.

Пряжа потрясающая, и я могу полностью ее рекомендовать. К сожалению, в нем отсутствует эквивалент npx, и это единственный недостаток, с которым я столкнулся при использовании пряжи. Кроме того, в моем варианте пряжа — очень быстрая и полезная альтернатива npm.

PNPM: аутсайдер

Я действительно люблю этот проект, поэтому я могу быть предвзятым. По сути, они реализовали мою мысль: повторно использовать одни и те же пакеты на вашем компьютере. Смущенный? Позволь мне объяснить:

Вы когда-нибудь измеряли размер ваших node_modules?

du -sh node_modules
# --> 816M   node_modules

Что?! 0,8 Гб для реактивно-нативного проекта?!
К сожалению, это довольно распространенная реальность, и pnpm призван решить эту проблему.

PNPM связывает ваши пакеты символическими ссылками. Это означает, что одна и та же версия пакета существует только один раз на вашем компьютере. Если вы когда-нибудь установите один и тот же пакет дважды, он будет просто связан с вашим node_modules. 🚀
Кроме того, это даже быстрее, чем пряжа.

Итак, совершенство достигнуто? Давайте все перейдем на pnpm?

К сожалению, это не так просто. Если вы начинаете новый проект, вы, вероятно, можете использовать pnpm, но с существующими проектами у меня были некоторые проблемы с созданием моих приложений. Так что в лучшем случае это определенно экспериментальный вариант, и его не следует использовать без тщательного тестирования, так как это может сломать ваше приложение. pnpm также поддерживает npx с pnpx.

Заключение Время

Скорость NPX Безопасность Офлайн Хорошая поддержка npm 🐌 ✅ ❌ ❌ ✅ пряжа 🚄 ❌ Контрольные суммы ✅ ✅ pnpm 🚀 ✅ Контрольные суммы ✅ ❌

Как вы можете видеть выше, нет явного победителя. NPM, конечно, наиболее совместим, но проигрывает во всех остальных отношениях. По моему мнению, лучше всего в настоящее время лучше всего подходит Yarn, и можно вернуться к npx your-command. pnpm — невероятно крутой проект, но он еще не готов для полноценного использования. Я надеюсь, что когда-нибудь pnpm будет использоваться по умолчанию.