# @book000/node-utils 中文文档

规范地址：https://npmcn.com/package/%40book000/node-utils/

版本：1\.26\.6
npm 元数据更新时间：2026-11-08T04:59:41.542Z
中文译文更新时间：2026-11-08T11:09:24.409Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40book000/node-utils
原文对照：https://npmcn.com/package/%40book000/node-utils/?lang=original
项目主页：https://github.com/book000/node-utils
源码仓库：https://github.com/book000/node-utils

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：220 kB，63 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：7 个
- 首次发布：2023-03-07T15:57:17.528Z
- 最新版本发布：2026-11-08T04:59:41.283Z
- 近 30 天下载量：26804（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：1599（近 12 个月 485 个）

## 中文简介

自用图书馆

## 安装

```sh
npm install @book000/node-utils
```

也可以使用：`pnpm add @book000/node-utils`、`yarn add @book000/node-utils`、`bun add @book000/node-utils`

## README

# @ book000/node-utils (书名)

自用库 [托马奇 (书籍 000)](https://github.com/book000)

## QQ 安装

如果您正在使用 npm :

```shell
npm install @book000/node-utils
```

或使用纱线:

```shell
yarn add @book000/node-utils
```

## \* 特性

又见 [斜弧/实例/](https://npmcn.com/package/%40book000/node-utils/src/examples/) 目录.

### 有温顿的Logger

方便的 Entertainment winton 日志包装程序 .

```typescript
import { Logger } from '@book000/node-utils'

function main() {
  const logger = Logger.configure('main')
  logger.info('Hello world!')
}

main()
```

### 约克 配置框架

用于管理JSONC格式配置文件的框架类.

```typescript
import { ConfigFramework } from '@book000/node-utils'

interface Config {
  foo: string
  bar: number
}

class ExampleConfiguration extends ConfigFramework<Config> {
  protected validates(): { [key: string]: (config: Config) => boolean } {
    return {
      'foo is required': (config) => config.foo !== undefined,
      'foo is string': (config) => typeof config.foo === 'string',
      'foo is 3 or more characters': (config) => config.foo.length >= 3,
      'bar is required': (config) => config.bar !== undefined,
      'bar is number': (config) => typeof config.bar === 'number',
    }
  }
}

function main() {
  const config = new ExampleConfiguration()
  config.load()
  if (!config.validate()) {
    console.error('Configuration validation failed')
    console.error(config.getValidateFailures())
    return
  }

  console.log('foo:', config.get('foo'))
  console.log('bar:', config.get('bar'))
}

main()
```

### 哨兵( GlitchTip) 错误报告集成

`Logger` 自动转发 `error`编号 :`warn` 日志(和现有 `unhandledRejection` 编号 : `uncaughtException` 进程钩)到一个与哨兵兼容的端点(例如,自行托管) [滑块](https://glitchtip.com/)当 `SENTRY_DSN` 设置了环境变量。 除了升级外,消费方面不需要修改代码 `@book000/node-utils` 并设置环境变量.

```typescript
import { Logger } from '@book000/node-utils'

// SENTRY_DSN が設定されていれば、以下の error() 呼び出しは自動的に GlitchTip へ転送される
const logger = Logger.configure('main')
logger.error('Something went wrong', new Error('boom'))
```

转发出的问题保留了原错误的名称和消息作为标题,以及日志消息(`'Something went wrong'`)作为附件 `log.message` 标签。 问题按级别、出错名称和第一个应用程序堆栈框架(函数和文件名称)的指纹分组,或按没有日志的信件分组 `Error`。 。 。 .

一个 `Error` 在某一水平上已经报告的实例不再报告(不论日志类别),因此 `logger.error('failed', err)` 后被内地困住 `unhandledRejection` 编号 : `uncaughtException` 钩子发出一事件. 区分 `Error` 案件从不重复,同一案件首先记录为 `warn` 以及后来 `error` 仍报告两次(每级一次).

`Logger.warn` 编号 : `Logger.error` 接受可选的第三个参数 `SentryMeta` 以控制发送给哨兵的日志:

```typescript
logger.error('Payment failed', error, {
  fingerprint: ['payment-failed', '{{ default }}'], // replaces the automatic fingerprint
  tags: { feature: 'checkout' }, // string values only
  extra: { orderId: 42 }, // do not put secrets here
})
logger.warn('Expected, noisy condition', undefined, { sentry: false }) // never sent to Sentry
```

无效的值( 非字符串阵列) `fingerprint`,非字符串标记值)会被忽略。 这个 `log.message` 标记无法被覆盖 . `SentryMeta` 没有写入控制台或日志文件,只有构建的参数 `Logger` 获得荣誉(a) `sentryMeta` 属性在错误对象上被忽略。 下面转发日志 `warn` (单位:千美元)`sentry: true`)尚未支持.

| 环境变量 | 需求 | 默认 | 说明 |
| --- | --- | --- | --- |
| `SENTRY_DSN` | 否(选择输入) | 无 | 当未设定时, `SentryTransport` 编号 : `ErrorReporter` 完全没有操作 |
| `SENTRY_ENVIRONMENT` | 没有 | `process.env.NODE_ENV ?? 'production'` | 哨兵 `environment` 标签 |
| `SENTRY_LOG_LEVEL` | 没有 | `warn` | 温斯顿最小日志级别 `SentryTransport` |
| `SENTRY_RELEASE` | 没有 | 自动检测 `<name>@<version>` 从消费的应用程序 `package.json` | 覆盖自动检测 `release` 标签 |

对于明确、选入的错误报告,请在 `Logger` (例如附加自定义标记),使用 `ErrorReporter`数字 :

```typescript
import { ErrorReporter } from '@book000/node-utils'

ErrorReporter.configure()
ErrorReporter.captureException(new Error('boom'), { userId: '123' })
```

### 发送消息到 Discord

您可以使用 Discord Bot 或 Discord Webhook 向 Discord 发送消息 .

```typescript
import { Discord, DiscordMessageFlag } from '@book000/node-utils'

export async function main() {
  const discord = new Discord({
    webhookUrl: 'https://discord.com/api/webhooks/...'
  })
  /*
  // ... or using Discord Bot
  const discord = new Discord({
    token: '...',
    channelId: '1234567890',
  })
  */

  await discord.sendMessage('Hello world!')

  await discord.sendMessage({
    embeds: [
      {
        title: 'Hello world!',
        description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
        color: 0x00_ff_00,
      },
    ],
  })

  // Suppress embeds and notifications using flags
  await discord.sendMessage({
    content: 'https://example.com',
    flags:
      DiscordMessageFlag.SuppressEmbeds |
      DiscordMessageFlag.SuppressNotifications,
  })
}

main()
```

`flags` 可与 `content`, (中文(简体) ), `embeds`, (中文(简体) ), `components` 财务报告和审定财务报表 `file`。 。 。 . `sendMessage()` 接受 `SuppressEmbeds` 财务报告和审定财务报表 `SuppressNotifications`。 。 。 . 编辑时,仅限 `SuppressEmbeds` 可设置或取消设置(Discord API限制),但 `editMessage()` 还接受 `SuppressNotifications` 这样您就可以按照Discord的要求(如:. `SuppressEmbeds | SuppressNotifications` 应添加 `SuppressEmbeds` 发送信件 `SuppressNotifications`) (中文(简体) ). 其他旗帜投出错误 .

## 许可证

本项目根据以下规定获得许可证: [MIT 许可证](https://npmcn.com/package/%40book000/node-utils/LICENSE)。 。 。 .

## 常见问题

### @book000/node-utils 是什么？

自用图书馆

### 如何安装 @book000/node-utils？

在项目目录运行 npm install @book000/node-utils，或使用 pnpm add / yarn add / bun add。

### @book000/node-utils 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @book000/node-utils 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @book000/node-utils 可以商用吗？

@book000/node-utils 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @book000/node-utils 的下载量有多少？

根据 npm 官方下载统计，@book000/node-utils 在 2026/10/09 – 2026/11/07 这 30 天内被下载 26,804 次，日均约 893 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @book000/node-utils 还在维护吗？

最新版本 1\.26\.6 发布于 2026/11/08（今天）；至今共发布 1599 个版本，其中过去 12 个月发布了 485 个；首次发布于 2023/03/07。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

