Heim > Web-Frontend > js-Tutorial > Scannen Sie mithilfe des MRI-Pakets nach CLI-Flags und -Argumenten

Scannen Sie mithilfe des MRI-Pakets nach CLI-Flags und -Argumenten

Linda Hamilton
Freigeben: 2024-11-16 11:19:03
Original
1053 Leute haben es durchsucht

In diesem Artikel wird ein Überblick über das MRI-Paket mit einem Anwendungsbeispiel bereitgestellt, das aus dem Changesets-Quellcode ausgewählt wurde.

MRT-Paket:

Sie können das MRI-Paket verwenden, um schnell nach Flags und Argumenten zu suchen. Es ist eine Alternative zum Yargs-Parser.

Installieren

npm install - save mri
Nach dem Login kopieren

Verwendung

// Example CLI with options 
$ demo-cli - foo - bar=baz -mtv - hello world
Nach dem Login kopieren

Der folgende Code stammt aus der Dokumentation des MRI npm-Pakets.

const mri = require('mri');
const argv = process.argv.slice(2);
mri(argv);
//=> { _: ['hello', 'world'], foo:true, bar:'baz', m:true, t:true, v:true }
mri(argv, { boolean:['bar'] });
//=> { _: ['baz', 'hello', 'world'], foo:true, bar:true, m:true, t:true, v:true }
mri(argv, {
 alias: {
 b: 'bar',
 foo: ['f', 'fuz']
 }
});
//=> { _: ['hello', 'world'], foo:true, f:true, fuz:true, b:'baz', bar:'baz', m:true, t:true, v:true }
Nach dem Login kopieren

Lesen Sie mehr über die Optionen:

  • Alias

  • Boolean

  • Standard

Im Wesentlichen werden die CLI-Argumente in ein Objekt umgewandelt. Nachdem wir nun die Grundlagen der MRT verstanden haben, ist es an der Zeit, uns mit ihrer Verwendung in Changesets zu befassen.

MRT-Nutzung in Changesets:

MRI wurde im Changesets-CLI-Paket importiert

Scan for CLI flags and arguments using MRI package

Wenn Sie einen Änderungssatz mit dem Befehl npx changeset add oder npx changeset hinzufügen, wird auf diese im CLI-Paket zugegriffen, wie unten gezeigt.

const args = process.argv.slice(2);
Nach dem Login kopieren

CLI-Argumente im Changeset analysieren

Der folgende Code zeigt, wie mri im Changeset-CLI-Paket verwendet wird

const parsed = mri(args, {
 boolean: ["sinceMaster", "verbose", "empty", "open", "gitTag", "snapshot"],
 string: [
 "output",
 "otp",
 "since",
 "ignore",
 "tag",
 "snapshot",
 "snapshotPrereleaseTemplate",
 ],
 alias: {
 // Short flags
 v: "verbose",
 o: "output",
 // Support kebab-case flags
 "since-master": "sinceMaster",
 "git-tag": "gitTag",
 "snapshot-prerelease-template": "snapshotPrereleaseTemplate",
 // Deprecated flags
 "update-changelog": "updateChangelog",
 "is-public": "isPublic",
 "skip-c-i": "skipCI",
 },
 default: {
 gitTag: true,
 },
});
Nach dem Login kopieren

Der geparste Wert sieht wie folgt aus. Ich habe dies anhand der Dokumentation abgeleitet:

{
 // string value (if you have used 'add' in npx changeset add)
 ['add'],
// boolean values
 "sinceMaster": true, 
 "verbose": true, 
 "empty": true, 
 "open": true, 
 "gitTag": true, 
 "snapshot": true
// string values
 // Note: if you have passed these options in your CLI, these keys will be parsed as string, no matter the what you pass in
 // example: if you pass in - otp=123, 123 here, even though is a number, gets parsed as string since otp is configured to be parsed as
 // string in the above code
 "output",
 "otp",
 "since",
 "ignore",
 "tag",
 "snapshot",
 "snapshotPrereleaseTemplate",
// The alias option in mri allows you to define alternative names (aliases) for CLI arguments.
 // This is particularly useful for supporting:
// Short flags: Such as -v for - verbose.
 // Kebab-case flags: Allowing flags like - since-master to map to camelCase variables in JavaScript (e.g., sinceMaster).
 // Deprecated flags: If you want to support older names for backward compatibility but still map them to the current property names.
}
Nach dem Login kopieren

Die geparste Variable wird in einer Funktion namens run verwendet, die aus /run.ts importiert wurde

// run function call
run(parsed._, parsed, cwd).catch((err)
Nach dem Login kopieren

Der erste Parameter ist pared._, da in der Dokumentation angegeben ist, dass geparste Befehle wie „add“ wie folgt aussehen: { _: [‘add’]}

// run function definition
export async function run(
 input: string[],
 flags: { [name: string]: any },
 cwd: string
) {
Nach dem Login kopieren

Geparst enthält MRI-geparste Objekte basierend auf den CLI-Argumenten und dem Konfigurationssatz für Boolesche Werte, Zeichenfolgen, Standardwerte und Aliase.

cwd ist ein aktuelles Arbeitsverzeichnis, Sie können dieses mit process.cwd() abrufen

Über uns:

Bei Thinkthroo studieren wir große Open-Source-Projekte und stellen Architekturführer zur Verfügung. Wir haben mit Rückenwind wiederverwendbare Komponenten entwickelt, die Sie in Ihrem Projekt nutzen können. Wir bieten Next.js-, React- und Node-Entwicklungsdienste an.

Buchen Sie einen Termin mit uns, um Ihr Projekt zu besprechen.

Scan for CLI flags and arguments using MRI package

Referenzen:

  1. https://www.npmjs.com/package/mri

  2. https://github.com/changesets/changesets/blob/main/packages/cli/src/index.ts#L1C18-L1C21

  3. https://github.com/changesets/changesets/blob/main/packages/cli/src/index.ts#L9

Das obige ist der detaillierte Inhalt vonScannen Sie mithilfe des MRI-Pakets nach CLI-Flags und -Argumenten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage