Domanda Come posso passare gli argomenti della riga di comando a un programma Node.js?


Ho un server web scritto in Node.js e mi piacerebbe lanciare con una cartella specifica. Non sono sicuro di come accedere agli argomenti in JavaScript. Sto usando un nodo come questo:

$ node server.js folder

Qui server.js è il mio codice server. L'aiuto di Node.js dice che questo è possibile:

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

Come potrei accedere a quegli argomenti in JavaScript? In qualche modo non sono stato in grado di trovare queste informazioni sul web.


1764
2017-12-04 01:56


origine


risposte:


Metodo standard (senza libreria)

Gli argomenti sono memorizzati in process.argv

Ecco il nodo doc sulla gestione della riga di comando args:

process.argv è un array contenente gli argomenti della riga di comando. Il primo elemento sarà 'nodo', il secondo elemento sarà il nome del file JavaScript. Gli elementi successivi saranno gli argomenti aggiuntivi della riga di comando.

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

Questo genererà:

$ 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

2343
2017-12-04 02:05



Per normalizzare gli argomenti come una normale funzione javascript, lo faccio nei miei script della shell node.js:

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

Si noti che il primo argomento è in genere il percorso per nodejs e il secondo argomento è la posizione dello script che si sta eseguendo.


472
2018-04-23 23:13



L'up-to-date destra rispondere per questo per usare il minimist biblioteca. Abbiamo usato node-optimist ma da allora è stato deprecato.

Ecco un esempio di come utilizzarlo preso direttamente dalla documentazione minimist:

var argv = require('minimist')(process.argv.slice(2));
console.dir(argv);

-

$ node example/parse.js -a beep -b boop
{ _: [], a: 'beep', b: 'boop' }

-

$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
{ _: [ 'foo', 'bar', 'baz' ],
  x: 3,
  y: 4,
  n: 5,
  a: true,
  b: true,
  c: true,
  beep: 'boop' }

234
2017-07-08 17:26



Risposta del 2018 basata sulle tendenze attuali in natura:


Argomento dell'argomento di vanilla javascript:

const args = process.argv;
console.log(args);

Questo restituisce:

$ node server.js one two=three four
['node', '/home/server.js', 'one', 'two=three', 'four']

Documenti ufficiali


Pacchetti NPM più utilizzati per l'analisi degli argomenti:

Minimist: Per l'analisi minima dell'argomento.

Commander.js: Il modulo più utilizzato per l'analisi degli argomenti.

Miao: Alternativa più leggera a Commander.js

Yargs: Argomento più sofisticato che analizza (pesante).

Vorpal.js: Applicazioni della riga di comando mature / interattive con analisi degli argomenti.


202
2018-01-14 05:26



Optimist (ottimista dei nodi)

Check-out biblioteca ottimista, è molto meglio dell'analisi delle opzioni della riga di comando a mano.

Aggiornare

Optimist è deprecato. Provare yargs che è un fork di ottimista attivo.


107
2017-07-04 04:02



Diverse grandi risposte qui, ma tutto sembra molto complesso. Questo è molto simile al modo in cui gli script di bash accedono ai valori degli argomenti ed è già fornito standard con node.js come indicato da MooGoo. (Giusto per renderlo comprensibile a qualcuno che è nuovo a node.js)

Esempio:

$ node yourscript.js banana monkey

var program_name = process.argv[0]; //value will be "node"
var script_path = process.argv[1]; //value will be "yourscript.js"
var first_value = process.argv[2]; //value will be "banana"
var second_value = process.argv[3]; //value will be "monkey"

68
2017-12-12 05:19



Commander.js

Funziona alla grande per la definizione di opzioni, azioni e argomenti. Genera anche le pagine di aiuto per te.

prontamente

Funziona alla grande per ricevere input dall'utente, se ti piace l'approccio di callback.

Co-Prompt

Funziona alla grande per ottenere input dall'utente, se ti piace l'approccio del generatore.


65
2017-09-20 10:20