Node.js スクリプト実行の定番! "/usr/bin/env node" の詳細解説とサンプルコード
Node.js スクリプトにおける "/usr/bin/env node" の役割
#!/usr/bin/env node
という行は、シェバングと呼ばれるものです。これは、Unix 系オペレーティングシステムにおいて、スクリプトファイルを実行するために使用するインタープリタを指定するための特別な行です。
"/usr/bin/env node" の役割
/usr/bin/env
コマンドは、システムパス内に存在する指定されたコマンドを検索し、実行します。node
は、Node.js インタープリタのパスです。
つまり、#!/usr/bin/env node
行は、以下の処理を行います。
- システムパス内で
node
コマンドを検索します。 - 見つかった
node
コマンドを使用して、その後のスクリプトファイルを解釈し、実行します。
- インタープリタのパスを明示的に指定する必要がないため、移植性が向上します。
- 異なるバージョンの Node.js を使用している場合でも、適切なバージョンで実行することができます。
#!/usr/bin/env node
console.log('Hello, world!');
この例では、#!/usr/bin/env node
行によって、node
コマンドを使用して Hello, world!
という文字列を出力するスクリプトが実行されます。
まとめ
#!/usr/bin/env node
行は、Node.js スクリプトを実行するために使用するインタープリタを指定する便利な方法です。移植性と柔軟性を向上させるために、Node.js スクリプトの冒頭にこの行を追加することをお勧めします。
補足
#!/usr/bin/env node
行は、Unix 系オペレーティングシステムのみで有効です。Windows では使用できません。- Node.js スクリプトを実行する別の方法は、
node
コマンドに続いてスクリプトファイル名を指定することです。
Hello World スクリプト
#!/usr/bin/env node
console.log('Hello, world!');
このスクリプトは、以下の出力をコンソールに出力します。
Hello, world!
ファイル読み込みスクリプト
#!/usr/bin/env node
const fs = require('fs');
fs.readFile('input.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
このスクリプトは、input.txt
ファイルの内容を読み込み、コンソールに出力します。
HTTP サーバー スクリプト
#!/usr/bin/env node
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, world!');
});
server.listen(3000, () => {
console.log('Server listening on port 3000');
});
このスクリプトは、ポート 3000 で HTTP サーバーを起動し、/
にアクセスすると "Hello, world!" という文字列を返すようにします。
これらの例はほんの一例です。#!/usr/bin/env node
を使用して、さまざまな種類の Node.js スクリプトを作成できます。
Node.js スクリプトを実行するその他の方法
node コマンド
node hello_world.js
このコマンドは、hello_world.js
という名前のスクリプトを実行します。
.js ファイルの直接実行
Unix 系オペレーティングシステムでは、.js
ファイルを直接実行するように設定することもできます。これを行うには、以下のコマンドを実行します。
chmod +x hello_world.js
./hello_world.js
最初の chmod
コマンドは、hello_world.js
ファイルを実行可能にします。2 番目の ./hello_world.js
コマンドは、実行可能ファイルとしてスクリプトを実行します。
npm
Node.js パッケージ マネージャーである npm を使用して、Node.js スクリプトを実行することもできます。これを行うには、以下のコマンドを実行します。
npx hello_world
タスクランナー
Gulp や Grunt などのタスクランナーを使用して、Node.js スクリプトを実行することもできます。タスクランナーを使用すると、スクリプトのコンパイル、テスト、デプロイなどのタスクを自動化できます。
- シンプルで偶発的なスクリプトを実行する場合:
node
コマンドを使用するのが最も簡単です。 - スクリプトを頻繁に実行する場合:
.js
ファイルを直接実行するように設定すると便利です。 - npm パッケージを使用している場合:
npx
コマンドを使用すると便利です。 - 複数のタスクを自動化したい場合: タスクランナーを使用すると便利です。
Node.js スクリプトを実行するには、さまざまな方法があります。自分に合った方法を選択してください。
node.js shebang