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.
Cristian
źródło

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.

schaermu
źródło
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

Droogany
źródło
4

Lubię używać pliku package.json w katalogu głównym folderu aplikacji.

Oto jeden, którego używam

nvm use v0.6.4

http://pastie.org/3232212

npm install
fullstacklife
źródło
2

Miałem problemy z instalacją Express na Ubuntu:

Jeśli z jakiegoś powodu brakuje polecenia NPM, przetestuj polecenie npm za pomocą npm help. Jeśli nie, wykonaj następujące kroki - http://arnolog.net/post/8424207595/installing-node-js-npm-express-mongoose-on-ubuntu

Jeśli tylko polecenie Express nie działa, spróbuj:

sudo npm install -g express

To sprawiło, że wszystko działa tak, jak ja jestem przyzwyczajony do Windows7 i OSX.

Mam nadzieję że to pomoże!

Cody
źródło
1

Musisz mieć uprawnienia administratora,

 sudo npm install -g <package name>
Saurav Kumar
źródło
-1

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

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

Ratnesh Kushwaha
źródło
-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.

Dmitri Bouianov
źródło