


Rechercher les indicateurs et arguments CLI à l'aide du package MRI
Nov 16, 2024 am 11:19 AMDans 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
Utilisation
// Example CLI with options $ demo-cli - foo - bar=baz -mtv - hello world
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 }
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
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);
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, }, });
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. }
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)
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 ) {
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.
Références :
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
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Remplacer les caractères de chaîne en javascript

Tutoriel de configuration de l'API de recherche Google personnalisé

8 Superbes plugins de mise en page JQuery Page

Créez vos propres applications Web Ajax

Qu'est-ce que & # x27; ceci & # x27; en javascript?
