Saya menjadi lebih berhati-hati daripada biasanya karena saya bingung dengan perilaku npm
di masa lalu.
Saya menggunakan Mac dan telah menginstal node.js melalui brew install node
.
Sekarang saya ingin menjalankan jslint.js
pada command-line sebagai perintah jslint
saya menemukan bahwa cara kanonik untuk mencapai ini adalah sudo npm install -g jslint
yang 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/bin
tidak ada di saya $PATH
.
1) Mengapa brew
tidak menginstal global npm
bin
path to path? Mungkin memang begitu, tetapi sesuatu zsh
memang mengacaukannya. Di mana saya bisa menemukan itu?
2) Haruskah saya melakukan ini? (Tambahkan :/usr/local/share/npm/bin
ke yang diekspor $PATH
di 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 -g
tidak membuat symlink yang tepat di lokasi yang "tepat" (seperti /usr/local/bin
mungkin).
Saya pikir apa yang akan saya lakukan adalah membangun symlink secara manual /usr/local/bin
untuk 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.