如何使用 ESLint + Prettier + Airbnb 规则 + TypeScript + Vetur 配置 Vue CLI 4?

Posted

技术标签:

【中文标题】如何使用 ESLint + Prettier + Airbnb 规则 + TypeScript + Vetur 配置 Vue CLI 4?【英文标题】:How to configure Vue CLI 4 with ESLint + Prettier + Airbnb rules + TypeScript + Vetur? 【发布时间】:2020-02-28 10:29:03 【问题描述】:

当使用 Vue CLI v4.0.5 创建一个新项目并检查 TypeScriptLinter / Formatter 的选项时,您会得到预先- 用于 linting 和格式化的配置选项:

? Pick a linter / formatter config: (Use arrow keys)
> ESLint with error prevention only
  ESLint + Airbnb config
  ESLint + Standard config
  ESLint + Prettier
  TSLint (deprecated)  

我想将 Airbnb 规则 用于 ESLintPrettier(保存时格式化)和 TypeScript 解析器Vue CLI v4

这些配置也应该适用于 VS Code 的 Vetur 扩展

如何配置这种工具组合?

请注意,这不是一个欺骗问题。 Vue CLI4、TypeScript、ESLint、Airbnb、Prettier 以及与 Vetur / VS Code 一起工作的这些确切要求也有类似的问题。

EDIT 2020/02 - 最近这项挑战的性质发生了很大变化,所以我打开并自行回答了另一个问题:How to configure Vue CLI 4 with ESLint + Airbnb rules + TypeScript + Stylelint for SCSS, in VS Code editor with autofix on save?

【问题讨论】:

我不知道 Vue、typescript 和/或 Vetur 会带来什么问题,但其他人应该按照本教程工作:blog.echobind.com/… 主要思想是将代码格式分离到 Prettier 中,并应用 Airbnb 处理错误。这样可以避免双重格式化和双重保存。 @mico '这个问题在 9 小时内结束,从 ux.engineer 获得了价值 +100 声望的悬赏。' 我添加的和答案一样。 【参考方案1】:

根据我发现的一篇博文 [1],这些步骤应该可以确保它有效:

    下载 VSCode 的 ESLint 和 Prettier 扩展。

    将 ESLint 和 Prettier 库安装到我们的项目中。在项目的根目录中,您需要运行:

npm install -D eslint prettier
    安装 Airbnb 配置。如果您使用的是 npm 5+,则可以运行此快捷方式来安装配置及其所有依赖项:
npx install-peerdeps --dev eslint-config-airbnb
    安装 eslint-config-prettier(禁用 ESLint 格式设置)和 eslint-plugin-prettier(允许 ESLint 在我们键入时显示格式错误)
npm install -D eslint-config-prettier eslint-plugin-prettier
    在项目的根目录中创建.eslintrc.json 文件:

  "extends": ["airbnb", "prettier"],
  "plugins": ["prettier"],
  "rules": 
    "prettier/prettier": ["error"]
  ,

    在项目的根目录中创建.prettierrc file。这将是您配置格式设置的地方。我在下面添加了一些我自己的偏好,但我强烈建议您阅读更多关于 Prettier 配置文件的信息

  "printWidth": 100,
  "singleQuote": true

    最后一步是在保存时确保 Prettier 格式。在 VSCode 的用户设置中插入 "editor.formatOnSave": true

[1]https://blog.echobind.com/integrating-prettier-eslint-airbnb-style-guide-in-vscode-47f07b5d7d6a

【讨论】:

感谢您的回答,但是它不满足使用 Vue CLI4 和 TypeScript 进行配置以及使用 VS Code 的 Vetur 插件的问题要求(因为解析 Vue 的单文件组件目前需要一个专用插件)。 npx install-peerdeps --dev eslint-config-airbnb 安装 react 库,而不是 vue【参考方案2】:

目前,我不认为 Vetur 与 SFC(单文件组件)一起为道具提供类型化完成。这就是我们在工作中使用 JSX + Typescript + Vue + Eslint + AirBnB 的原因。

(我也在 Vue 的 #tooling Discord 频道中给你发过消息)

【讨论】:

以上是关于如何使用 ESLint + Prettier + Airbnb 规则 + TypeScript + Vetur 配置 Vue CLI 4?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 VueJS + ESLint (Airbnb) + Prettier 一起工作? (VS代码)

ESLint 和 Prettier 冲突,无法为代码块禁用 Prettier

如何使用 ESLint + Prettier + Airbnb 规则 + TypeScript + Vetur 配置 Vue CLI 4?

如何使 Eslint/Prettier 在 ci 环境中出现错误和警告时失败?

为啥使用“eslint-plugin-prettier”而不是“eslint-config-prettier”[关闭]

如何在 Vue 模板文件中配置 eslint prettier 禁用样式?