이 기사에서는 Changesets 소스 코드에서 선택한 사용 예와 함께 MRI 패키지의 개요를 제공합니다.
MRI 패키지를 사용하여 플래그와 인수를 빠르게 검색할 수 있습니다. yargs-parser의 대안입니다.
npm install - save mri
// Example CLI with options $ demo-cli - foo - bar=baz -mtv - hello world
다음 코드는 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 }
옵션에 대해 자세히 알아보세요.
별칭
부울
기본값
본질적으로 CLI 인수를 객체로 변환합니다. 이제 MRI의 기본 사항을 이해했으므로 Changeset에서 사용법을 살펴보겠습니다.
Changesets CLI 패키지에서 MRI를 가져오는 것으로 확인되었습니다
npxchangeset add 또는 npxchangeset 명령을 사용하여 변경 세트를 추가하면 아래와 같이 CLI 패키지에서 액세스됩니다.
const args = process.argv.slice(2);
아래 코드는 Changeset CLI 패키지에서 MRI가 어떻게 사용되는지 보여줍니다
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, }, });
파싱된 값은 다음과 같습니다. 문서를 기반으로 추론했습니다.
{ // 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. }
파싱된 변수는 /run.ts에서 가져온 run이라는 함수에서 사용됩니다
// run function call run(parsed._, parsed, cwd).catch((err)
첫 번째 매개변수는 pared입니다._ 설명서에서 'add'와 같은 구문 분석된 명령이 { _: ['add']}
// run function definition export async function run( input: string[], flags: { [name: string]: any }, cwd: string ) {
parsed에는 CLI 인수와 부울, 문자열, 기본값, 별칭에 대한 구성 세트를 기반으로 MRI 구문 분석된 개체가 포함되어 있습니다.
cwd는 현재 작업 디렉토리이며, process.cwd()로 얻을 수 있습니다
Thinkthroo에서는 대규모 오픈소스 프로젝트를 연구하고 아키텍처 가이드를 제공합니다. 우리는 귀하의 프로젝트에서 사용할 수 있는 tailwind로 구축된 재사용 가능한 구성 요소를 개발했습니다. Next.js, React, Node 개발 서비스를 제공합니다.
귀하의 프로젝트에 대해 논의하려면 회의를 예약하세요.
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
위 내용은 MRI 패키지를 사용하여 CLI 플래그 및 인수 검색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!