Maison > interface Web > js tutoriel > le corps du texte

Rechercher les indicateurs et arguments CLI à l'aide du package MRI

Linda Hamilton
Libérer: 2024-11-16 11:19:03
original
977 Les gens l'ont consulté

Dans cet article, un aperçu du package MRI est fourni avec un exemple d'utilisation tiré du code source de Changesets.

Forfait IRM :

Vous pouvez utiliser le package MRI pour rechercher rapidement des indicateurs et des arguments. C'est une alternative à yargs-parser.

Installer

npm install - save mri
Copier après la connexion

Utilisation

// Example CLI with options 
$ demo-cli - foo - bar=baz -mtv - hello world
Copier après la connexion

Le code suivant est extrait de la documentation du package MRI npm.

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 }
Copier après la connexion

En savoir plus sur les options :

  • Alias

  • Booléen

  • Par défaut

En substance, nous convertissons les arguments CLI en un objet. Maintenant que nous comprenons les bases de l'IRM, il est temps d'examiner son utilisation dans les Changesets.

Utilisation de l'IRM dans les ensembles de modifications :

L'IRM est importée dans le package CLI Changesets

Scan for CLI flags and arguments using MRI package

Lorsque vous ajoutez un ensemble de modifications à l'aide de la commande npx changeset add ou npx changeset, ceux-ci sont accessibles dans le package CLI comme indiqué ci-dessous.

const args = process.argv.slice(2);
Copier après la connexion

Analyse des arguments CLI dans l'ensemble de modifications

Le code ci-dessous montre comment l'IRM est utilisé dans le package CLI Changeset

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,
 },
});
Copier après la connexion

la valeur analysée ressemblera à ci-dessous, je l'ai déduit sur la base de la documentation :

{
 // 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.
}
Copier après la connexion

La variable analysée est utilisée dans une fonction nommée run importée de /run.ts

// run function call
run(parsed._, parsed, cwd).catch((err)
Copier après la connexion

Le premier paramètre est pared._ car dans la documentation, il est prévu que les commandes analysées comme 'add' ressemblent à { _: ['add']>

// run function definition
export async function run(
 input: string[],
 flags: { [name: string]: any },
 cwd: string
) {
Copier après la connexion

parsed contient un objet analysé par mri basé sur les arguments CLI et l'ensemble de configuration pour les booléens, les chaînes, les valeurs par défaut et les alias.

cwd est un répertoire de travail actuel, vous pouvez l'obtenir avec process.cwd()

À propos de nous :

Chez Thinkthroo, nous étudions les grands projets open source et fournissons des guides architecturaux. Nous avons développé des composants réutilisables, construits avec tailwind, que vous pouvez utiliser dans votre projet. Nous proposons des services de développement Next.js, React et Node.

Prenez rendez-vous avec nous pour discuter de votre projet.

Scan for CLI flags and arguments using MRI package

Références :

  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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal