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