雀巢JS Eslint 插件
如果使用 NestJs (则https://nestjs.com/ (中文(简体) )这些 ESLint 规则将帮助您防止 NestJs 应用程序中的常见错误和问题.
跳转到 如何配置 但是如果你有问题 回来阅读整个文件.
pnpm add -D @darraghor/eslint-plugin-nestjs-typed
//or
npm i -D @darraghor/eslint-plugin-nestjs-typed
//or
bun install -d @darraghor/eslint-plugin-nestjs-typed
支持此插件
如果您在商业环境中使用此插件, 考虑在工作时间提交 PR 。 它能节省你的生意钱 所以它能赚你的生意钱!
如果你真的想直接支持我 你可以用 https://darraghoriordan.gumroad.com/coffee (中文(简体) )
但请提交公关 帮助所有的NestJS devs。 这是路!
关于版本的说明
- 版本
6.x支持 Eslint 版本^9和打字机 eslint 解析器^7财务报告和审定财务报表^8 - 版本
5.x支持 Eslint 版本^8和打字机 eslint 解析器^7财务报告和审定财务报表^8 - 版本
4.x支持 Eslint 版本^8和打字机 eslint 解析器^6 - 版本
3.x支持 Eslint 版本^8和打字机 eslint 解析器^5 - 版本
2.x支持 Eslint 版本^7.x和打字机 eslint 解析器^4
Eslint 9.x 支持
我已经更新了配置 与eslint 9.x合作。 这是一个突破性的变化.
如果您正在使用 eslint 8. x, 您应该使用此插件的 5. x 版本 .
我试图把旧风格的配置留在原地 但我还没有对其进行适当的测试 如果有任何问题,请提交公关.
见 如何配置 需要更多信息.
TS Eslint 版本支持
Ts-slint的版本之间有断裂变化.
typescript eslint parser支持一系列的打字版本,但支持最新版本可能会有延迟.
此插件只支持至版本的打字符 eslint 剖析器支持 。 见 https://github.com/typescript-eslint/typescript-eslint#被支持的-typescript-version 互联网档案馆的存檔,存档日期2013-12-11 对版本.
有规则吗?
请提交拉力请求 见 捐款。 。 。 .
现有规则索引
“建议”规则是配置此文档所描述的插件时打开的默认规则.
"推荐"这个名字是埃斯林特会,你可以安全地使用该列表中没有的规则,它们只是更有观点.
这个包裹是给谁用的?
如果使用 NestJs (则https://nestjs.com/ (中文(简体) )这些 ESLint 规则将帮助您防止 NestJs 应用程序中的常见错误和问题.
他们大多会检查你是否正确使用装饰器.
此插件中主要的规则分组是...
1. 检测巢穴依赖性注射问题
巢穴DI是声明性的,如果你忘了提供注射器,在运行时间之前不会看到出错. 巢穴很会告诉你这些在哪里 但有时不是.
特别是如果你使用自定义的提供者 错误可能非常难解 因为他们不会明确错误 关于不匹配的注射项目, 你会得到意外的操作.
这些在"巢js docs"的"共同错误"一节中被描述.
2. 使用 Open Api / Swagger 装饰并自动生成客户端
在与 NestJS 合作时,我使用由巢控制器和模型直接生成的 swagger/ Open API 规格生成我的前端客户端和模型.
我这里有一大堆规则 执行严格的开放 API打字 与装饰器 雀巢控制器和模型.
这些规则是有观点的,但对于清洁的模型生成来说是必要的,如果稍后在您的构建中使用了Open Api客户端生成器.
3. 帮助预防错误
在巢穴里有一些紧密相接但无型的装饰器 和类似的东西 如果你不小心就会被抓住 有一些规则可以帮助防止我以前遇到的问题.
4. 警卫
当使用随机的javascript对象时, CVE 用于类转换器 。 要注意在巢穴配置验证Pipe. 见 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-18413 (英语) https://github.com/typestack/class-validator/issues/438 (中文(简体) )
要安装
插件在 npm 这里: https://www.npmjs.com/package/@darraghor/eslint-plugin-nestjs-typed 您可以在 NestJS 项目中看到规则的使用: https://github.com/darraghoriordan/use-miller 互联网档案馆的存檔,存档日期2013-12-21
npm install --save-dev @darraghor/eslint-plugin-nestjs-typed
// or
yarn add -D @darraghor/eslint-plugin-nestjs-typed
// or
pnpm add -D @darraghor/eslint-plugin-nestjs-typed
如果你还没有 class-validator 你应该安装它
npm install class-validator
// or
yarn add class-validator
// or
pnpm add class-validator
要配置
更新您的平面 Eslint 配置, 导入插件并添加平面推荐规则集 .
我的配置是这样的 我百分之九十九确定你也要设置打字机.
import eslintNestJs from "@darraghor/eslint-plugin-nestjs-typed";
// ... and all your other imports
export default tseslint.config(
eslint.configs.recommended,
tseslint.configs.strictTypeChecked,
tseslint.configs.stylisticTypeChecked,
{
languageOptions: {
globals: {
...globals.node,
...globals.jest,
},
parser,
ecmaVersion: 2022,
sourceType: "module",
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
},
eslintNestJs.configs.flatRecommended // This is the recommended ruleset for this plugin
);
对于ESlint 8,我导出"经典Config"导出中的旧风格配置.
我相信这样会有用的...
import {classicPlugin} from "@darraghor/eslint-plugin-nestjs-typed";
module.exports = {
plugins: [classicPlugin],
};
注射器可以扫描所有东西
注意:注射器测试扫描您的整个项目。 最好把无关紧要的东西过滤掉 - 使用 filterFromPaths 此配置设置 。 更多信息见规则文档.
已经应用了一些合理的默认.
注意:如果不通过添加 swagger 来关闭所有 swagger 规则,则可以轻松关闭 flatNoSwagger 规则设置在推荐的规则集之后.
// all the other config
extends: [
"plugin:@darraghor/nestjs-typed/recommended",
"plugin:@darraghor/nestjs-typed/no-swagger"
],
// more config
解除规则
禁用一个全名规则, 例如您在 eslint 配置中...
rules: {
"@darraghor/nestjs-typed/api-property-returning-array-should-set-array":
"off",
}