Jestem bardziej ostrożny niż zwykle, ponieważ byłem zdezorientowany zachowaniem npm
w przeszłości.
Jestem na komputerze Mac i zainstalowałem node.js za pośrednictwem brew install node
.
Teraz, gdy chcę uruchomić jslint.js
w wierszu poleceń jako polecenie jslint
, stwierdzam, że kanonicznym sposobem na osiągnięcie tego jest sudo npm install -g jslint
pomyślne uruchomienie z tym wyjściem:
$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)
Następnie
$ jslint ply.js
zsh: command not found: jslint
z powodu /usr/local/share/npm/bin
braku w moim $PATH
.
1) Dlaczego brew
nie zainstalowano globalnej npm
bin
ścieżki dostępu? Może tak, ale coś zsh
go psuje. Gdzie mogę to znaleźć?
2) Czy mam to zrobić? (Dołącz :/usr/local/share/npm/bin
do wyeksportowanego $PATH
na dole mojego ~/.zshrc
)
Wygląda na to, że nie jest to właściwy sposób, aby to zrobić, ponieważ jeśli później zainstaluję coś innego (używając Homebrew lub czegoś podobnego), będę musiał dołączyć to do mojego skryptu startowego zsh, aby ustawić ścieżkę. Wydaje mi się, że w tym konkretnym przypadku chodzi tylko o to, aby npm install -g
nie tworzyć właściwych linków symbolicznych w „właściwej” lokalizacji (jak /usr/local/bin
może).
Myślę, że to, co zrobię, to ręcznie zbuduję dowiązania symboliczne /usr/local/bin
do wszelkich programów, z którymi mam problem i powinno to wystarczyć do moich celów.
EDYCJA : Aktualizuję to w 2019 roku, ponieważ to stare pytanie jest popularne, ale teraz jest przestarzałe zarówno pod względem mojego osobistego przepływu pracy, jak i pod względem tego, jak najlepiej zająć się instalacją węzła i zarządzaniem różnymi jego zależnościami.
Mój osobisty przepływ pracy polega teraz na użyciu instalatora uzyskanego z nodejs.org do zainstalowania węzła w systemach. W rzeczywistości ufam temu bardziej niż samemu pakietowi homebrew, ponieważ najlepiej wie, jak zarządzać plikami. Jeśli chcesz zmienić węzeł systemowy z 8.10 na 10.15, czy to w systemie Mac, czy Windows, po prostu pobierz instalator z nodejs.org dla 10.15 dla swojego systemu operacyjnego. Z mojego doświadczenia wynika, że próba uaktualnienia węzła zainstalowanego za pośrednictwem homebrew zawsze okazała się trudniejszym podejściem.
Ponadto, najważniejszą rzeczą, na którą należy zwrócić uwagę, jest to, że korzystanie z sudo, jak pokazano w mojej instalacji npm przykładu jslint powyżej, jest wysoce odradzane; Jestem prawie pewien, że pakiety homebrew nigdy nie powinny być instalowane ani w jakikolwiek sposób współpracujące przy użyciu superużytkownika. Nie powinno to być konieczne i doprowadzi do bólu głowy związanego z uprawnieniami do plików!
Ponadto polecam ESLint zamiast jslint i nie używałem jslint od lat.