In diesem Artikel wird ein Überblick über das MRI-Paket mit einem Anwendungsbeispiel bereitgestellt, das aus dem Changesets-Quellcode ausgewählt wurde.
Sie können das MRI-Paket verwenden, um schnell nach Flags und Argumenten zu suchen. Es ist eine Alternative zum Yargs-Parser.
npm install - save mri
// Example CLI with options $ demo-cli - foo - bar=baz -mtv - hello world
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 }
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.
MRI wurde im Changesets-CLI-Paket importiert
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);
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, }, });
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. }
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)
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 ) {
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
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.
https://www.npmjs.com/package/mri
https://github.com/changesets/changesets/blob/main/packages/cli/src/index.ts#L1C18-L1C21
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!