In Node.js, command line arguments are accessed through process.argv
, an array containing command line arguments that were passed when the Node.js process was launched. This concept is fundamental to designing command-line interfaces (CLI) or scripts that require user input in Node.js applications.
The initial two arguments of process.argv
array provide the following information:
Here is a basic example of how to use process.argv
:
// script.js
process.argv.forEach((value, index) => {
console.log(`${index}: ${value}`);
});
// Run the script in a terminal using the command
// node script.js arg1 arg2 arg3
Running the above script with arguments 'arg1', 'arg2', 'arg3' will output:
0: /path/to/node
1: /path/to/script.js
2: arg1
3: arg2
4: arg3
In many cases, however, you will want to ignore the first two arguments and only handle the arguments that were actually passed for your script. This is typically achieved with array slice method:
let myArgs = process.argv.slice(2);
console.log(myArgs);
Above script would output ['arg1', 'arg2', 'arg3']
.
When dealing with command-line arguments in Node.js, it is common to use libraries like minimist or yargs to help parse the command line arguments into a friendlier format.
These libraries simplify the handling of optional flags, default values and error checking for arguments, and overall provide a more structured way to deal with command line arguments, especially when developing a larger application or a more complex CLI utility.
Remember that command line arguments are always strings, and need to be parsed to a different format if required. Use javascript's built-in methods like Number()
or parseInt()
to convert arguments to numbers, or use methods like JSON.parse()
to convert a stringified JSON argument back into a JavaScript object.
In conclusion, understanding how process.argv
works and how to handle command line arguments effectively in Node.js is essential for creating flexible scripts and CLI utilities. This also shows how Node.js directly exposes core features of the operating system, like passing command line arguments to processes, to its developers.