Дружим nvm и деплой на ноде

Для деплоя приложений на nodejs есть пара инструментов, таких как shipit и flightplan. Оба они не так хороши, как capistrano для ruby или deployer для php, но если для деплоя хочется выбирать ту же экосистему, что и для разработки, то выбирать особо не приходится.

Если сравнивать shipit и flightplan, то можно сказать, что первый - более модульный, имеет некоторые плагины, а также поддерживает функцию "rolling releases", второй же - более простой и понятный.

На сервере, да и локально, я использую nvm для переключения между версиями nodejs и здесь я столкнулся с проблемой.

Ни shipit, ни flightplan не видели версию nodejs, установленную через nvm. Всегда использовалась только системная версия (если она была). Ясно дело, что проблема была в том,  что shell запускался как non-login non-interactive shell и не подгружал нужные скрипты, что были прописаны в .bashrc. Черт побери, с capistrano таких проблем никогда не было! Гугление и рыскание по гитхабу особо ни к чему не привело. Однако где-то нашел обходной путь, как сделать так, чтобы nvm таки грузился. И это работает как с shipit, так и с flightplan.

Нужно всего лишь взять файл .bashrc и строки

export NVM_DIR="/home/YOURUSERNAME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

поместить до строк

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Это по сути будет загружать nvm всегда, даже если мы находимся в non-interactive режиме, что в принципе нам и нужно и особо это ничем не навредит.