Skip to main content

配置代码格式化

eslint

安装 ESLint 解析 TypeScript 的依赖

  • eslint:javascript 代码检测工具,使用 espree 解析器
  • @typescript-eslint/parser:将 TypeScript 转换为 ESTree,使 eslint 可以识别
  • @typescript-eslint/eslint-plugin:只是一个可以打开或关闭的规则列表
yarn add eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin -D

2.自定义配置,添加配置文件 .eslintrc.js

module.exports = {
parser: {}, // 解析器
extends: [], // 继承的规则 [扩展]
plugins: [], // 插件
rules: {} // 规则
};

plugin 与 extend 的区别:

extend 提供的是 eslint 现有规则的一系列预设 而 plugin 则提供了除预设之外的自定义规则,当你在 eslint 的规则里找不到合适的的时候就可以借用插件来实现了 为了使配置能够正常运行,我们需要配置 解析器、插件、规则集等。

module.exports = {
parser: "@typescript-eslint/parser",
extends: ["plugin:@typescript-eslint/recommended"],
plugins: ["@typescript-eslint"],
rules: {}
};

我们已经告诉 ESLint 怎样正确解析 TypeScript 代码,并且使用了一组推荐的插件规则(extends 字段选项中的配置)

1.例子:接下来我们将为 React 添加基本规则

yarn add -D prettier eslint-config-prettier eslint-plugin-prettier

yarn add -D prettier eslint-config-prettier eslint-plugin-prettier

修改.eslintrc.js 文件

module.exports = {
...
extends: ["plugin:react/recommended", "prettier"], // 加了prettier
...
}

添加.prettierrc.js 文件

// 根目录下,内容可配置,详细看官方文档 https://prettier.io/docs/en/options.html
module.exports = {
printWidth: 80, //一行的字符数,如果超过会进行换行,默认为80
tabWidth: 2, //一个tab代表几个空格数,默认为2
semi: true, // 是否有冒号结尾,是
singleQuote: false, // 是否单引号,是
trailingComma: 'none',
};

在此,只要使用编辑器自带的格式化工具,比如右键 - 格式化文本,或者设置了编辑器auto format on save,就会按照要求自动格式化了

PS: 建议同级添加ignore文件.prettierignore,内容如下:

**/node_modules/*
build

安装vsCode插件-setting 配置

Prettier
eslint
"editor.formatOnSave": true,

其他vscode配置: user settings 与 workspace settings:user settings 里面是更通用的设置,workspace settings 是跟随项目存在,可以做到团队统一。

"eslint.validate": [
"javascript",
"javascriptreact",
{
"language": "typescript",
"autoFix": true
},
{
"language": "typescriptreact",
"autoFix": true
}
]

不生效,再来

yarn add prettier eslint-config-prettier --dev

这个生效

https://blog.csdn.net/weixin_59141333/article/details/121525759

yarn add --dev --exact prettier

.prettierrc.js

module.exports = {
tabWidth: 2, // 一个tab代表几个空格数,默认就是2
useTabs: false, // 启用tab取代空格符缩进,默认为false
semi: true, // 行尾是否使用分号,默认为true
singleQuote: true, // 字符串是否使用单引号,默认为false,设true,即单引号
quoteProps: 'as-needed', // 给对象里的属性名是否要加上引号,默认为as-needed,即根据需要决定,如果不加引号会报错则加,否则不加
trailingComma: 'es5', // 是否使用尾逗号,有三个可选值"<none|es5|all>"
jsxSingleQuote: true, // 在jsx里是否使用单引号,true 表示使用单引号
trailingComma: 'es5', // 每个键值对后面是否一定有尾随逗号,默认es5,保持默认即可
bracketSpacing: true, // 对象大括号直接是否有空格,默认为true,效果:{ foo: bar }
}
// 这样配置完后,如果保存还是不能格式化,可能是vscode的默认formatter不是prettier。
// 这时候可以按CTRL + SHIFT + P,输入format然后选择Format Document,
// 点击弹出框的按钮configure,然后选择prettier.

创建 .prettierignore 文件内容如下:

build
coverage

如果想要配置 eslint 格式化

在VSCODE的User/setting.json文件中有如下配置
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
表示保存文件这个行为触发的是eslint的规则
再看执行命令Format Document触发的规则,我们先右键选择Format Document With...来查看默认用的是哪个格式化工具,如图所示,可以看到默认用的是Prettier,到这里就很清晰了,Prettier的配置如果和eslint的配置不一样,那么执行Format Document就肯定和执行

再看执行命令Format Document触发的规则,我们先右键选择Format Document With...来查看默认用的是哪个格式化工具,Prettier的配置如果和eslint的配置不一样

1.3 创建 .prettierignore 文件内容如下:
build
coverage

vscode 中的 prettier 检查如何设置才能即时生效

使用 ctrl+shift+p(cmd+shift+p), 执行 reload window

yarn add prettier eslint-config-prettier --dev

yarn add -D prettier