# @boring-stack-pkg/eslint-plugin-elysia 中文文档

规范地址：https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/

版本：0\.2\.0
npm 元数据更新时间：2026-09-14T18:59:03.011Z
中文译文更新时间：2026-11-08T11:41:36.644Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40boring-stack-pkg/eslint-plugin-elysia
原文对照：https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/?lang=original
项目主页：https://github.com/boringstack-xyz/eslint-plugins#readme
源码仓库：https://github.com/boringstack-xyz/eslint-plugins

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

- 包体积（解压后）：177 kB，45 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：^20\.0\.0 \|\| ^22\.0\.0 \|\| \>=24\.0\.0
- 运行依赖：1 个
- peer 依赖：eslint 8\.57\.0 \|\| ^9\.0\.0，typescript \>=5\.0\.0，@typescript-eslint/parser \>=8\.0\.0
- 首次发布：2026-05-19T19:39:41.752Z
- 最新版本发布：2026-09-14T18:59:02.797Z
- 近 30 天下载量：2462（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

为Elysia.js应用程序执行建筑,类型安全,生命周期,性能模式的ESLint插件.

## 安装

```sh
npm install @boring-stack-pkg/eslint-plugin-elysia
```

也可以使用：`pnpm add @boring-stack-pkg/eslint-plugin-elysia`、`yarn add @boring-stack-pkg/eslint-plugin-elysia`、`bun add @boring-stack-pkg/eslint-plugin-elysia`

## README

# 埃斯林特-插孔-埃利西亚

