unikanie ../../../../../../ ..
Nie wszystko w aplikacji poprawnie należy do publicznego npm, a narzut związany z konfiguracją prywatnego npm lub git repo jest wciąż dość duży w wielu przypadkach. Oto kilka podejść do unikania
../../../../../../../ problemu ścieżek względnych.
node_modules
Ludzie czasami sprzeciwiają się umieszczeniu modułów specyficznych dla aplikacji w module_węzła, ponieważ nie jest oczywiste, jak sprawdzić moduły wewnętrzne bez sprawdzania modułów innych firm z npm.
Odpowiedź jest dość prosta! Jeśli masz .gitignoreplik, który ignoruje node_modules:
node_modules
Możesz po prostu dodać wyjątek !dla każdego z wewnętrznych modułów aplikacji:
node_modules/*
!node_modules/foo
!node_modules/bar
Pamiętaj, że nie możesz anulować ignorowania podkatalogu, jeśli rodzic jest już ignorowany. Więc zamiast ignorując node_modules, trzeba ignorować każdym katalogu wnętrze node_modules z
node_modules/* trik, a następnie można dodać wyjątki.
Teraz w dowolnym miejscu aplikacji będziesz mógł require('foo')
lubrequire('bar') nie posiadające bardzo duży i kruchy ścieżkę względną.
Jeśli masz dużo modułów i chcesz je bardziej oddzielić od modułów innych firm zainstalowanych przez npm, możesz po prostu umieścić je wszystkie w katalogu, na node_modulesprzykład node_modules/app:
node_modules/app/foo
node_modules/app/bar
Teraz będziesz mógł require('app/foo')lubrequire('app/bar')
z dowolnego miejsca w aplikacji.
W swoim .gitignoredodaj po prostu wyjątek dla node_modules/app:
node_modules/*
!node_modules/app
Jeśli aplikacja nie przekształca skonfigurowany w package.json, musisz utworzyć osobne package.json z własnym przekształcenia w swojej dziedzinie node_modules/foolubnode_modules/app/foo katalogu katalogu komponentów, ponieważ transformacje nie mają zastosowania poza granicami modułów. Dzięki temu Twoje moduły będą bardziej odporne na zmiany konfiguracji w aplikacji i łatwiej będzie samodzielnie używać pakietów poza aplikacją.
dowiązanie symboliczne
Inną przydatną sztuczką, jeśli pracujesz nad aplikacją, w której możesz tworzyć dowiązania symboliczne i nie potrzebujesz obsługiwać okien, jest dowiązanie symboliczne lib/
lub app/folder do node_modules. Z katalogu głównego projektu wykonaj:
ln -s ../lib node_modules/app
a teraz z dowolnego miejsca w swoim projekcie będziesz mógł wymagać plików lib/, wykonując require('app/foo.js')polecenie uzyskania lib/foo.js.
ścieżki niestandardowe
Możesz zobaczyć, że niektóre miejsca mówią o używaniu $NODE_PATH
zmiennej środowiskowej lubopts.paths o dodaniu katalogów dla węzła i przeglądaniu w celu znalezienia modułów.
W przeciwieństwie do większości innych platform, korzystanie z tablicy katalogów ścieżek w stylu powłoki $NODE_PATHnie jest tak korzystne w węźle w porównaniu do efektywnego wykorzystania node_moduleskatalogu.
Wynika to z faktu, że aplikacja jest ściślej sprzężona z konfiguracją środowiska wykonawczego, więc jest więcej ruchomych części, a aplikacja będzie działać tylko wtedy, gdy środowisko zostanie poprawnie skonfigurowane.
węzeł i przeglądarka obsługują oba, ale odradzają korzystanie z nich
$NODE_PATH.