Jika skrip Anda ditujukan untuk digunakan oleh pengembang Node, Anda harus benar-benar menggunakan
#!/usr/bin/env node
dan tidak perlu repot-repot mencoba kompatibilitas dengan orang yang hanya menginstal Node sebagai nodejs
.
Alasan:
- Itulah yang dilakukan anak-anak keren, dan jika Anda tidak melakukannya juga, Anda tidak keren. Proyek simpul besar seperti jshint , karma , pondok , dan bahkan NPM hanya menggunakan
#!/usr/bin/env node
sebagai shebang untuk script executable mereka.
- Karena anak-anak keren melakukannya, siapa pun yang bekerja dengan Node di Ubuntu telah menyiapkan
/usr/bin/node
sebagai symlink ke nodejs
. Ada instruksi yang sangat dilihat untuk melakukan ini di sini di Stack Overflow, dan di seluruh web. Bahkan ada nodejs-legacy
paket yang tujuan utamanya adalah membuat symlink ini untuk Anda. Orang yang menggunakan Node tahu cara memperbaiki masalah ini di Ubuntu, dan mereka harus melakukannya jika ingin menggunakan hampir semua perangkat lunak yang pernah ditulis di Node.
- Masalahnya bahkan tampaknya tidak ada lagi di Ubuntu 14.04; Saya baru saja membersihkan Node dan menjalankannya
apt-get install nodejs
dan itu dibuat /usr/bin/node
sebagai symlink ke /etc/alternatives/node
. Orang-orang yang terkena masalah ini, saya duga, adalah minoritas yang menyusut.
Meskipun Anda menargetkan orang-orang yang buta huruf Node, Anda mungkin masih ingin menggunakan #!/usr/bin/env node
, mungkin menambahkan kemungkinan kebutuhan untuk pembuatan symlink manual atau instalasi nodejs-legacy
paket ke dokumentasi instalasi Anda jika Anda menganggapnya perlu. Perhatikan bahwa jika seseorang dengan nodejs
tetapi tidak node
tersedia mencoba menjalankan program Anda dengan shebang di atas, mereka akan melihat:
/ usr / bin / env: node: File atau direktori tidak ada
dan Googling yang akan memberi mereka perbaikan di hasil pertama dan berkali-kali di halaman pertama.
Jika Anda benar-benar, sangat ingin memastikan bahwa pengguna dapat menjalankan perangkat lunak Anda pada sistem nodejs
yang tersedia tetapi node
tidak tersedia (atau di mana node
sebenarnya ada program Node Radio Paket Amatir ), maka Anda dapat menggunakan "shebang dua baris" yang diambil dari Unix & Linux Stack Exchange :
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"
console.log('Hello world!');
tetapi apakah Anda benar-benar perlu melakukan ini ketika hampir tidak ada orang lain di dunia Node?