[![npm](https://img.shields.io/npm/v/@boring-stack-pkg/eslint-plugin-elysia?logo=npm)](https://www.npmjs.com/package/@boring-stack-pkg/eslint-plugin-elysia) [![source](https://img.shields.io/badge/source-github-blue?logo=github)](https://github.com/boringstack-xyz/eslint-plugins/tree/main/eslint-plugin-elysia)

执行建筑、类型安全、生命周期和性能模式的 ESLint 插件 [艾丽西亚.js](https://elysiajs.com/) 应用.

## 为什么

Elysia是一个流利而以链条为基础的框架,其正确性取决于 **登记令**, (中文(简体) ), **插件命名**, (中文(简体) ), **计划声明**,以及 **平庸的环境结构解**。这些限制大多无法在类型系统中表达出来 — 一个缺失的策略,一个未命名的插件,一个在路由后注册的钩子,或者 `new Response()` elysia会将所有类型检查都按原地顺序进行.

此插件会将那些不常态在平时固定下来 .

## 安装

```sh
pnpm add -D @boring-stack-pkg/eslint-plugin-elysia @typescript-eslint/parser
```

## 用法(平面配置)

```js
// eslint.config.mjs
import tsParser from "@typescript-eslint/parser";
import elysia from "@boring-stack-pkg/eslint-plugin-elysia";

export default [
  {
    files: ["**/*.ts"],
    languageOptions: {
      parser: tsParser,
      parserOptions: { ecmaVersion: "latest", sourceType: "module" },
    },
    plugins: { elysia },
    rules: elysia.configs.recommended.rules,
  },
];
```

建议的预设使所有十二条规则在 `"error"`酌情取代个别规则:

```js
rules: {
  ...elysia.configs.recommended.rules,
  "elysia/route-requires-tag": "warn",
  "elysia/prefer-static-services": "off",
  "elysia/no-direct-error-throw": [
    "error",
    { factoryName: "HttpErrors", factoryMethod: "make" }
  ]
}
```

## 规则

| 规则 | 类别 | 说明 |
| --- | --- | --- |
| [`route-requires-schema`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/route-requires-schema.md) | 司马 | 每条路线必须至少宣布其中一条 `body`编号 :`query`编号 :`params`编号 :`response`编号 :`headers`编号 :`cookie`。 。 。 . |
| [`route-requires-tag`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/route-requires-tag.md) | 公约 | 每条路线都要申报 `detail.tags` 为斯瓦格分组. |
| [`no-direct-error-throw`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/no-direct-error-throw.md) | 安全(可固定) | 否定 `throw new Error(...)`; 使用打入错误厂. |
| [`portable-schema-types`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/portable-schema-types.md) | 安全问题 | 单位 `*.schemas.ts`,禁止 `t.Integer()`, (中文(简体) ), `t.Tuple()` 财务报告和审定财务报表 `t.Union(x.map(...))`,则OpenAPI客户端无法携带. |
| [`consistent-status-via-set`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/consistent-status-via-set.md) | 公约 | 内部路由处理器, 设置状态通过 `set.status = N`没有 `new Response(body, { status })`。 。 。 . |
| [`prefer-destructured-context`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/prefer-destructured-context.md) | 业绩 | 别把整个爱丽西亚传出去 `Context` - 控制器/服务——在边界拆除结构. |
| [`require-plugin-name`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/require-plugin-name.md) | 生命周期 | 导出 `new Elysia(...)` 实例必须声明 `{ name: "..." }` 为运行时间分解. |
| [`no-separate-model-interfaces`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/no-separate-model-interfaces.md) | 公约 | 取消重复运行时 schema 形状的 TS 接口; 使用 `typeof Schema.static` (或等同为一. |
| [`prefer-static-services`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/prefer-static-services.md) | 业绩 | 别 `new Service()` 内部的路由处理器,当该类无国籍. |
| [`require-hooks-before-routes`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/require-hooks-before-routes.md) | 生命周期 | 全球悬钩必须在同一情况下的任何路线之前注册——爱丽西亚的瀑布对命令敏感. |
| [`prefer-throw-status`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/prefer-throw-status.md) | 公约 | 内部的路由处理器,偏好 `throw status(...)` 试验/捕获 人工反应. |
| [`prefer-direct-return`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/prefer-direct-return.md) | 业绩 | 直接返回值; 让 Elysia 序列化 。 准备金 `new Response(...)` 用于流和自定义标题. |
| [`no-decorate-state-collision`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/no-decorate-state-collision.md) | 安全问题 | 断开重复的密钥 `.decorate()` 编号 : `.state()` 编号 : `.derive()` 编号 : `.resolve()` 在一个单一的例子. |

### 路由- 要求- schema

```ts
// ❌
new Elysia().post("/users", create);

// ✅
new Elysia().post("/users", create, {
  body: t.Object({ email: t.String() }),
  detail: { tags: ["Users"] },
});
```

### 需要插件名称

```ts
// ❌
export const auth = new Elysia();

// ✅
export const auth = new Elysia({ name: "Auth.Plugin" });
```

### 程序前需要呼号

```ts
// ❌  onError will not fire for /health
new Elysia().get("/health", () => "ok").onError(handleError);

// ✅
new Elysia().onError(handleError).get("/health", () => "ok");
```

### 无解析态- 缩写

```ts
// ❌  silent overwrite — second decorate("db", ...) wins
new Elysia({ name: "db" }).decorate("db", a).decorate("db", b);

// ✅
new Elysia({ name: "db" }).decorate("db", buildDb()).state("requestId", "");
```

关于每个规则的全部选项和QQ/QQ片段,参见 [`docs/rules/`](https://npmcn.com/package/%40boring-stack-pkg/eslint-plugin-elysia/docs/rules/)。 。 。 .

## 设计说明

-   **只有AST的设计.** 没有 `parserServices` / 类型检查器依赖性。 消费者不需要一个 `parserOptions.project` 设置。 规则在类型可以提供更多的信息的地方轻而易举地降解——这在"限制"下记录了每个规则
-   **家庭联系公约.** 镜像 [`eslint-plugin-module-boundaries`](https://github.com/agjs/eslint-plugin-module-boundaries) 财务报告和审定财务报表 [`eslint-plugin-drizzle-conventions`](https://github.com/agjs/eslint-plugin-drizzle-conventions): 相同的插件导出形状, 相同的 `ESLintUtils.RuleCreator` 工厂 相同的平面配置预设结构 相同的kebab-case规则 ids.
-   **高压规则是明确的.** 没有解析器服务就无法精确化的规则(`prefer-destructured-context`, (中文(简体) ), `no-separate-model-interfaces`, (中文(简体) ), `prefer-static-services`, (中文(简体) ), `prefer-throw-status`在规则文件中记录其限制.

## 发展

```sh
pnpm install
pnpm test
pnpm typecheck
pnpm build
```

## 释放

标记 a `v*` 本地版本并按下标签.. `.github/workflows/release.yml` 运行 `pnpm publish --access public` 与 `NPM_TOKEN`。 。 。 .

## 许可证

麻省理工学院.

## 常见问题

### @boring-stack-pkg/eslint-plugin-elysia 是什么？

为Elysia\.js应用程序执行建筑,类型安全,生命周期,性能模式的ESLint插件\.

### 如何安装 @boring-stack-pkg/eslint-plugin-elysia？

在项目目录运行 npm install @boring-stack-pkg/eslint-plugin-elysia，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：eslint（8\.57\.0 \|\| ^9\.0\.0）、typescript（\>=5\.0\.0）、@typescript-eslint/parser（\>=8\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @boring-stack-pkg/eslint-plugin-elysia 支持 TypeScript 吗？

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

### @boring-stack-pkg/eslint-plugin-elysia 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @boring-stack-pkg/eslint-plugin-elysia 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^20\.0\.0 \|\| ^22\.0\.0 \|\| \>=24\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @boring-stack-pkg/eslint-plugin-elysia 可以商用吗？

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

### @boring-stack-pkg/eslint-plugin-elysia 的下载量有多少？

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

### @boring-stack-pkg/eslint-plugin-elysia 还在维护吗？

最新版本 0\.2\.0 发布于 2026/09/15（1 个月前）；至今共发布 3 个版本，其中过去 12 个月发布了 3 个；首次发布于 2026/05/20。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

