Synopsis
npm link (w dir pakietów)npm link <pkg>alias: npm ln
Opis
Łączenie pakietów jest procesem dwuetapowym.
Po pierwsze, npm link
w folderze pakietu utworzy symlink w folderze globalnym{prefix}/lib/node_modules/<package>
, który łączy się z pakietem, w którym wykonano polecenie npmlink
. Połączy również wszelkie binarki w pakiecie z {prefix}/bin/{name}
.Zauważ, że npm link
używa prefiksu globalnego (zobacz npm prefix -g
, aby poznać jego wartość).
Następnie, w jakiejś innej lokalizacji, npm link package-name
utworzy asymboliczne łącze z globalnie zainstalowanego package-name
do node_modules/
bieżącego folderu.
Zauważ, że package-name
jest pobierane z package.json
,a nie z nazwy katalogu.
Nazwa pakietu może być opcjonalnie poprzedzona zakresem. Zobacz scope
.Zakres musi być poprzedzony symbolem @ i następującym po nim ukośnikiem.
Podczas tworzenia tarballi dla npm publish
, połączone pakiety są „migawkowane” do ich aktualnego stanu przez rozwiązywanie dowiązań symbolicznych.
To jest przydatne do instalowania własnych rzeczy, aby można było nad nimi pracować i testować je bez konieczności ciągłego przebudowywania.
Na przykład:
cd ~/projects/node-redis # przejdź do katalogu z pakietaminpm link # tworzy globalny linkcd ~/projects/node-bloggy # przejdź do innego katalogu z pakietami.npm link redis # link-install the package
Teraz, wszelkie zmiany w ~/projects/node-redis będą odzwierciedlone w~/projects/node-bloggy/node_modules/node-redis/. Zauważ, że odnośnik powinien być do nazwy pakietu, a nie do nazwy katalogu tego pakietu.
Możesz również skrócić te dwa kroki w jednym. Na przykład, aby wykonać powyższy przypadek użycia w krótszy sposób:
cd ~/projects/node-bloggy # przejdź do dir swojego głównego projektunpm link ../node-redis # połącz dir swojej zależności
Druga linia jest odpowiednikiem robienia:
(cd ../node-redis; npm link)npm link redis
To znaczy, że najpierw tworzy globalny link, a następnie łączy cel globalnej instalacji do folderu node_modules
twojego projektu.
Zauważ, że w tym przypadku odnosisz się do nazwy katalogu, node-redis
, a nie do nazwy pakietu redis
.
Jeśli twój połączony pakiet ma zakres (zobacz scope
), twoje polecenie link musi zawierać ten zakres, np.
npm link @myorg/privatepackage
Zobacz także
- npm developers
- package.json
- npm install
- npm folders
- npm config
- npmrc
.