@book000/node-utils

中文文档
1.26.6发布于 2026/11/08MITTypeScriptCommonJS构建来源已验证近 30 天下载 2.7万

自用图书馆

中文使用文档
文档目录7 节
  1. QQ 安装
  2. * 特性
  3. 有温顿的Logger
  4. 约克 配置框架
  5. 哨兵( GlitchTip) 错误报告集成
  6. 发送消息到 Discord
  7. 许可证

@ book000/node-utils (书名)

自用库 托马奇 (书籍 000)

QQ 安装

如果您正在使用 npm :

npm install @book000/node-utils

或使用纱线:

yarn add @book000/node-utils

* 特性

又见 斜弧/实例/ 目录.

有温顿的Logger

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

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

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

main()

约克 配置框架

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

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 进程钩)到一个与哨兵兼容的端点(例如,自行托管) 滑块当 SENTRY_DSN 设置了环境变量。 除了升级外,消费方面不需要修改代码 @book000/node-utils 并设置环境变量.

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 以控制发送给哨兵的日志:

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数字 :

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

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

发送消息到 Discord

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

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 许可证。 。 。 .

版本与发布记录

@book000/node-utils 共发布 1,599 个版本,首次发布于 2023/03/07;过去 12 个月发布了 485 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.26.6latest2026/11/08今天
1.26.52026/11/08今天
1.26.42026/11/071 天前
1.26.32026/11/062 天前
1.26.22026/11/062 天前
1.26.12026/11/053 天前

关于 @book000/node-utils 的常见问题

@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 和提交记录判断。