Imbas bendera dan hujah CLI menggunakan pakej MRI

Linda Hamilton
Lepaskan: 2024-11-16 11:19:03
asal
978 orang telah melayarinya

Dalam artikel ini, gambaran keseluruhan pakej MRI disediakan dengan contoh penggunaan yang dipilih daripada kod sumber Changesets.

Pakej MRI:

Anda boleh menggunakan pakej MRI untuk mengimbas bendera dan hujah dengan cepat. Ia adalah alternatif kepada yargs-parser.

Pasang

npm install - save mri
Salin selepas log masuk

Penggunaan

// Example CLI with options 
$ demo-cli - foo - bar=baz -mtv - hello world
Salin selepas log masuk

Kod berikut dipilih daripada dokumentasi pakej 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 }
Salin selepas log masuk

Baca lebih lanjut tentang pilihan:

  • Alias

  • Boolean

  • Lalai

Pada dasarnya, kami mendapat arg CLI ditukar kepada objek. Sekarang setelah kita memahami asas-asas MRI, sudah tiba masanya kita melihat penggunaannya dalam Changesets.

Penggunaan MRI dalam Changesets:

MRI didapati diimport dalam pakej Changesets CLI

Scan for CLI flags and arguments using MRI package

Apabila anda menambah set perubahan menggunakan perintah npx changeset add atau npx changeset, ini diakses dalam pakej CLI seperti yang ditunjukkan di bawah.

const args = process.argv.slice(2);
Salin selepas log masuk

Menghuraikan argumen CLI dalam set perubahan

Kod di bawah menunjukkan cara mri digunakan dalam pakej Changeset CLI

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,
 },
});
Salin selepas log masuk

nilai yang dihuraikan akan kelihatan seperti di bawah, saya menyimpulkan ini berdasarkan dokumentasi:

{
 // 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.
}
Salin selepas log masuk

pembolehubah yang dihuraikan digunakan dalam fungsi bernama run yang diimport daripada /run.ts

// run function call
run(parsed._, parsed, cwd).catch((err)
Salin selepas log masuk

Parameter pertama dikupas._ kerana dalam dokumentasi, disediakan perintah yang dihuraikan seperti 'tambah' kelihatan seperti { _: ['add']}

// run function definition
export async function run(
 input: string[],
 flags: { [name: string]: any },
 cwd: string
) {
Salin selepas log masuk

parsed mengandungi objek yang dihuraikan mri berdasarkan args CLI dan set konfigurasi untuk boolean, rentetan, lalai, alias.

cwd ialah direktori kerja semasa, anda boleh mendapatkannya dengan process.cwd()

Tentang kami:

Di Thinkthroo, kami mengkaji projek sumber terbuka yang besar dan menyediakan panduan seni bina. Kami telah membangunkan Komponen boleh guna semula, dibina dengan tailwind, yang boleh anda gunakan dalam projek anda. Kami menawarkan perkhidmatan pembangunan Next.js, React dan Node.

Tempah mesyuarat dengan kami untuk membincangkan projek anda.

Scan for CLI flags and arguments using MRI package

Rujukan:

  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

Atas ialah kandungan terperinci Imbas bendera dan hujah CLI menggunakan pakej MRI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan