Saya menjadi lebih berhati-hati daripada biasanya karena saya bingung dengan perilaku npmdi masa lalu.
Saya menggunakan Mac dan telah menginstal node.js melalui brew install node.
Sekarang saya ingin menjalankan jslint.jspada command-line sebagai perintah jslintsaya menemukan bahwa cara kanonik untuk mencapai ini adalah sudo npm install -g jslintyang dijalankan dengan sukses dengan output ini:
$ 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)
Kemudian
$ jslint ply.js
zsh: command not found: jslint
karena /usr/local/share/npm/bintidak ada di saya $PATH.
1) Mengapa brewtidak menginstal global npm binpath to path? Mungkin memang begitu, tetapi sesuatu zshmemang mengacaukannya. Di mana saya bisa menemukan itu?
2) Haruskah saya melakukan ini? (Tambahkan :/usr/local/share/npm/binke yang diekspor $PATHdi bagian bawah saya ~/.zshrc)
Sepertinya ini bukan cara yang tepat untuk melakukannya karena jika saya menginstal sesuatu yang lain nanti (menggunakan Homebrew atau sesuatu) saya akan perlu menambahkannya ke skrip startup zsh saya untuk mengatur path. Saya kira dalam contoh khusus ini hanya masalah npm install -gtidak membuat symlink yang tepat di lokasi yang "tepat" (seperti /usr/local/binmungkin).
Saya pikir apa yang akan saya lakukan adalah membangun symlink secara manual /usr/local/binuntuk setiap program yang bermasalah dengan saya dan itu harus cukup baik untuk tujuan saya.
EDIT : Saya memperbarui ini pada 2019, karena pertanyaan lama ini populer tetapi sekarang sudah usang baik dalam hal alur kerja pribadi saya dan juga dalam hal cara terbaik menginstal node dan mengelola berbagai dependensinya.
Alur kerja pribadi saya sekarang adalah menggunakan installer yang diperoleh dari nodejs.org untuk menginstal node pada sistem. Saya benar-benar percaya ini lebih dari paket homebrew itu sendiri, karena ia tahu yang terbaik bagaimana mengelola file. Jika Anda ingin mengubah simpul sistem Anda dari 8.10 menjadi 10.15, baik di Mac atau Windows, cukup unduh penginstal dari nodejs.org untuk 10.15 untuk OS Anda. Mencoba untuk memutakhirkan simpul yang diinstal melalui homebrew selalu terbukti menjadi pendekatan yang lebih sulit dalam pengalaman saya.
Juga, hal terbesar untuk ditunjukkan adalah bahwa penggunaan sudo seperti yang ditunjukkan pada instalasi ns saya dari jslint contoh di atas sangat tidak disarankan; Saya cukup yakin bahwa paket-paket homebrew tidak boleh diinstal atau berinteraksi dengan cara apa pun menggunakan superuser. Seharusnya tidak perlu, dan akan menyebabkan sakit kepala izin izin!
Selanjutnya saya merekomendasikan ESLint lebih dari jslint, dan belum pernah menggunakan jslint selama bertahun-tahun.