Автор оригинала: FreeCodeCamp Community Member.
Альберто Варела
Пряжа недавно запущенная альтернативой для NPM в качестве NODE.JS Manager. Это претендует на гораздо быстрее и надежно, чем его предшественник. Давай посмотрим, правда ли это.
Если вы разработчик JavaScript – и особенно если вы работаете с Node.js – вы, наверное, слышали какое-то гудение вокруг Пряжа в последние несколько дней. Инженеры из Facebook Exponent, Google и Tilde работали вместе построить Эта альтернатива для известных NPM , встроенный менеджер пакетов Node.js.
За последние несколько лет разработчики по всему миру начали жаловаться на то, насколько медленный НПМ. Другая вещь, которую они хотят, это система зависимостей, способная избежать несоответствий между средами. Таким образом, пряжа счета сама как именно то, что мы хотели все вместе: «Быстрое, надежное и безопасное управление зависимостями».
Ясно, что введение пряжа. Блок Файл и проверка контрольной суммы добавляют согласованность и целостность на наши пакеты между средами, но … как насчет скорости? Пряжа утверждает, что это ультра быстро Отказ Поэтому я установил на работу по сравнению с НПМ в различных средах.
Метод
Инструмент, который я использовал для измерения скорости обоих менеджеров по пакетам, является скромная команда Linux время
Отказ Я написал маленький сценарий Bash – на основе этот гид Сделано Питер Митчелл.
Сценарий запускает несколько установок для Угловой , Эмбер и Реагировать используя как NPM, так и пряжу. Это измеряет количество времени, когда каждая установка принимает. Затем, в конце, он отображает средние метрики, отсортированные по пакете Manager и Framework. Он также выполнит установки с предварительно кэшированными пакетами и с пустым кэшем, чтобы увидеть разницу между обеими ситуациями.
Вы можете увидеть сценарий, используемый здесь: https://github.com/artberri/npm-yarn-benchmark.
Среда
После того, как я бы выбрал инструмент бенчмаркинга, пришло время запустить скрипт.
Я начал, запустив его на своем собственном компьютере. Затем, чтобы добиться более стандартных метрик, я снова пробежал скрипт, используя следующие инструменты непрерывной интеграции (CI): TRAVIS, SNAP CI, SEMAPHORE и CICH CI.
Из-за большого количества установки, которая сделана во время каждого тестового прогона, скрипт занял некоторое время для завершения. Чтобы избежать тайм-аутов в этих инструментах CI, я рассчитал, что средние значения времени будут рассчитаны в течение трех прогонов.
Результаты
На моем собственном компьютере:
---------------------------------------------------------------------------------------------- RESULTS (seconds) -------------------------------------------------------------------------------------------| | angular2 | ember | react | npm_with_empty_cache | 15.687 | 56.993 | 93.650 | npm_with_all_cached | 9.380 | 52.380 | 81.213 | yarn_with_empty_cache | 9.477 | 30.757 | 37.497 | yarn_with_all_cached | 4.650 | 15.090 | 17.730 --------------------------------------------------------------------
В Трэвис :
------------------------------------------------------------------------------------------- RESULTS (seconds) ----------------------------------------------------------------------------------------------| | angular2 | ember | react | npm_with_empty_cache | 19.720 | 55.090 | 76.233 | npm_with_all_cached | 14.640 | 40.203 | 56.467 |yarn_with_empty_cache | 13.193 | 34.037 | 43.663 | yarn_with_all_cached | 5.830 | 15.923 | 40.420 --------------------------------------------------------------------
В Snap Ci :
--------------------------------------------------------------------------------------------- RESULTS (seconds) --------------------------------------------------------------------------------------------| | angular2 | ember | react | npm_with_empty_cache | 20.640 | 57.030 | 120.470 | npm_with_all_cached | 15.753 | 45.273 | 62.597 |yarn_with_empty_cache | 12.227 | 41.997 | 51.863 | yarn_with_all_cached | 7.693 | 23.607 | 24.490 --------------------------------------------------------------------
В Семафор :
------------------------------------------------------------------------------------------- RESULTS (seconds) ----------------------------------------------------------------------------------------------| | angular2 | ember | react | npm_with_empty_cache | 11.057 | 35.287 | 54.203 | npm_with_all_cached | 7.107 | 24.797 | 31.300 |yarn_with_empty_cache | 6.273 | 17.407 | 22.777 | yarn_with_all_cached | 2.790 | 8.150 | 9.380 --------------------------------------------------------------------
В Circleci :
------------------------------------------------------------------------------------------- RESULTS (seconds) ----------------------------------------------------------------------------------------------| | angular2 | ember | react | npm_with_empty_cache | 42.940 | 100.287 | 163.550 | npm_with_all_cached | 16.990 | 50.083 | 67.000 |yarn_with_empty_cache | 15.907 | 45.547 | 58.113 | yarn_with_all_cached | 7.547 | 26.763 | 27.130 --------------------------------------------------------------------
Вывод
Пряжа ультра быстро, от 2 до 3 раз быстрее, чем NPM.
Создатели пряжи говорят правду. Это круто, чтобы увидеть, что пряжа быстрее, даже когда мы сравниваем кэшированный тест NPM с помощью теста на нее кэшированную пряжу.
Исходя из этого, я бы сказал, что пряжа готова стать стандартной диспетчером зависимостей для Node.js в течение всего в нескольких месяцах.
На боковом примечании целью этого сравнения не было никаких ориентировочных инструментов CI, но стоит упомянуть, что семафор выводится выгодно по сравнению с остальными инструментами, которые я использовал в этом примере.
Я тестировал пряжу с одного дня, и это то, что я хотел долго.
Я сейчас использую Марионетка Для обеспечения программного обеспечения в большинстве моих проектов. Из-за этого я создал кукольный модуль для установки пряжи, который вы можете попробуй здесь Отказ
Спасибо за чтение, и счастливая установка!
Первоначально опубликовано www.berriart.com .