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 .gitignore
plik, 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_modules
przykł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 .gitignore
dodaj 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/foo
lubnode_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_PATH
nie jest tak korzystne w węźle w porównaniu do efektywnego wykorzystania node_modules
katalogu.
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
.