TL; DR Начало использования fnm вместо nvm сэкономит вам ~ 500 мс ожидания каждый раз, когда вы запускаете новый сеанс Терминала. А с помощью небольшого скрипта вы можете автоматически переключать версиюnode между проектами, если присутствует .nvmrc файл.
fnm: https://github.com/Schniz/fnm- скрипт автоматического переключения: https://gist.github.com/geastwood/14ccb700840a8b8a8538113eb6d76072
Прежде всего, nvm - отличный инструмент, помогающий разработчикам управлять различными средами узлов. Я использую nvm в течение многих лет и очень доволен этим. Это привлекло мое внимание только тогда, когда я начал копать, почему для запуска нового сеанса терминала требуется более 1 секунды.
Комментируя построчно в моем ~/.zshrc файле, я обнаружил, что на самом деле виноваты скрипты, относящиеся к nvm. Для выполнения следующих двух строк потребовалось 500 мс (проверьте их в своем ~/.zshrc файле).
# Lines in ~/.zshrc [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" # This loads nvm [ -s "/usr/local/opt/nvm/etc/bash_completion" ] && . "/usr/local/opt/nvm/etc/bash_completion" # This loads nvm bas
Теперь в поисках ИСПРАВЛЕНИЯ
Самый простой подход - просто отключить nvm все вместе и начать загружать его по необходимости. Что ж, это просто менее оптимально, поскольку большую часть моего времени программирования я провожу в node среде. Возможность автоматического переключения node двоичной версии проекта очень удобна.
Следующим логическим шагом будет слишком ленивая загрузка nvm на основе некоторых условий, например, в проекте узла, и при этом присутствует .nvmrc файл. На самом деле в Интернете есть решения, просто нацеленные в этом направлении, однако для меня это слишком похоже на взлом с раздутым bash script, который не так хорошо читается.
Итак, вот мое текущее решение. Использовать nvm альтернативу, которая просто быстрее. Это fnm (https://github.com/Schniz/fnm). Это довольно интересное чтение (https://hackernoon.com/fnm-fast-and-simple-node-js-version-manager-df82c37d4e87) о том, как автор пришел к написанию этого инструмента, а также объясняет некоторые внутренности проэкт.
Это почти прямая замена nvm, но у меня есть сценарий, который автоматически переключает версию node на основе .nvmrc, поэтому требуется некоторая адаптация. Ниже рабочая версия.
Вот и все. Если у вас есть предложения / комментарии, просто напишите мне.