Como passo argumentos de linha de comando a um programa Node.js?

Eu tenho um servidor web escrito em Node.js e eu gostaria de lançar com uma pasta específica. I'não tenho certeza de como acessar argumentos em JavaScript. I'm rodando um nó como este:

$ node server.js folder

aqui server.js é o código do meu servidor. A ajuda do Node.js diz que isso é possível:

$ node -h
Usage: node [options] script.js [arguments]

Como eu poderia acessar esses argumentos em JavaScript? De alguma forma não fui capaz de encontrar esta informação na web.

Solução

Método Padrão (sem biblioteca)

Os argumentos são armazenados em process.argv.

Aqui estão os documentos do nó sobre como lidar com args de linha de comando:

process.argv é um array contendo os argumentos da linha de comando. O primeiro elemento será 'node', o segundo elemento será o nome do arquivo JavaScript. O próximo elemento será qualquer argumento de linha de comando adicional.

// print process.argv
process.argv.forEach(function (val, index, array) {
  console.log(index + ': ' + val);
});

Isto vai gerar:

$ node process-2.js one two=three four
0: node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four
Comentários (8)

Para normalizar os argumentos como uma função javascript regular receberia, eu faço isso no meu node.js shell scripts:

var args = process.argv.slice(2);

Note que o primeiro arg é normalmente o caminho para nodejs, e o segundo arg é a localização do script que você're executando.

Comentários (12)

Optimist (acena com a cabeça optimizada)

Confira biblioteca otimista, é muito melhor do que analisar as opções de linha de comando à mão.

**Actualização***

Optimist é depreciado. Tente yargs que é um garfo ativo do otimista.

Comentários (4)