Ce face util.parseArgs
parseArgs analizează argumentele unui script după reguli obișnuite: --nume valoare, --nume=valoare, forme scurte (-n valoare, -v) și argumente fără nume (pozițiale). Implicit citește process.argv.slice(2); cu args îi dai tu tabloul.
În options descrii fiecare opțiune: type este "string" sau "boolean", short litera scurtă, multiple: true permite repetarea (primești un tablou), default valoarea implicită. Rezultatul are values (opțiunile) și positionals (restul).
Implicit, o opțiune necunoscută sau un argument pozițional neașteptat aruncă o eroare cu un mesaj clar; pozițiale permiți cu allowPositionals: true. Cu allowNegative: true (din 22.4 / 20.16) acceptă și forma --no-culori pentru opțiunile booleene.
Parametri
| Parametru | Descriere |
|---|---|
args |
Tabloul de analizat (implicit argumentele procesului). |
options |
Descrierea opțiunilor: type, short, multiple, default. |
allowPositionals |
Permite argumente fără nume. |
strict |
Implicit true: erori pentru opțiuni necunoscute. |
allowNegative |
Acceptă --no-x pentru opțiunile booleene. |
Ce returnează
Un obiect { values, positionals } (și tokens dacă ceri). values este un obiect fără prototip, afișat de console.log ca [Object: null prototype].
Exemple
Exemplul 1: Opțiuni lungi, scurte și pozițiale
În scriptul real nu dai args: sunt citite din linia de comandă. Aici le scriem explicit, ca în node raport.mjs vanzari.csv --oras Iași -v --luna 1 --luna 2.
import { parseArgs } from "node:util";
const { values, positionals } = parseArgs({
args: ["vanzari.csv", "--oras", "Iași", "-v", "--luna", "1", "--luna", "2"],
options: {
oras: { type: "string", short: "o", default: "București" },
verbose: { type: "boolean", short: "v", default: false },
luna: { type: "string", multiple: true },
format: { type: "string", default: "text" },
},
allowPositionals: true,
});
console.log(values);
console.log(positionals);
Rezultat
[Object: null prototype] {
oras: 'Iași',
verbose: true,
luna: [ '1', '2' ],
format: 'text'
}
[ 'vanzari.csv' ]
Exemplul 2: Opțiune necunoscută și forma –no-
import { parseArgs } from "node:util";
const optiuni = { culori: { type: "boolean", default: true } };
try {
parseArgs({ args: ["--colori"], options: optiuni });
} catch (eroare) {
console.log(eroare.code);
console.log(eroare.message.split("\n")[0]);
}
const { values } = parseArgs({ args: ["--no-culori"], options: optiuni, allowNegative: true });
console.log(values);
Rezultat
ERR_PARSE_ARGS_UNKNOWN_OPTION
Unknown option '--colori'
[Object: null prototype] { culori: false }
Greșeli frecvente
- Aștepți un număr:
--port 8080dă șirul"8080". Nu existătype: "number"; transformă cuNumber()și verifică. - Uiți
allowPositionals: trueși scriptul dă eroare lanode app.mjs fisier.txt: în modul strict argumentele pozițiale nu sunt permise implicit. - Pui
defaultde alt tip decâttype(de exempludefault: 3000la unstring): primești eroare la pornire. Scriedefault: "3000".
Comenzi înrudite
process.argv: Tabloul cu argumentele din linia de comandă: process.argv.slice(2) dă ce a scris utilizatorul după numele scriptului.util.styleText: Colorează și formatează textul afișat în terminal (roșu, verde, bold, subliniat) fără pachete ca chalk.readline (citire pe rânduri): Citește un fișier sau tastatura rând cu rând și pune întrebări utilizatorului în terminal (question).node --env-file: Încarcă variabilele de mediu dintr-un fișier .env în process.env, fără pachetul dotenv.