注意:這個沖突問題一般是指在代碼編輯器中出現的問題,這里使用的是vscode。
在前端開發(fā)中,很多人使用 prettier 作為代碼格式化工具,用 ESLint 控制代碼風格,以及檢查錯誤。
但是在同時使用 ESLint 和 prettier 的時候,由于代碼規(guī)則不一樣就會發(fā)生沖突,發(fā)生沖突的原因是:在保存文件時,**ESLint 先修復了代碼符合 ESLint 的代碼風格,之后 prettier 又格式化了代碼,導致代碼不符合 ESLint 規(guī)則了。**所以代碼就會出現 ESLint 的警告或報錯提示。
起初想的是把 prettier 規(guī)則配置的和 ESLint 一致,但是由于規(guī)則不一樣,不可能完全兼容。
之后有一個折中的方法,在 vscode 中,如果把保存文件時不格式化文件開啟,就不會自定調用 prettier 規(guī)則格式化代碼了,這樣就能符合 ESLint 規(guī)范了。
但是還有一個問題是 ESLint 修復主要針對的是 js
和 ts
的代碼,對于其他的代碼如 html、css 等文件還是得用 prittier,所以這種方法也有局限性。
解決方案1
在 vscode 中安裝插件 prettier-eslint
插件,這個插件的工作原理是先使用 prettier 格式化,然后再使用 ESLint 檢查和修復,這樣就能符合 ESLint 代碼風格了。
插件介紹鏈接:https://marketplace.visualstudio.com/items?itemName=rvest.vs-code-prettier-eslint
插件安裝完成后,將此插件設置為工作區(qū)或用戶中文件類型的默認格式化程序,在 vscode 配置文件中添加以下代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-727088.html
{
// 保存時使用 ESLint 修復可修復錯誤
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
// 定義一個默認格式化程序, 該格式化程序優(yōu)先于所有其他格式化程序設置。必須是提供格式化程序的擴展的標識符。
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint",
// "editor.formatOnPaste": false, // required
// "editor.formatOnType": false, // required
// "editor.formatOnSave": true, // optional
// "editor.formatOnSaveMode": "file", // required to format on save
// "files.autoSave": "onFocusChange" // optional but recommended
}
配置完成后,重啟 vscode 后生效。
解決方案2
在 vscode 中安裝插件 PEF: Prettier & Eslint Formatter
插件,這個插件的工作原理是先使用 prettier 格式化,然后再使用 ESLint 檢查和修復,這樣就能符合 ESLint 代碼風格了。
插件介紹鏈接:https://marketplace.visualstudio.com/items?itemName=jonwolfe.prettier-eslint-formatter文章來源:http://www.zghlxwxcb.cn/news/detail-727088.html
插件安裝完成后,將此插件設置為工作區(qū)或用戶中文件類型的默認格式化程序,在 vscode 配置文件中添加以下代碼:
{
"[javascript]": {
"editor.defaultFormatter": "jonwolfe.prettier-eslint-formatter",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": false
}
},
"[javascriptreact]": {
"editor.defaultFormatter": "jonwolfe.prettier-eslint-formatter",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": false
}
},
"[typescript]": {
"editor.defaultFormatter": "jonwolfe.prettier-eslint-formatter",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": false
}
},
"[typescriptreact]": {
"editor.defaultFormatter": "jonwolfe.prettier-eslint-formatter",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": false
}
}
}
到了這里,關于如何解決ESLint和prettier沖突問題的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!