vscode 格式化实操手册
vscode 格式化的哲学
配置文件
{
"printWidth": 100,
"useTabs": false,
"tabWidth": 2,
"singleQuote": true,
"semi": false,
"trailingComma": "none"
}
步骤零
在 .gitignore 文件中,删去 .vscode
步骤一 vscode 配置
.vscode 文件夹下新建 extensions.json 文件,写入如下内容(如果文件已存在,新增配置项即可)
{
"recommendations": [
"esbenp.prettier-vscode",
"streetsidesoftware.code-spell-checker"
]
}
streetsidesoftware.code-spell-checker 是一个检查拼写的工具,和本次主题没啥关系,但是程序员太容易拼错单词了,并且这是一个安装即用,无需配置的插件,建议没有拼接检查插件的同学还是安装一下
.vscode 文件夹下新建 setting.json 文件,写入如下内容(如果文件已存在,新增配置项即可)
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
}
步骤二 安装插件
打开 vscode 插件栏
点击右上角的筛选漏斗
选择推荐
安装所有推荐的插件
步骤三 新建prettier 配置文件
在根目录新建 .prettierrc 文件,并填入配置内容(如果有,删去之前的配置,以此配置为准)
{
"printWidth": 100,
"useTabs": false,
"tabWidth": 2,
"singleQuote": true,
"semi": false,
"trailingComma": "none"
}
在根目录新建 .prettierignore 文件,并填入配置内容(根据项目需求来)
dist
至此,saveCode 使用统一的规范已经实现了
选读
格式化所有文件
npx prettier --write ./**/**/*.*
如果看到类似如下报错,只需要对这类文件配置对应解析器即可。例如下列报错是缺少 wxml 的解析方式,参见对微信小程序 wxml 文件处理
避免 eslint 和 prettier 的冲突
安装
yarn add -D eslint-config-prettier
yarn add -D eslint-plugin-prettier
使用
- 在配置文件 eslintrc.js 文件中,新增 extends(注意plugin:prettier/recommended放在数组最后一位)
module.exports = {
...
extends: ['plugin:prettier/recommended'],
...
}
- 删去配置文件中,rules 中和代码格式有关的规则,比如缩进、句尾分号等
整合到 git 流程中
安装
yarn add -D --exact prettier
完成 prettier 的安装好,安装另外需要的包
npx mrm@2 lint-staged
mrm 是一个自动化工具。它将根据 package.json 依赖项中的代码质量工具来安装和配置 husky 和 lint-staged
PS: 如果遇到报错only eslint, stylelint, prettier or custom rules are supported. 请查看 package.json的 devDependencies 是否同时包含了 prettier 和 eslint。
检查配置
运行完上面的命令后,只需要观察并修改 package.json 里的 lint-staged 即可
"lint-staged": {
"*.{js,ts,css,vue,json,md}": [
"prettier --write",
]
}
对微信小程序 wxml 文件处理
推荐做法
发现旧做法(直接用 html 的格式化方式去处理 wxml)对 wxml 的格式化存在问题(主要是 wxs 部分的解析),一番查找后,没有找到合适的 prettier 处理 wxml 的方案 ;于是对 wxml 采用其他的格式化引擎,需要安装另一个插件 wowbox
新做法的 .vscode/settings.json 文件如下
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[wxml]": {
"editor.defaultFormatter": "wowbox.minapp-vscode-box"
}
}
.prettierrc 文件如下
{
"printWidth": 100,
"useTabs": false,
"tabWidth": 2,
"singleQuote": true,
"semi": true,
"trailingComma": "es5"
}
旧做法 (wxs 部分的解析会出问题)
- 在 .vscode/settings.json 增加如下代码
配置 prettier.documentSelectors 用来让 prettier 找到 wxml 文件
配置 wxml 文件的格式化方式
{
...
"[wxml]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"prettier.documentSelectors": ["**/*.wxml"]
}
- 在 .prettierrc 文件中,重置 wxml 的解析器
{
...
"overrides": [
{
"files": "*.wxml",
"options": {
"parser": "html"
}
}
]
}