Hello! 欢迎来到小浪资源网!

变更集中的 Nodejs util 模块用法


您将在 changesets 源代码中的第 4 行找到导入内容

import { format } from "util"; 

本文概述了 util 模块及其在变更集中的用法。

实用模块

util模块主要是为了支持node.JS自己的内部api的需求而设计的。然而,许多实用程序对于应用程序和模块开发人员也很有用。可以使用以下方式访问:

const util = require('util'); 

您可以在此处阅读有关 util 模块的更多信息。

变更集中的 Nodejs util 模块用法

util 模块有相当多的 api,但我们对 format api 感兴趣,因为这是在 changesets 源代码中使用的。

util.format(format[, …args])

util.format() 方法使用第一个参数作为类似 printf 的格式返回格式化字符串

第一个参数是包含零个或多个占位符标记的字符串。每个占位符标记都替换为相应参数的转换值。支持的占位符有:

  • %s — 字符串。

  • %d — 数字(整数或浮点值)。

  • %i — 整数。

  • %f — 浮点值。

  • %j — json。如果参数包含循环引用,则替换为字符串“[circular]”。

  • %o — 对象。具有通用 JavaScript 对象格式的对象的字符串表示形式。类似于

    util.inspect() 带有选项 { showhidden: true, depth: 4, showproxy: true }。这将显示完整的对象

    包括不可枚举的符号和属性。

  • %o — 对象。具有通用 javascript 对象格式的对象的字符串表示形式。类似于 util.inspect()

    没有选项。这将显示不包括不可枚举符号和属性的完整对象。

  • %% — 单个百分号 (‘%’)。这不会消耗参数。

如果占位符没有相应的参数,则不会替换占位符。

util.format('%s:%s', 'foo'); // returns: 'foo:%s' 

如果传递给 util.format() 方法的参数多于占位符的数量,则多余的参数将被强制转换为字符串,然后连接到返回的字符串,每个字符串均以空格分隔。 typeof 为‘Object’或‘symbol’(NULL 除外)的过多参数将被 util.inspect() 转换。

util.format('%s:%s', 'foo', 'bar', 'baz'); // 'foo:bar baz' 

如果第一个参数不是字符串,则 util.format() 返回一个由空格分隔的所有参数串联而成的字符串。使用 util.inspect() 将每个参数转换为字符串。

util.format(1, 2, 3); // '1 2 3' 

如果仅将一个参数传递给 util.format(),则该参数将按原样返回,不带任何格式。

util.format('%% %s'); // '%% %s' 

现在我们了解了 util 模块和格式 api 的基础知识,现在让我们看看 changesets 中的格式用法。

变更集中的 util.format 用法

搜索格式,我发现了 2 个使用格式的实例。

变更集中的 Nodejs util 模块用法

``` ${format("", err).replace(process.cwd(), "<cwd>")} ``` 

这只是输出错误,并且由于第一个参数是空字符串,因此不需要进行替换。

变更集中的 Nodejs util 模块用法

util  .format("", …args)  .split(" ")  .join(" " + fullPrefix + " ") 

这会产生一个由空格分隔的字符串,假设…args是逗号分隔的

关于我们:

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

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

变更集中的 Nodejs util 模块用法

参考资料:

  1. https://www.npmjs.com/package/util

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

  3. https://github.com/changesets/changesets/blob/main/packages/cli/src/index.ts#l88

  4. https://nodejs.org/docs/latest-v8.x/api/util.html#util_util_format_format_args

  5. https://github.com/changesets/changesets/blob/main/packages/logger/src/index.ts#l23

  6. https://github.com/changesets/changesets/blob/main/packages/get-github-info/src/index.test.ts#l127

  7. https://github.com/changesets/changesets/blob/main/packages/cli/src/index.ts#l88

相关阅读