もう迷わない!Node.jsコマンドライン:スクリプト内の関数を使いこなす最強テクニック
Node.jsでコマンドラインからスクリプト内の関数を呼び出す方法
このチュートリアルでは、Node.jsでコマンドラインからスクリプト内の関数を呼び出す方法について解説します。
準備
以下のものが必要です。
- Node.jsがインストールされていること
- テキストエディタ
手順
- 新しいディレクトリを作成し、そこに
index.js
という名前のファイルを作成します。 - 以下のコードを
index.js
ファイルに保存します。
// 関数を定義
function hello() {
console.log('Hello, world!');
}
// コマンドライン引数を取得
const args = process.argv.slice(2);
// コマンドライン引数に基づいて関数を呼び出す
if (args[0] === 'hello') {
hello();
} else {
console.log('Usage: node index.js hello');
}
- コマンドラインで以下のコマンドを実行してスクリプトを実行します。
node index.js hello
- コンソールに以下の出力が表示されます。
Hello, world!
解説
上記のコードでは、以下の処理が行われています。
hello()
という名前の関数を定義します。この関数は、Hello, world!
という文字列をコンソールに出力します。process.argv
という変数を使用して、コマンドライン引数を取得します。- コマンドライン引数の最初の要素が
hello
かどうかをチェックします。 - コマンドライン引数の最初の要素が
hello
の場合は、hello()
関数を呼び出します。
応用
上記のコードは、コマンドラインからスクリプト内の関数を呼び出す基本的な方法を示しています。この方法を応用することで、様々なコマンドラインツールを作成することができます。
例えば、以下のコードは、コマンドラインからファイルの内容を表示するツールを作成します。
const fs = require('fs');
function cat(filename) {
fs.readFile(filename, 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
}
const args = process.argv.slice(2);
if (args.length === 0) {
console.log('Usage: node index.js cat <filename>');
return;
}
cat(args[0]);
このコードは、fs
モジュールを使用してファイルを読み込み、その内容をコンソールに出力します。
基本的なサンプル
// 関数を定義
function hello() {
console.log('Hello, world!');
}
// コマンドライン引数を取得
const args = process.argv.slice(2);
// コマンドライン引数に基づいて関数を呼び出す
if (args[0] === 'hello') {
hello();
} else {
console.log('Usage: node index.js hello');
}
ファイルの内容を表示するツール
const fs = require('fs');
function cat(filename) {
fs.readFile(filename, 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
}
const args = process.argv.slice(2);
if (args.length === 0) {
console.log('Usage: node index.js cat <filename>');
return;
}
cat(args[0]);
このコードは、fs
モジュールを使用してファイルを読み込み、その内容をコンソールに出力するツールです。コマンドライン引数の最初の要素には、読み込むファイル名を指定します。
ユーザー入力を処理するツール
const readline = require('readline');
function askQuestion(question) {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question(question, (answer) => {
console.log(`Your answer: ${answer}`);
rl.close();
});
}
const args = process.argv.slice(2);
if (args.length === 0) {
console.log('Usage: node index.js ask <question>');
return;
}
askQuestion(args[0]);
オプションを処理するツール
const yargs = require('yargs');
const options = yargs
.option('name', {
alias: 'n',
description: 'Your name',
type: 'string'
})
.option('age', {
alias: 'a',
description: 'Your age',
type: 'number'
})
.argv;
console.log(`Hello, ${options.name}! You are ${options.age} years old.`);
このコードは、yargs
モジュールを使用してコマンドラインオプションを処理する例です。name
とage
という2つのオプションが定義されており、それぞれユーザーの名前と年齢を受け付けます。これらのオプションは、-n
と-a
というエイリアスでも指定できます。
これらのサンプルコードは、Node.jsでコマンドラインからスクリプト内の関数を呼び出す方法を理解するための参考として役立ててください。
コマンドラインからNode.jsスクリプト内の関数を呼び出すその他の方法
サブモジュールとして呼び出す
スクリプト内の関数をサブモジュールとして定義し、別のスクリプトからrequire()を使用して呼び出すことができます。
サブモジュールとして定義するスクリプト (my-module.js)
function hello() {
console.log('Hello, world!');
}
module.exports = {
hello
};
サブモジュールを呼び出すスクリプト (index.js)
const myModule = require('./my-module');
myModule.hello();
この方法の利点は、コードを分割して再利用できることです。
NPMパッケージとして公開する
スクリプトをNPMパッケージとして公開し、他のプロジェクトからインストールして使用することができます。
NPMパッケージとして公開するスクリプト (my-package.js)
function hello() {
console.log('Hello, world!');
}
module.exports = {
hello
};
const myPackage = require('my-package');
myPackage.hello();
この方法の利点は、他の開発者があなたのスクリプトを簡単に利用できることです。
Webサーバーとして実行する
スクリプトをWebサーバーとして実行し、HTTPリクエストを使用して関数を呼び出すことができます。
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/hello') {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello, world!');
} else {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('Not Found');
}
});
server.listen(3000);
この方法の利点は、ブラウザや他のクライアントからスクリプト内の関数を呼び出せることです。
これらの方法は、それぞれ異なる利点と欠点があります。目的に合った方法を選択してください。
javascript node.js command-line