Rumah >hujung hadapan web >tutorial js >Imbas bendera dan hujah CLI menggunakan pakej MRI
Dalam artikel ini, gambaran keseluruhan pakej MRI disediakan dengan contoh penggunaan yang dipilih daripada kod sumber Changesets.
Anda boleh menggunakan pakej MRI untuk mengimbas bendera dan hujah dengan cepat. Ia adalah alternatif kepada yargs-parser.
npm install - save mri
// Example CLI with options $ demo-cli - foo - bar=baz -mtv - hello world
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 }
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.
MRI didapati diimport dalam pakej Changesets CLI
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);
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, }, });
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. }
pembolehubah yang dihuraikan digunakan dalam fungsi bernama run yang diimport daripada /run.ts
// run function call run(parsed._, parsed, cwd).catch((err)
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 ) {
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()
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.
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
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!