首页  >  文章  >  web前端  >  变更集 monorepo 中的记录器包

变更集 monorepo 中的记录器包

Barbara Streisand
Barbara Streisand原创
2024-11-19 17:37:02777浏览

Changesets CLI 包有一个导入,如下所示,位于 packages/cli/src/index.ts#L3 中的第 3 行

import { error } from "@changesets/logger";

我以前见过这个,一个专门用于记录器的包,在 docusaurus-logger 中。在这一点上,我相信拥有一个专用的包来在整个代码库中使用一致的记录器是整个 OSS 的通用标准/最佳实践。

为什么要为记录器提供专用包?

由于变更集是单一存储库(Docusaurus 也是如此),您会发现自己在整个代码库中重复使用包,但想象一下您使用颜色将错误记录到 CLI 的场景。为什么现在图片中的颜色是这个颜色?你可能想知道。当您使用任何开源项目(例如 Next.js 或 Docusaurus 或 Changesets)的 CLI 包时,您通过与 CLI 交互获得的反馈经常是彩色的,例如,显示错误、警告或信息。

Logger package in changesets monorepo

我从 Changesets packages/cli/src/index.ts 中挑选了一些函数

export function error(…args: Array<any>) {
 console.error(format(args, pc.red("error")));
}
export function info(…args: Array<any>) {
 console.info(format(args, pc.cyan("info")));
}
export function success(…args: Array<any>) {
 console.log(format(args, pc.green("success")));
}

那么什么是电脑?它是在文件顶部导入的 picocolors 包。

import pc from "picocolors";

使用记录器包的好处

您将受益于跨代码库的一致日志记录功能,因为如果需要,您将使用颜色编码定义公共日志。

下面是从 Docusuarus 中摘取的代码片段。

function warn(msg: unknown, …values: InterpolatableValue[]): void {
 console.warn(
 chalk.yellow(
 `${chalk.bold('[WARNING]')} ${
 values.length === 0
 ? stringify(msg)
 : interpolate(msg as TemplateStringsArray, …values)
 }`,
 ),
 );
}

Docusaurus 使用粉笔为 CLI 输出字符串着色。我提到了 Docusaurus 并展示了示例来演示如何将包纯粹用于日志记录目的。

关于我们:

在 Thinkthroo,我们研究大型开源项目并提供架构指南。我们开发了使用 Tailwind 构建的可重用组件,您可以在项目中使用它们。我们提供 Next.js、React 和 Node 开发服务。

与我们预约会面讨论您的项目。

Logger package in changesets monorepo

参考资料:

  1. https://github.com/changesets/changesets/blob/main/packages/logger/src/index.ts#L18

  2. https://github.com/changesets/changesets/blob/main/packages/cli/src/index.ts#L3

  3. https://github.com/changesets/changesets/tree/main/packages/logger

  4. https://github.com/facebook/docusaurus/blob/2b8ddb9260c54b7fdba4398bfdce64553a1356b0/packages/docusaurus-logger/src/index.ts

  5. https://www.npmjs.com/package/picocolors

  6. https://www.npmjs.com/package/chalk

以上是变更集 monorepo 中的记录器包的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn