Mai mult
Cum pot trece de linie de comandă argumente pentru a o Node.js program?
Am un server de web scrise în Node.js și aș vrea să lanseze cu un anumit folder. Am'm nu sunt sigur cum să acceseze argumente în JavaScript. Am'm execută nod astfel:
$ node server.js folder
aici server.js` este serverul meu de cod. Node.js ajuta spune că acest lucru este posibil:
$ node -h
Usage: node [options] script.js [arguments]
Cum as putea accesa aceste argumente în JavaScript? Cumva, nu a fost capabil de a găsi informații pe web.
2264
31
Metoda Standard (de biblioteca)
Argumentele sunt stocate în proces.argv`
Aici sunt nodul documente privind manipularea linie de comandă argumente:
Acest lucru va genera:
Pentru a normaliza argumente ca o funcție javascript-ar primi, am face acest lucru în mea node.js scripturi shell:
Rețineți că primul argument este, de obicei, calea de a nodejs, și cel de-al doilea argument este locația de script're de executare.
Up-to-data de dreapta răspunde pentru acest lucru este de a utiliza minimist biblioteca. Am folosit pentru a folosi nod-optimist dar de atunci a fost depreciat.
Aici este un exemplu de cum să-l folosească luate direct din minimist documentație:
2018 răspuns bazat pe tendințele actuale în sălbăticie:
Vanilie javascript argument de parsare:
Acest lucru se întoarce:
Documente oficiale
Cele mai utilizate NPM pachete pentru argumentul de parsare:
Minimist: Pentru minim argument parsarea.
Commander.js: a adoptat cele Mai multe module pentru argumentul de parsare.
Miau: Bricheta alternativă la Commander.js
Yargs: Mai sofisticate argument de parsare (grele).
Vorpal.js: / Mature interactive aplicații în linia de comandă cu argument de parsare.
Optimist (nod-optimist)
Check out optimist biblioteca, este mult mai bine decât parsarea opțiuni de linie de comandă de mână.
Update
Optimist este învechită. Încerca yargs, care este un activ furculiță de optimist.
Mai multe răspunsuri aici, dar totul pare foarte complex. Acest lucru este foarte similar cu modul în bash script-uri de acces argument valori și it's deja furnizate standard cu node.js ca MooGoo subliniat. (Doar pentru a face mai ușor de înțeles pentru cineva care's nou la node.js)
Exemplu:
Commander.js
Lucrari de mare pentru a defini opțiunile, acțiunile și argumentele. Acesta generează, de asemenea, paginile de ajutor pentru tine.
Prompt
Lucrari de mare pentru a obține de intrare de la utilizator, dacă vă place callback abordare.
Co-Prompt
Lucrari de mare pentru a obține de intrare de la utilizator, dacă vă place generator de abordare.
Biblioteca Stdio
Cel mai simplu mod de a analiza argumente în linia de comandă în NodeJS este folosind stdio modulul. Inspirat de UNIX
getopt
de utilitate, este la fel de banal, după cum urmează:Dacă tu a alerga codul anterior cu această comandă:
Apoi " ops " obiect va fi după cum urmează:
Astfel încât să puteți folosi după cum doriți. De exemplu:
Grupate opțiuni sunt, de asemenea, sprijinite, astfel încât să puteți scrie
-om
în loc de-o-m
.În plus,
stdio
poate genera un ajutor/utilizare de ieșire în mod automat. Daca ai ops.printHelp()` te'll a obține următoarele:Mesajul anterior este prezentat, de asemenea, dacă obligatorie opțiune nu este dat (precedate de un mesaj de eroare) sau dacă este mispecified (de exemplu, dacă specificați un singur argument pentru o opțiune și este nevoie de 2).
Puteți instala stdio modulul folosind MNP:
Dacă scriptul este numit myScript.js și vrei să treci primul și ultimul nume, 'Sean Worthington', ca argumente de genul de mai jos:
Apoi în script scrie:
Nu Libs cu Steaguri Formatat într-un Simplu Obiect
js funcția getArgs () { const args = {}; proces.argv .felie(2, proces.argv.lungime) .forEach( arg => { // timp arg dacă (arg.felie(0,2) === '--') { const longArg = arg.split('='); const longArgFlag = longArg[0].felie(2,longArg[0].lungimea); const longArgValue = longArg.lungime > 1 ? longArg[1] : true; args[longArgFlag] = longArgValue; } // steaguri altceva dacă (arg[0] === '-') { const steaguri = arg.felie(1,arg.lungime).split(''); steaguri.forEach(flag => { args[flag] = true; }); } }); reveni args; } const args = getArgs(); console.log(args);
Exemple
Simplu
intrare
sh nod test.js -D --name=Salut
ieșire
js { D: adevărat, nume: 'Salut' }
Lumea Reală
intrare
sh nod config/build.js -lHRs --ip=$HOST --port=$PORT ... env=dev
ieșire
js { l: adevărat, H: adevărat, R: adevărat, s: adevărat, ip: '127.0.0.1', port: '8080', env: 'dev' }
comanda online-args este în valoare de o privire!
Puteți seta opțiuni folosind principalele notații standarde (afla mai multe). Aceste comenzi sunt echivalente, stabilind aceleași valori:
Pentru a accesa valorile, în primul rând a crea o listă de opțiunea definiții descrie opțiunile aplicația dvs. acceptă. La
type
proprietatea este un setter funcția (valoarea furnizată este trecut prin asta), oferindu-vă control complet asupra valorii primite.Apoi, analiza de opțiuni folosind commandLineArgs():
"opțiuni" acum arata ca acest lucru:
Utilizare avansată
Pe lângă cele de mai sus tipice de utilizare, aveți posibilitatea să configurați linia de comandă-args să accepte mai avansate sintaxa forme.
Pe bază de comandă sintaxă (git stil) în forma:
De exemplu.
Comanda și sub-comandă syntax (docher stil) în forma:
De exemplu.
Ghid de utilizare generație
Un ghid de utilizare (de obicei imprimate atunci când
--help
este setat) pot fi generate folosind comanda online-utilizare. A se vedea exemplele de mai jos și citește documentația pentru instrucțiuni despre cum să le creați.Un exemplu tipic de utilizare ghid de exemplu.
De polimer-cli ghidul de utilizare este un bun exemplu din viața reală.
Lecturi Suplimentare
Există o mulțime mai mult pentru a afla, vă rugăm să consultați wiki pentru exemple și documentație.
Nu's o aplicație pentru asta. Ei bine, module. Ei bine, mai mult de unul, probabil, sute.
Yargs este unul dintre cele amuzante, sa docs sunt interesante de citit.
Aici's un exemplu de la github/npm pagina:
De ieșire este aici (se citește opțiuni cu liniuțe etc, pe termen scurt și lung, numeric etc.).
Aici's 0-dep soluție pentru nume argumente:
Exemplu:
Notă: în mod Natural acest lucru va eșua în cazul în care argumentul conține o
=
. Acest lucru este doar pentru foarte simplu de utilizare.fără biblioteci: folosind Matrice.prototip.reduce()
pentru această comandă
nod index.js count=2 print debug=false msg=hi
de asemenea,
putem schimba
de (mult mai)
la auto-analiza Boolean & Numărul
L's, probabil, o idee bună de a gestiona dvs. de configurare în mod centralizat, folosind ceva de genul nconf https://github.com/flatiron/nconf
Aceasta vă ajută să lucrați cu fișiere de configurare, variabilele de mediu, argumente în linia de comandă.
In trecere,parsarea argumente este un proces ușor. Nod oferă cu procesul.argv de proprietate, care este o matrice de siruri de caractere, care sunt argumentele care au fost utilizate atunci când Nodul a fost invocat. Prima intrare din matrice este Nodul executabil, și cea de-a doua intrare este numele de script-ul.
Dacă tu a alerga script-ul de mai jos, cu atguments
Fișier : args.js
Veți obține matrice de genul
Dacă doriți să rulați ceva de genul asta :
--
Sau ceva de genul :
--
proj.js
Puteți ajunge argumente în linia de comandă, folosind sistemul.args`. Si eu folosesc solutia de mai jos pentru a analiza argumentele într-un obiect, astfel încât nu pot obține ceea ce vreau de nume.
acum nu't trebuie să știți indicele de argument. folositi-l ca
args.orice
Puteți analiza toate argumentele și verificați dacă acestea există.
fișier: parse-cli-arguments.js:
Decât să faci: