NVM, NPM problém

Pro běh NodeJS runtime používám NVM, který mi dovoluje do produkce dostat novější verzi NodeJS, než je v oficiálních balíčcích použité linuxové distribuce. A je v podstatě jedno, jestli běžíte na Centosu, Fedoře nebo Debianu, protože situace je v tomto ohledu všude stejná…

Vedle toho jsem v současné době začal vytvářet a distribuovat privátní NPM balíčky s funkcionalitami, které chci opakované používat ve více projektech. NPM je super. Vyvíjím v TypeScriptu, builduji balíček do čistého JavaScriptu, přidávám definice types (respektive se při vhodné konfiguraci generují sami), aby ostatní konzumenti mého balíčku věděli jak je použít.

Konfigurace produkce

Ale v podstatě i jakéhokoliv develop stroje, kde chcete mít přístup k privátním NPM balíčkům. Aby vám vše fungovalo jak má, je potřeba jen jemně dokonfigurovat prostředí. Úprava spočívá v úpravě .bashrc a .npmrc. Nic složitého:

1. Konfiguracve NVM

Někde na konci vašeho .bashrc přidejte pro NVM následující

export NVM_DIR=~/.nvm
source ~/.nvm/nvm.sh

Tím máte NVM funkční a můžete skrze něj instalovat požadované NodeJS runtimy:

nvm install stable

A NodeJS vám běží v poslední dostupné stabilní verzí:

node -v

2. Konfigurace NPM
Vytvořte ~/.mpmrc a do něj vložte

//registry.npmjs.org/:_authToken=${NPM_TOKEN}

A do svého .bashrc přidejte následující řádek:

export NPM_TOKEN="XXXX-XXXX-XXXXX-XXXXXX"

Hotovo 🙂

No a tady přišel problém.

Pokud zmodifikujete své, nebo produkční prostředí, tak jak jsem popsal, přestane vám NodeJS fungovat 🙂
Problém je v nevinně vypadajícím export env proměnné NPM_TOKEN na konci vašeho .basrc. Pokud jej odeberete, nebo zakomentujete, bude vám NVM opět fungovat a tím pádem j node poběží…

Řešení

Stačí přemístit v .bashrc příkaz exportující NPM_TOKEN před příkazy exportující proměnné pro NVM…
Výsledná konfigurace v .bashrc by měla vypadat takto:

# Tohle nejdriv...
export NPM_TOKEN="a896968e-4e20-4b65-8196-cd6070593b60"

# Az pak toto...
export NVM_DIR=~/.nvm
source ~/.nvm/nvm.sh

Funguje 🙂