npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

tms-koa

v0.3.3

Published

基于koa的API服务框架,内置:基于token的API访问控制机制,MySQL数据库的连接管理机制和防SQL注入,连接MongoDb,连接Redis,文件上传下载,API在线文档服务。

Readme

tms-koa (lib)

tms-koa 是基于 Koa 的轻量级 API 服务框架核心包,负责应用启动、配置加载、认证路由、控制器调度、文件服务、Swagger / Prometheus 监控、MongoDB/Redis/Agenda 等服务初始化。

主要特性

  • TmsKoa:基于 Koa 的框架入口,封装应用初始化与启动流程
  • Context:全局服务上下文,包含 App / Mongo / Redis / Fs / Push / Swagger / Metrics / Agenda 等服务实例
  • 配置文件加载:支持 config/{name}.jsconfig/{name}.local.js 两级覆盖
  • API 认证:支持 jwtredis、本地 token,以及可定制的验证码服务
  • 控制器插件:支持从目录或环境变量加载外部控制器插件定义
  • 文件管理:支持上传文件、静态文件托管和文件下载
  • Swagger 与指标:可选启用 OpenAPI 文档和 Prometheus 指标路由
  • 运行时预置:跨域、静态资源、koa-body、异常监听、HTTPS 支持

安装

在 monorepo 中已存在 packages/lib 包,若单独使用请按需安装依赖:

pnpm install

注意:redisminio 等部分依赖为 peerDependencies,需要根据实际使用场景额外安装。

使用示例

import { TmsKoa } from 'tms-koa'

async function main() {
  const app = new TmsKoa()
  await app.startup({
    beforeController: [],
    afterController: [],
    afterInit: (context) => {
      console.log('应用初始化完成', Object.keys(context))
    },
  })
}

main().catch(console.error)

运行与构建

pnpm build
pnpm test

配置说明

框架默认从当前工作目录下的 config 目录加载配置文件。例如:

  • config/app.js
  • config/redis.js
  • config/mongodb.js
  • config/fs.js
  • config/push.js
  • config/agenda.js
  • config/swagger.js
  • config/metrics.js

配置文件应导出默认对象(export default {}),并使用 .js 扩展名。

app.js

基础应用配置示例:

export default {
  port: 3000,
  name: 'tms-koa-app',
  router: {
    auth: { prefix: '' },
    controllers: { prefix: '/api' },
    swagger: { prefix: '/oas' },
    metrics: { prefix: '/metrics' },
  },
  auth: {
    captcha: { code: 'a1z9' },
    client: { accounts: [{ id: 1, username: 'user1', password: '123456' }] },
    jwt: {
      privateKey: 'tms-koa-secret',
      expiresIn: 7200,
    },
  },
  body: {
    jsonLimit: '1mb',
    formLimit: '56kb',
    textLimit: '56kb',
  },
}

环境变量覆盖

  • TMS_KOA_CONFIG_DIR:配置目录,默认 process.cwd()/config
  • TMS_KOA_APP_HTTP_PORT:应用 HTTP 端口
  • TMS_KOA_CONTROLLERS_PREFIX:控制器路由前缀
  • TMS_KOA_CONTROLLERS_PLUGINS_NPM:JSON 数组形式的控制器插件定义
  • TMS_KOA_CONTROLLERS_PLUGINS_NPM_DIR:控制器插件配置文件目录
  • TMS_KOA_CLIENT_ACCOUNT_DIR:内置账号 JSON 数据目录
  • TMS_KOA_APP_AUTH_TOKEN_LOCAL:本地免认证 token,例如 token1:1,token2:2

常见配置项

MongoDB

export default {
  disabled: false,
  master: {
    host: '127.0.0.1',
    port: 27017,
    replicaSet: '',
    maxPoolSize: 10,
    authSource: 'admin',
    connectionString: 'mongodb://127.0.0.1:27017/mydb',
  },
}

Redis

export default {
  disabled: false,
  master: {
    host: '127.0.0.1',
    port: 6379,
    password: '******',
  },
}

文件服务

export default {
  local: {
    rootDir: 'files',
  },
}

代码导出

packages/lib/src/index.ts 对外导出:

  • TmsKoa
  • Context
  • loadConfig
  • Ctrl
  • Client
  • Captcha
  • ResultData
  • ResultFault
  • ResultObjectNotFound
  • ResultSSE
  • DbModel

说明

  • TmsKoa.startup() 会自动启动 HTTP 服务,并可选启动 HTTPS
  • loadConfig() 会合并 config/{name}.jsconfig/{name}.local.js
  • 如果 auth 配置未开启或 disabled: true,则不会加载认证路由
  • 控制器插件可通过目录或环境变量注册,适合微服务插件化扩展

参考

  • 根目录 README.md
  • docs/ 中的控制器、访问控制、文件服务、监控等说明
  • packages/lib/src/app.ts 为核心启动逻辑