VSCode中 Eslint 和 Prettier 沖突問題最新解決方法

前言

本次環境皆為 @vue/cli默認安裝帶有的 [email protected]VSCode 插件版本:

  • Eslint v2.4.0
  • Prettier v9.10.4

為什麼會沖突

首先我們需要知道為什麼使用EslintPrettier,下面先介紹兩者的單獨用法

Eslint

Javascript Vue Typescript 等文件的代碼規范檢測工具,當代碼寫法不符合時,會在終端進行報錯提醒,阻止你的serve服務。為瞭在 VSCode 中檢測到我們代碼不規范時,能自動修復錯誤寫法,我們需要安裝 VSCode 的插件 ESLint

image.png

安裝後在 setting.json 中配置如下並重啟編輯器:

{
	"editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
	}
}

之後再編寫 js等文件保存時都會自動格式化,保證 Eslint再也不會報錯

Prettier

一種規范化的寫法規則,包含各種類型文件,其中部分Javascript 等規則,會和 Eslint不一樣,使用時隻要在VSCode 中安裝Prettier插件即可

image.png

安裝後在 setting.json 中配置如下並重啟編輯器:

{
	"editor.formatOnSave": true,
	"editor.defaultFormatter": "esbenp.prettier-vscode",
}

表示所有類型的文件的格式化都使用 Prettier

沖突

如果兩者都啟用,則因為規則沖突,在JS等文件中,會出現保存時,先運行瞭ESLint,然後再運行瞭 Prettier,導致 @eslint檢測依然報錯

解決

既然使用 eslint規范,我的理解上當然是不能去修改eslint,因為這是共用規范,修改瞭就沒有再使用的必要瞭,所以我是不推薦修改eslint的方式。

我的做法也很簡單,在eslint作用的文件類型中,繼續使用eslint進行格式化,在其他類型文件中,使用prettier進行格式化

eslint繼續使用 codeActionsOnSave進行設置,把 eslint作用范圍的文件類型的formatOnSave關閉

{
  "editor.tabSize": 2,
	// 開啟eslint
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
	},
  // 開啟自動格式化
  "editor.formatOnSave": true,
  // 設置所有文件默認格式化工具為prettier
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  // eslint范圍內的文件類型,關閉保存時格式化
  "[javascript]": { 
    "editor.formatOnSave": false
  },
  "[typescript]": { 
    "editor.formatOnSave": false
  },
  "[vue]": {
    "editor.formatOnSave": false
  },
  "[javascriptreact]": {
    "editor.formatOnSave": false
  }
}

到此這篇關於VSCode如何保證 Eslint 和 Prettier 不沖突的文章就介紹到這瞭,更多相關VSCode內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: