> 웹 프론트엔드 > JS 튜토리얼 > MRI 패키지를 사용하여 CLI 플래그 및 인수 검색

MRI 패키지를 사용하여 CLI 플래그 및 인수 검색

Linda Hamilton
풀어 주다: 2024-11-16 11:19:03
원래의
1055명이 탐색했습니다.

이 기사에서는 Changesets 소스 코드에서 선택한 사용 예와 함께 MRI 패키지의 개요를 제공합니다.

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에서 사용법을 살펴보겠습니다.

변경 세트의 MRI 사용:

Changesets CLI 패키지에서 MRI를 가져오는 것으로 확인되었습니다

Scan for CLI flags and arguments using MRI package

npxchangeset add 또는 npxchangeset 명령을 사용하여 변경 세트를 추가하면 아래와 같이 CLI 패키지에서 액세스됩니다.

const args = process.argv.slice(2);
로그인 후 복사

변경 세트의 CLI 인수 구문 분석

아래 코드는 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 개발 서비스를 제공합니다.

귀하의 프로젝트에 대해 논의하려면 회의를 예약하세요.

Scan for CLI flags and arguments using MRI package

참고자료:

  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

위 내용은 MRI 패키지를 사용하여 CLI 플래그 및 인수 검색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