Jak zainstalować moduł globalnie za pomocą npm?


202

Niedawno zainstalowałem Node.js i moduł npm w OSX i mam problem z ustawieniami, które myślę:

npm install [MODULE] is not installing the node.js module to the default path 
which is /usr/local/lib/node_modules.

Odpowiedzi:


347

Jeśli chcesz zainstalować moduł npm globalnie, upewnij się, że używasz nowej -gflagi, na przykład:

npm install forever -g

Ogólne zalecenia dotyczące instalacji modułu npm od wersji 1.0rc (zaczerpnięte z blog.nodejs.org ):

  • Jeśli instalujesz coś, czego chcesz użyć w swoim programie, używając wymaga („cokolwiek”), a następnie zainstaluj go lokalnie , w katalogu głównym projektu.
  • Jeśli instalujesz coś, co chcesz użyć w swojej powłoce, w wierszu poleceń lub coś, zainstaluj to globalnie , aby pliki binarne znalazły się w zmiennej środowiskowej PATH.

Niedawno skorzystałem z tych zaleceń i poszło całkiem gładko. Zawsze instalowałem na całym świecie (ponieważ jest to narzędzie wiersza poleceń), a wszystkie moje moduły aplikacji lokalnie.

Jeśli jednak chcesz korzystać z niektórych modułów globalnie (np. Express lub mongodb), skorzystaj z tej porady (również z blog.nodejs.org ):

Oczywiście są pewne przypadki, w których chcesz zrobić jedno i drugie. Zarówno Coffee-script, jak i Express to dobre przykłady aplikacji, które mają interfejs wiersza poleceń, a także bibliotekę. W takich przypadkach możesz wykonać jedną z następujących czynności:

  • Zainstaluj go w obu miejscach . Poważnie, czy brakuje ci miejsca na dysku? Naprawdę jest w porządku. To małe programy JavaScript.
  • Zainstaluj go globalnie, a następnie npm link do skryptu kawy lub npm link express (jeśli korzystasz z platformy obsługującej łącza symboliczne). Następnie wystarczy zaktualizować kopię globalną, aby zaktualizować również wszystkie dowiązania symboliczne.

Pierwsza opcja jest moim zdaniem najlepsza. Proste, jasne, wyraźne. Drugi jest naprawdę przydatny, jeśli zamierzasz ponownie korzystać z tej samej biblioteki w wielu różnych projektach. (Więcej na temat linku npm w przyszłej części.)

Nie testowałem żadnej z tych odmian, ale wydają się one dość proste.


7
Dziękuję za wyjaśnienia. Isaacs powinien zastąpić cały plik man npm i git wiki powyższym tekstem. Mogłoby wyjaśnić masowe zamieszanie.
Mauvis Ledford

ćwierkanie. To się przydało, złapała mnie ta zmiana. W pewnym momencie npm install dał dostęp do wiersza poleceń, po czym zniknął, a ja nie śledziłem projektu wystarczająco dokładnie, aby uchwycić przejście.
Mark Essel

To wyjaśnia, dlaczego mój moduł węzła znalazł się w katalogu konfiguracji Apache. . .
Ian Hunter,

1
Z blog.node.js.org : Zwykle globalne pliki binarne są instalowane w {prefix} / bin, a globalne moduły są instalowane w {prefix} / node_modules, a moduły lokalne w ./node_modules, pliki wykonywalne wchodzą w ./node_modules/.bin/ . Możesz uruchomić, npm prefixaby uzyskać lokalny prefiks i node prefix -gzobaczyć globalny prefiks :)
nacho4d

„Jeśli instalujesz coś, czego chcesz użyć w swoim programie, używając wymaga („ cokolwiek ”), a następnie zainstaluj go lokalnie , w katalogu głównym projektu.” - Myślę, że nie jest dobrym pomysłem, jeśli moduł zawiera skompilowany plik binarny: należy go poprawnie skompilować w systemie Linux i Windows. Myślę, że tego rodzaju moduły należy ustawić za pomocą środowiska NODE_PATH vriable ( nodejs.org/api/… )
Sneg

8

Na komputerze Mac znalazłem, że dane wyjściowe zawierały informacje, których szukałem:

$> npm install -g karma
...
...
> ws@0.4.25 install /usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
...
$> ls /usr/local/share/npm/bin
karma nf

Po dodaniu /usr/local/share/npm/bindo export PATHmojego wiersza .bash_profile, zapisaniu go i sourcewłożeniu, byłem w stanie uruchomić

$> karma --help

normalnie





-1

W Ubuntu ustaw ścieżkę modułów_węzła w pliku .bashrc

export PATH = "/ home / username / node_modules / .bin: $ PATH"


-5

Możesz nie mieć uprawnień do zapisu, aby zainstalować moduł węzła w lokalizacji globalnej, np. /usr/local/lib/node_modulesW takim przypadku uruchom pakiet npm install -g jako root.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.