@creo-team/eslint-config

中文文档
5.0.2发布于 2026/10/30ISCTypeScriptESM + CJS构建来源已验证近 30 天下载 2104

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

中文使用文档
文档目录24 节
  1. 安装
  2. 使用模式
  3. 1. 单还本付息(违约)
  4. 2. 有选择的单一回购
  5. 3. Monorepo——一个根配置(建议)
  6. 4. Monorepo——每个工作空间配置
  7. 脚本
  8. 类型脚本
  9. 扩展
  10. 自定义规则
  11. 为什么这个配置
  12. 可选: 项目结构锁定
  13. Monorepo-锁定工作空间 dirs
  14. Monorepo + 应用结构
  15. 单回波——仅应用结构
  16. App 结构预设
  17. 自定义 dirs
  18. 常数( @creo-team/eslint-config/constants (中文(简体) )
  19. 包含的内容
  20. 文档
  21. 释放流量
  22. 实例
  23. 发展
  24. 许可证

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

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

npm version License

安装

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

节点 : ^22.22.2 || >=24.15.0. 偏好节点24. 类型脚本 7 与此配置一起工作;参见 类型脚本。 。 。 .

使用模式

1. 单还本付息(违约)

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

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

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

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

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

2. 有选择的单一回购

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

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'。 。 。 .

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

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工作空间):

{
  "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 项目服务。 。 。 .

示例 见 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 的软件包中添加:

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

类型脚本

类型意识规则需要 tsconfig.json (或 tsconfig.eslint.json包括你的来源。 与 项目服务 (monorepo),每个文件使用最接近的tsconfig. 没有它,则使用一个 tsconfig(参见 已键入) (中文(简体) ).

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

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

扩展

展开并覆盖 :

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

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 文件

安装 斯林特-插孔-独角兽,然后添加:

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或无魔法号码

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 用于一致的无打字功能:

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 用于完全控制:

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 服务器 这样助理就可以运行 ESLint 并修复您的编辑器中的违规.

可选: 项目结构锁定

锁定在 monrepo 工作空间 dirs 和 app 目录结构中. 要求数 项目结构数字 :

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

Monorepo-锁定工作空间 dirs

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

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 软件包 :

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 的结构:

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 结构预设

预设迪尔
nextjsapp,组件, lib, utils, 钩子, 样式, 公共
nextjsAppRouter相同的 + 设置
reactsrc/{组件, lib, utils, 钩子, 样式}, 公共
expresssrc/{路由,控制器,服务,utils,中件}
srcsrc/{组件, lib, utils, 设置}

自定义 dirs

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

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

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

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

导出使用
error, (中文(简体) ), warn, (中文(简体) ), off规则严重性
NamingFormatCamelCase, (中文(简体) ), PascalCase, (中文(简体) ), UpperCase
NamingSelectorDefault, (中文(简体) ), Import, (中文(简体) ), Variable, (中文(简体) ), TypeLike, (中文(简体) ), EnumMember
namingConventiondefault, (中文(简体) ), withUpperCaseVariables 预设
FilesPatternTsAndTsx —— 说 ['**/*.ts', '**/*.tsx']
FilenameCaseKebabCase, (中文(简体) ), CamelCase, (中文(简体) ), PascalCase (独角兽)
AppStructurePresetNextJs, (中文(简体) ), Express, (中文(简体) ), React等 (中文(简体) ).

包含的内容

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

文档

释放流量

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

实例

  • 莫诺雷波: examples/monorepo/ ——根配置为 projectServicenpm工作空间。 见 实例/README.md。 。 。 .
  • 结构 : examples/structure/ ——锁定工作空间和app dirs与 structure 选项。 见 实例/结构/README.md。 。 。 .

发展

见 捐款额本地测试 npm link数字 :

# 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 共发布 15 个版本,首次发布于 2026/02/21;过去 12 个月发布了 15 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
5.0.2latest2026/10/3015 天前
5.0.12026/10/131 个月前
5.0.02026/09/291 个月前
4.0.02026/03/247 个月前
2.5.62026/02/238 个月前
2.5.52026/02/228 个月前

关于 @creo-team/eslint-config 的常见问题

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