# @creo-team/eslint-config 中文文档

规范地址：https://npmcn.com/package/%40creo-team/eslint-config/

版本：5\.0\.2
npm 元数据更新时间：2026-10-29T18:31:42.366Z
中文译文更新时间：2026-11-14T08:22:49.586Z
软件包许可：ISC

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

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

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

- 包体积（解压后）：65.7 kB，21 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：^22\.22\.2 \|\| \>=24\.15\.0
- 运行依赖：10 个
- 首次发布：2026-02-21T02:57:16.720Z
- 最新版本发布：2026-10-29T18:31:41.913Z
- 近 30 天下载量：2104（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：15（近 12 个月 15 个）

## 中文简介

ESLint平面配置: TypeScript (限制性), Pretier, JSDoc, 复杂度, 无魔法数. Create Config () for options.

## 安装

```sh
npm install @creo-team/eslint-config
```

也可以使用：`pnpm add @creo-team/eslint-config`、`yarn add @creo-team/eslint-config`、`bun add @creo-team/eslint-config`

## README

# @creo-team/slint-config (英语)

用于TypeScript/React的ESLint平面配置:严格的类型检查,Prettier,JSDoc,复杂性限制,合成正确,没有魔法数字. 一种风格和一套规则,所以代码保持一致和可审查性——因此Cursor和Claude等工具可以修复并生成匹配的代码. 与 [ESLint MCP 服务器](https://eslint.org/docs/latest/use/mcp)。 。 。 .

[![npm version](https://img.shields.io/npm/v/@creo-team/eslint-config.svg)](https://www.npmjs.com/package/@creo-team/eslint-config) [![License](https://img.shields.io/github/license/creo-team/eslint-config)](https://npmcn.com/package/%40creo-team/eslint-config/LICENSE)

## 安装

```bash
npm install @creo-team/eslint-config --save-dev
```

**节点 :** `^22.22.2 || >=24.15.0`. 偏好节点24. **类型脚本 7** 与此配置一起工作;参见 [类型脚本](https://npmcn.com/package/%40creo-team/eslint-config/#readme-typescript)。 。 。 .

## 使用模式

### 1\. 单还本付息(违约)

一个应用或软件包,一个 `tsconfig`。使用预设的状态.

**无害环境管理** (单位:千美元)`eslint.config.mjs`:

```javascript
import eslintConfig from '@creo-team/eslint-config'
export default eslintConfig
```

**常见JS** (单位:千美元)`eslint.config.js`:

```javascript
const eslintConfig = require('@creo-team/eslint-config')
module.exports = eslintConfig
```

### 2\. 有选择的单一回购

自定义忽略或使用哪个 tsconfig :

```javascript
const { createConfig } = require('@creo-team/eslint-config')

module.exports = createConfig({
  ignores: ['dist/**', 'build/**'],
  tsconfig: 'tsconfig.app.json', // optional; default: getTsConfigFile()
})
```

在无害环境管理中(`eslint.config.mjs`),使用时 `import { createConfig } from '@creo-team/eslint-config'`。 。 。 .

### 3\. Monorepo——一个根配置(建议)

多个包(例如. `app/`, (中文(简体) ), `lib/`, (中文(简体) ), `infra/`),每个都有自己的 `tsconfig.json`启用 **项目服务** 因此,类型意识规则会解决每个文件最近的 tsconfig 。 一个 `eslint.config.js` 返回根; 运行 `eslint .` 从根起.

```javascript
const { createConfig } = require('@creo-team/eslint-config')

module.exports = createConfig({
  ignores: [
    '**/node_modules/**',
    '**/dist/**',
    '**/.next/**',
    '**/build/**',
    '**/out/**',
    '**/cdk.out/**',
    '**/*.config.js',
    '**/*.config.mjs',
    '**/*.config.ts',
  ],
  projectService: true,
})
```

**根号 `package.json`** (npm工作空间):

```json
{
  "workspaces": ["nextjs", "aws/infra", "shared"],
  "scripts": {
    "lint": "eslint .",
    "fix": "eslint . --fix"
  },
  "devDependencies": {
    "@creo-team/eslint-config": "^5.0.0",
    "eslint": "^10.11.0"
  }
}
```

**所需经费:** 每个带有类型脚本的软件包都有一个 `tsconfig.json` 在目录中。 不需要根 tsconfig 。 见 [text-slint 项目服务](https://typescript-eslint.io/blog/project-service)。 。 。 .

**示例** 见 `examples/monorepo/` 这回贷。 运行 `cd examples/monorepo && npm install && npm run lint` 以验证.

### 4\. Monorepo——每个工作空间配置

林特跑出来了 **每个工作区** (单位:千美元)`npm run lint -w nextjs`) (中文(简体) ). 每个工作区都有自己的 `eslint.config.js` 及其国家 `tsconfig`预设(无) `projectService`); 配置以工作空间 cwd 运行, 所以 `getTsConfigFile()` 发现软件包的 tsconfig .

-   **根号** `package.json`数字 : `"lint": "npm run lint -w nextjs"` (或运行每个工作空间).
-   **工作空间** (例如:. `nextjs/eslint.config.js`: 使用预设为或与 `createConfig({ ignores: ['.next/**', ...] })`。 。 。 .

单重播和每个工作空间配置 **没有** 需求 `projectService`。 。 。 .

### 脚本

在任意设置中,在运行 ESLint 的软件包中添加:

```json
{
  "scripts": {
    "lint": "eslint .",
    "fix": "eslint . --fix"
  }
}
```

### 类型脚本

类型意识规则需要 `tsconfig.json` (或 `tsconfig.eslint.json`包括你的来源。 与 **项目服务** (monorepo),每个文件使用最接近的tsconfig. 没有它,则使用一个 tsconfig(参见 [已键入](https://typescript-eslint.io/getting-started/typed-linting)) (中文(简体) ).

**类型脚本 7.** TypeScript 7 飞船还没有JavaScript API,所以打字-eslint运行在 TypeScript 6 API上([类型标注-slint#10940](https://github.com/typescript-eslint/typescript-eslint/issues/10940)) (中文(简体) ). 这个配置依赖于它,所以只有工作空间内有 TypeScript 7 的单重音符 liints as-is. 如果运行 ESLint 的软件包安装 `typescript@7` 它本身, 碰撞。 使用 [正式并肩设置](https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/#running-side-by-side-with-typescript-6.0) 相反: `tsc` 保留类型脚本 7并 `tsc6` 是类型脚本 6.

```json
{
  "devDependencies": {
    "@typescript/native": "npm:typescript@^7.0.2",
    "typescript": "npm:@typescript/typescript6@^6.0.2"
  }
}
```

### 扩展

展开并覆盖 :

```javascript
const { error, warn } = require('@creo-team/eslint-config/constants')
const base = require('@creo-team/eslint-config')
module.exports = [...base, { rules: { 'no-console': warn } }]
```

### 自定义规则

覆盖任意规则,通过扩展基础配置并添加自己的. 使用来自 `@creo-team/eslint-config/constants` -没有魔法弦.

**1\. 命名公约——允许常数使用UPPER SNAKE**

默认 : `camelCase` 用于变量, `PascalCase` 用于类型和enum成员。 允许 `UPPER_SNAKE` 常数:

```javascript
const { createConfig } = require('@creo-team/eslint-config')
const { error, FilesPattern, namingConvention } = require('@creo-team/eslint-config/constants')

const base = createConfig()

module.exports = [
  ...base,
  {
    files: FilesPattern.TsAndTsx,
    rules: {
      '@typescript-eslint/naming-convention': [error, ...namingConvention.withUpperCaseVariables],
    },
  },
]
```

**2\. 文件命名——为 `.ts` 编号 : `.tsx` 文件**

安装 [斯林特-插孔-独角兽](https://github.com/sindresorhus/eslint-plugin-unicorn),然后添加:

```javascript
const { createConfig } = require('@creo-team/eslint-config')
const { error, FilenameCase, FilesPattern } = require('@creo-team/eslint-config/constants')
const { default: unicorn } = require('eslint-plugin-unicorn') // ESM-only; require(esm) returns the module namespace

const base = createConfig()

module.exports = [
  ...base,
  {
    files: FilesPattern.TsAndTsx,
    plugins: { unicorn },
    rules: {
      'unicorn/filename-case': [error, { case: FilenameCase.KebabCase }],
    },
  },
]
```

**3\. 放松JSDoc或无魔法号码**

```javascript
const { createConfig } = require('@creo-team/eslint-config')
const { off } = require('@creo-team/eslint-config/constants')

module.exports = [
  ...createConfig(),
  {
    rules: {
      'jsdoc/require-jsdoc': off,
      'no-magic-numbers': off,
    },
  },
]
```

**4\. 规则的严重程度和命名常数**

从 `@creo-team/eslint-config/constants` 用于一致的无打字功能:

```javascript
const { createConfig } = require('@creo-team/eslint-config')
const { error, off, warn } = require('@creo-team/eslint-config/constants')

module.exports = [
  ...createConfig(),
  {
    rules: {
      'no-console': warn,
      'jsdoc/require-jsdoc': off,
      'some-rule': [error, { option: true }],
    },
  },
]
```

**5\. 自定义命名公约——建立自己的**

使用 `NamingFormat` 财务报告和审定财务报表 `NamingSelector` 用于完全控制:

```javascript
const { createConfig } = require('@creo-team/eslint-config')
const {
  error,
  FilesPattern,
  NamingFormat,
  NamingSelector,
} = require('@creo-team/eslint-config/constants')

const base = createConfig()

module.exports = [
  ...base,
  {
    files: FilesPattern.TsAndTsx,
    rules: {
      '@typescript-eslint/naming-convention': [
        error,
        { format: [NamingFormat.CamelCase], selector: NamingSelector.Default },
        { format: [NamingFormat.PascalCase], selector: NamingSelector.TypeLike },
        { format: [NamingFormat.PascalCase], selector: NamingSelector.EnumMember },
        // ... add more as needed
      ],
    },
  },
]
```

**实例:** 见 `examples/rule-overrides/` 用于工作配置和测试.

## 为什么这个配置

**可预见、可审查的代码.** 规则的选定是为了让样式决定一次(Pretier + stylistic),意图被记录(JSDoc),结构被保留在界限内(复杂,行限,没有魔法数). 这减少了无意义的辩论形式,使diffs更容易阅读.

**关键规则和他们给你的:**

| 规则/领域 | 养恤金 |
| --- | --- |
| **严格类型检查** (类型书写-slint) | 抓取类型错误和不安全 `any` 在运行时间之前。 更少的“工作到不工作”错误 |
| **联合来文文件** (段落、返回、描述) | 公共API是自我描述. IDE 提示和“去定义”工作而不开启执行 |
| **复杂程度(最多15个)** | 分会和有条件者仍受约束。 函数仍可验证且易于解释 |
| **最大行/ 函数( 200)** | 长的功能被分开。 便于命名、测试和再利用 |
| **无魔法数( 警告)** | 文学成为被命名为常数. 改变阈值或状态代码发生在一个地方 |
| **不承诺执行者返回** | 从“ 承诺” 执行者获取返回值—— 总是错误 |
| **无等闲 (警告)** | 旗子按顺序等待,应该 `Promise.all()` |
| **无控制台( 警告)** | 捕获剩余调试日志, 特别是来自 AI 生成的代码 |
| **进口规则** (无循环,顺序,解析器) | 没有循环解析; 一致导入顺序; TypeScript 路径解析工作 |
| **高级** | 一个问题。 代码审查中没有样式 |

**LLM - 和助手友好.** Cursor, Claude等工具在代码库一致并被记录的情况下表现得更好. 这种配置执行一种风格(因此生成了代码匹配),要求JSDoc在公共表面(因此模型有上下文),并保持了复杂度和魔法数字的检查(因此建议保持相同的风格和重构是本地的). 使用 [ESLint MCP 服务器](https://eslint.org/docs/latest/use/mcp) 这样助理就可以运行 ESLint 并修复您的编辑器中的违规.

## 可选: 项目结构锁定

锁定在 monrepo 工作空间 dirs 和 app 目录结构中. 要求数 [项目结构](https://www.npmjs.com/package/eslint-plugin-project-structure)数字 :

```bash
npm install eslint-plugin-project-structure --save-dev
```

### Monorepo-锁定工作空间 dirs

仅执行 `nextjs`, (中文(简体) ), `aws/infra`,以及 `shared` 存在于根上 :

```javascript
const { createConfig } = require('@creo-team/eslint-config')

module.exports = createConfig({
  projectService: true,
  structure: {
    workspaces: ['nextjs', 'aws/infra', 'shared'],
  },
  ignores: ['**/node_modules/**', '**/dist/**', '**/.next/**', '**/cdk.out/**', '**/*.config.*'],
})
```

### Monorepo + 应用结构

锁定工作空间并强制应用布局(例如. `components`, (中文(简体) ), `lib`, (中文(简体) ), `utils`内部 `nextjs` 软件包 :

```javascript
const { createConfig } = require('@creo-team/eslint-config')

module.exports = createConfig({
  projectService: true,
  structure: {
    workspaces: ['nextjs', 'aws/infra', 'shared'],
    appStructure: 'nextjs',  // preset: app/, components/, lib/, utils/, hooks/, styles/, public/
    appPath: 'nextjs',       // which workspace gets app structure
  },
  ignores: ['**/node_modules/**', '**/dist/**', '**/.next/**', '**/cdk.out/**', '**/*.config.*'],
})
```

### 单回波——仅应用结构

执行单个 Next.js app 的结构:

```javascript
const { createConfig } = require('@creo-team/eslint-config')

module.exports = createConfig({
  structure: {
    appStructure: 'nextjs',  // app/, components/, lib/, utils/, hooks/, styles/, public/
  },
  ignores: ['.next/**', 'node_modules/**'],
})
```

### App 结构预设

| 预设 | 迪尔 |
| --- | --- |
| `nextjs` | app,组件, lib, utils, 钩子, 样式, 公共 |
| `nextjsAppRouter` | 相同的 + 设置 |
| `react` | src/{组件, lib, utils, 钩子, 样式}, 公共 |
| `express` | src/{路由,控制器,服务,utils,中件} |
| `src` | src/{组件, lib, utils, 设置} |

### 自定义 dirs

通过一系列目录名称而不是预设 :

```javascript
structure: {
  appStructure: ['components', 'lib', 'utils', 'hooks', 'settings'],
}
```

## 常数(`@creo-team/eslint-config/constants`(中文(简体) )

导入规则值和预设—— 无魔法字符串 :

| 导出 | 使用 |
| --- | --- |
| `error`, (中文(简体) ), `warn`, (中文(简体) ), `off` | 规则严重性 |
| `NamingFormat` | `CamelCase`, (中文(简体) ), `PascalCase`, (中文(简体) ), `UpperCase` |
| `NamingSelector` | `Default`, (中文(简体) ), `Import`, (中文(简体) ), `Variable`, (中文(简体) ), `TypeLike`, (中文(简体) ), `EnumMember` |
| `namingConvention` | `default`, (中文(简体) ), `withUpperCaseVariables` 预设 |
| `FilesPattern` | `TsAndTsx` —— 说 `['**/*.ts', '**/*.tsx']` |
| `FilenameCase` | `KebabCase`, (中文(简体) ), `CamelCase`, (中文(简体) ), `PascalCase` (独角兽) |
| `AppStructurePreset` | `NextJs`, (中文(简体) ), `Express`, (中文(简体) ), `React`等 (中文(简体) ). |

## 包含的内容

-   **类型脚本 ESLint** ——推荐+严格打字,字型
-   **高级** ——格式化(tabs,120平面宽度,无分号)
-   **联合来文文件** 需要描述、参数、声明/方法的返回(不是箭头函数)
-   **导入** ——顺序,无循环,解析器类型Script
-   **完美主义者** — 字母排序( 已禁用导入排序)
-   **同步正确性** ——不承诺-执行-返回(error),不等待-落地(warn)
-   **质量** – 复杂(最大为15个),最大行,最大行-每个函数,无磁体数字(警告),无锥(警告)

## 文档

-   [欧洲标准化组织](https://npmcn.com/package/%40creo-team/eslint-config/docs/ESLINT-STANDARDS.md) ——建筑与规则哲学
-   [欧洲审计署](https://npmcn.com/package/%40creo-team/eslint-config/docs/ESLINT-AUDIT.md) -v3.0.0 审计结果和决定
-   [AI-CODE-STANDS.md (英语)](https://npmcn.com/package/%40creo-team/eslint-config/docs/AI-CODE-STANDARDS.md) - 人工智能助理指南

## 释放流量

特伦克制. 弹出 `version` 内 `package.json`,推动 `main` → `github-release` 创建标签 + GitHub 释放 → `npm-publish` 发布至npm. OIDC信任出版,无符号.

## 实例

-   **莫诺雷波:** `examples/monorepo/` ——根配置为 `projectService`npm工作空间。 见 [实例/README.md](https://npmcn.com/package/%40creo-team/eslint-config/examples/README.md)。 。 。 .
-   **结构 :** `examples/structure/` ——锁定工作空间和app dirs与 `structure` 选项。 见 [实例/结构/README.md](https://npmcn.com/package/%40creo-team/eslint-config/examples/structure/README.md)。 。 。 .

## 发展

见 [捐款额](https://npmcn.com/package/%40creo-team/eslint-config/CONTRIBUTING.md)本地测试 `npm link`数字 :

```bash
# In eslint-config repo
npm link

# In consuming project
npm link @creo-team/eslint-config
```

**环境变量** (可选) :

-   `ESLINT_DEBUG` ——启用调试日志
-   `ESLINT_TSCONFIG` —— 覆盖 tsconfig 文件
-   `ESLINT_FALLBACK_TSCONFIG` 控制倒置的 tsconfig
-   `ESLINT_START_DIR` ——搜索启动目录

## 许可证

ISC (英语).

## 常见问题

### @creo-team/eslint-config 是什么？

ESLint平面配置: TypeScript \(限制性\), Pretier, JSDoc, 复杂度, 无魔法数\. Create Config \(\) for options\.

### 如何安装 @creo-team/eslint-config？

在项目目录运行 npm install @creo-team/eslint-config，或使用 pnpm add / yarn add / bun add。

### @creo-team/eslint-config 支持 TypeScript 吗？

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

### @creo-team/eslint-config 支持 ESM 还是 CommonJS？

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

### @creo-team/eslint-config 需要什么版本的 Node\.js？

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

### @creo-team/eslint-config 可以商用吗？

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

### @creo-team/eslint-config 的下载量有多少？

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

### @creo-team/eslint-config 还在维护吗？

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

