Node.js, aceite os argumentos da linha de comando

Você pode passar qualquer quantidade de argumentos quando está invocando uma aplicação Node.js, usando:

node app.js

Argumentos podem ser com chave e valor ou diretos (sem chave).

Por exemplo:

node app.js pauloluan

ou

node app.js name=pauloluan

Isso muda em como você obterá os valores no código Node.js.

A maneira de obtê-los é usando o objeto nativo process.

Ele expõe uma propriedade chamada argv, que é um array que contêm todos os argumentos passados na invocação.

O primeiro elemento é o caminho absoluto do comando node.

O segundo é o caminho absoluto do arquivo em execução.

Todos os argumentos adicionais estão presentes na terceira posição em diante.

Você pode iterar sobre todos os argumentos (incluindo o caminho do node e o do arquivo) usando um loop:

process.argv.forEach((val, index) => {
console.log(`${index}: ${val}`)
})

ou obter apenas os argumentos adicionais, criando um novo array que exclui os 2 primeiros parâmetros:

const args = process.argv.slice(2)

Se você tem um argumento direto (sem chave), como esse:

node app.js pauloluan

você pode acessá-lo usando

const args = process.argv.slice(2)
args[0]

Já nesse caso:

node app.js name=pauloluan

args[0] é name=pauloluan, e você precisa tratá-lo. A melhor maneira de fazer isso é usando a biblioteca minimist, que ajuda a lidar com argumentos:

const args = require('minimist')(process.argv.slice(2))
args['name'] //pauloluan

Desta vez você você precisa usar dois traços antes do nome do argumento:

node app.js --name=pauloluan