Производительность Node.js / Performance
В последнее время всё чаще сталкиваюсь с разработкой на node.js. На работе использую версию LTS, по понятным причинам. Дома поставил 6.3.1.
Идеологически мне больше нравится третий npm — всё-таки хранить дубликаты модулей, особенно когда их много — не здорово. Кстати, для старой версии ноды есть модуль npm3 — позволяет (в лучших традициях партизан) использовать новый npm при установленном старом (только команды будут npm3 install и т.п.). Но сегодня речь не об этом.
Не знаю, насколько для вас это сюрприз, но, таки-да — этот симпатичный (в третьем npm) зверёк ощутимо влияет на производительность npm install. Я, конечно, не буду разводить драму в стиле газетных заголовков и сразу скажу, что, по моим замерам, разница в пределах 20%. И да, progress bar можно отключить глобально в файле .npmrc с помощью одной строчки:
Отключать или нет? Хм. Решайте сами :) Я просто дам чуть больше информации. В моём подопытном проекте папка node_modules занимает 160 мегабайт. Проект на стареньком SSD, интернет не самый быстрый. Да, у меня Windows 10, проверял в cmd, ConEmu, Git Bash. Разница между консольками в пределах погрешности. Есть только визуальная разница — в Git Bash прогресс не рисуется, даже если включен :)
С включённым progress bar полный npm install занимает в среднем 25 секунд, без него – 21 секунду.
Лично я себе его отключил, хотя и понимаю, что не так уж часто делаю полный npm install. Для билдов, которые могут идти “начисто” наверное это отключение будет более востребовано. За судьбой баги (да, она уже давно оформлена и горячо обсуждалась) можете последить на GitHub.
Если хотите проверить разницу для своих проектов, вот скрипт для Windows:
А вот скрипт для Linux (запускал у себя на Git Bash):
Производительность Node.js / Performance