在本文中,提供了 MRI 包的概述以及从 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 的基础知识,是时候看看它在变更集中的用法了。
变更集中的 MRI 使用:
发现Changesets CLI包中导入了MRI
当您使用命令 npxchangeset add 或 npxchangeset 添加变更集时,可以在 CLI 包中访问这些变更集,如下所示。
const args = process.argv.slice(2);
解析变更集中的 CLI 参数
下面的代码展示了mri如何在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, }, });
解析后的值如下所示,我根据文档推断出这一点:
{ // 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中文网其他相关文章!

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

10款趣味横生的jQuery游戏插件,让您的网站更具吸引力,提升用户粘性!虽然Flash仍然是开发休闲网页游戏的最佳软件,但jQuery也能创造出令人惊喜的效果,虽然无法与纯动作Flash游戏媲美,但在某些情况下,您也能在浏览器中获得意想不到的乐趣。 jQuery井字棋游戏 游戏编程的“Hello world”,现在有了jQuery版本。 源码 jQuery疯狂填词游戏 这是一个填空游戏,由于不知道单词的上下文,可能会产生一些古怪的结果。 源码 jQuery扫雷游戏

本教程演示了如何使用jQuery创建迷人的视差背景效果。 我们将构建一个带有分层图像的标题横幅,从而创造出令人惊叹的视觉深度。 更新的插件可与JQuery 1.6.4及更高版本一起使用。 下载

本文讨论了在浏览器中优化JavaScript性能的策略,重点是减少执行时间并最大程度地减少对页面负载速度的影响。

本文演示了如何使用jQuery和ajax自动每5秒自动刷新DIV的内容。 该示例从RSS提要中获取并显示了最新的博客文章以及最后的刷新时间戳。 加载图像是选择

Matter.js是一个用JavaScript编写的2D刚体物理引擎。此库可以帮助您轻松地在浏览器中模拟2D物理。它提供了许多功能,例如创建刚体并为其分配质量、面积或密度等物理属性的能力。您还可以模拟不同类型的碰撞和力,例如重力摩擦力。 Matter.js支持所有主流浏览器。此外,它也适用于移动设备,因为它可以检测触摸并具有响应能力。所有这些功能都使其值得您投入时间学习如何使用该引擎,因为这样您就可以轻松创建基于物理的2D游戏或模拟。在本教程中,我将介绍此库的基础知识,包括其安装和用法,并提供一


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境

Atom编辑器mac版下载
最流行的的开源编辑器

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Dreamweaver Mac版
视觉化网页开发工具