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 🙂