@tumbaland/backend-core

中文文档
1.57.0发布于 2026/11/03MITTypeScriptCommonJS

Tumbaland后端服务的核心共享功能

中文使用文档
文档目录15 节
  1. 安装
  2. 使用
  3. 基本服务设置
  4. 使用身份验证
  5. 运行状况检查(统一标准)
  6. 优雅的关闭
  7. 结构化的日志
  8. API反应
  9. 环境变量
  10. 码头工人伐木
  11. 开发vs生产
  12. 开发
  13. 生产
  14. 📦发布和版本管理
  15. 贡献

@tumbaland / backend-core

Tumbaland后端服务的核心共享功能。

安装

npm install @tumbaland/backend-core

使用

基本服务设置

import express from 'express';
import {
  logger,
  healthCheck,
  connectDB,
  requestLogger,
  errorHandler,
  correlationMiddleware
} from '@tumbaland/backend-core';

const app = express();

// Environment variables
process.env.SERVICE_NAME = 'my-service';
process.env.SERVICE_DESCRIPTION = 'My awesome service';

// Middleware
app.use(correlationMiddleware);
app.use(requestLogger);

// Routes
app.get('/health', healthCheck);

// Error handling (must be last)
app.use(errorHandler);

// Start server
connectDB()
  .then(() => {
    const PORT = process.env.PORT || 3000;
    app.listen(PORT, () => {
      logger.info(`🚀 Service running on port ${PORT}`);
    });
  })
  .catch((error) => {
    logger.error('Failed to start service:', error);
    process.exit(1);
  });

使用身份验证

import { authenticateToken } from '@tumbaland/backend-core';

app.get('/protected', authenticateToken, (req, res) => {
  const user = (req as any).user;
  res.json({ message: `Hello ${user.name}!` });
});

运行状况检查(统一标准)

每个服务都装载相同的内容 /health 就绪状态端点 createHealthCheck 工厂-跨所有服务的一个响应契约,所以 监控和仪表板的形状相同:

import { createHealthCheck } from '@tumbaland/backend-core';

// DB-backed service (default): reports `dependencies.mongodb` and returns 503
// while the connection is down.
export const healthCheck = createHealthCheck({
  service: 'my-service',
  description: 'My awesome service'
});

// Service with no database: readiness is a static ok, no `dependencies`.
export const healthCheck = createHealthCheck({
  service: 'public-service',
  description: 'Public API endpoints service',
  checkDatabase: false
});

app.get('/health', healthCheck);

身体反应: { status, service, type: 'backend', timestamp, version, description }, 加上 dependencies.mongodb 当 checkDatabase 正在进行。 /health/live (活性, 没有依赖检查——由Docker使用 HEALTHCHECK)分别由 createBaseApp.

优雅的关闭

registerShutdown 电线 SIGINT 和 SIGTERM (Docker/Kubernetes的信号 在停止和rollout时发送)以耗尽HTTP服务器并关闭MongoDB 进程退出前的连接:

import { registerShutdown } from '@tumbaland/backend-core';

const server = app.listen(PORT, () => logger.info('Service started', { port: PORT }));

// DB-backed service
registerShutdown({ serviceName: 'my-service', server });

// No-DB service: skip the Mongo disconnect
registerShutdown({ serviceName: 'public-service', server, disconnectDatabase: false });

处理程序是幂等的,并且自武装一个强制退出定时器,因此挂起关闭静止 终止。

结构化的日志

import { logger } from '@tumbaland/backend-core';

// Different log levels
logger.error('Database connection failed', { error: err.message });
logger.warn('High memory usage detected', { usage: '85%' });
logger.info('User logged in', { userId: '123', ip: '192.168.1.1' });
logger.debug('Processing request', { correlationId: req.correlationId });

API反应

import { sendSuccess, sendError } from '@tumbaland/backend-core';

app.get('/api/users', (req, res) => {
  // Success response
  sendSuccess(res, users, 'Users retrieved successfully');

  // Error response
  sendError(res, 'Failed to retrieve users', 500, 'Database error');
});

环境变量

  • NODE_ENV: development 或者 production
  • SERVICE_NAME您的服务名称
  • SERVICE_DESCRIPTION您的服务描述
  • LOG_TO_FILE:设置为 true 也可以记录到文件(仅限开发)

码头工人伐木

这个库针对Docker部署进行了优化:

  • 默认情况下记录到stdout/stderr
  • 在生产中使用结构化JSON
  • 与Docker日志驱动程序集成
  • 兼容日志聚合工具(ELK, Loki等)

开发vs生产

开发

  • 彩色控制台输出
  • 调试级日志记录
  • 人类可读的格式

生产

  • JSON结构化日志
  • 信息级及以上
  • 针对日志聚合进行了优化

📦发布和版本管理

这个库是一个真正发布的npm包(@tumbaland/backend-core),版本独立 和 标准版 和 传统的提交。看词根 README的“提交和发布”部分 要查看整个过程 其背后的原因——总结:使用常规消息提交,然后从这个目录提交 运行 npm run release (不要手动编辑 version 和 npm publish 直接,或者包装, Changelog,和标签偏离彼此的同步)。此包的标记范围为 backend-core-vX.Y.Z 所以它们不会碰撞 frontend-core的年代, components’,或者 monorepo的 app-vX.Y.Z 标签。


贡献

  1. 中的源文件进行更改 src/
  2. 运行 npm run build 编译TypeScript
  3. 测试您的更改
  4. 提交拉取请求

版本与发布记录

@tumbaland/backend-core 共发布 44 个版本,首次发布于 2026/07/12;过去 12 个月发布了 44 个版本。

版本发布日期距今
1.57.0latest2026/11/03今天
1.56.02026/11/021 天前
1.55.02026/11/011 天前
1.54.02026/10/312 天前
1.53.02026/10/312 天前
1.52.02026/10/304 天前

关于 @tumbaland/backend-core 的常见问题

@tumbaland/backend-core 是什么?

Tumbaland后端服务的核心共享功能

如何安装 @tumbaland/backend-core?

在项目目录运行 npm install @tumbaland/backend-core,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:express(^5.2.1)、mongoose(^9.7.3)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@tumbaland/backend-core 支持 TypeScript 吗?

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

@tumbaland/backend-core 支持 ESM 还是 CommonJS?

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

@tumbaland/backend-core 可以商用吗?

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

@tumbaland/backend-core 还在维护吗?

最新版本 1.57.0 发布于 2026/11/03(今天);至今共发布 44 个版本,其中过去 12 个月发布了 44 个;首次发布于 2026/07/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。