[英]Why does Prettier not format code in VS Code?
在對 Prettier 停止在 VSCode 中工作感到非常沮喪之后,我是如何對其進行排序的。
VS Code
-> View
-> Command Palette
,然后輸入: Format Document With
Configure Default Formatter...
然后選擇Prettier - Code formatter
。這神奇地為我解決了問題。
根據您的情況,這可能會幫助您...
在安裝 prettier 后,您只需配置默認格式化程序並選中設置中保存時格式化的復選框即可。 不要亂用其他配置文件。
Files -> Preferences -> Settings
(或Ctrl +
, 在 Windows 中)。Editor: Default Formatter
程序Prettier - Code Formatter
;見下圖;
Files -> Preferences -> Settings
(或Ctrl +
, 在 Windows 中)。Editor: Format on Save
Format On Save
下的復選框;見下圖;
禁用和啟用prettier
的擴展解決了我的問題
我沒有使用Vue,但遇到了同樣的問題。
我已經有設置
Editor: default formatter
更漂亮true
時的Editor: Format on Save
.eslintrc.js
和.prettierrc
文件但沒有任何效果。我的問題的解決方案是我已經正確設置,除了我需要:
Command
+ Shift
+ p
format document with
Configure Default Formatter...
Prettier
作為默認值。 我不知道為什么Editor: Format on Save
設置為true
是不夠的。 我需要使用上述步驟選擇默認格式化程序,以便它工作。
您可以嘗試將此部分添加到您的 VS Code settings.json 文件中嗎?
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
},
在 Windows 上:
我們可以使用以下文件打開:
Start > Run
文件路徑:
%AppData%\Code\User\settings.json
更改自:
"[javascript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
},
至:
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
筆記:
這不是 Prettier 本身的問題,而是 VSCode 擴展 prettier prettier-vscode
的問題。 根據其文檔,默認情況下禁用 Vue 格式化:
prettier.disableLanguages (默認: ["vue"])
禁用此擴展的語言 ID 列表。 需要重啟。 注意:禁用父文件夾中啟用的語言將阻止格式化,而不是讓任何其他格式化程序運行
在這種情況下,要啟用您應該設置"prettier.disableLanguages": []
。 由於這是一個擴展配置,你應該在 VSCode 設置文件中進行,而不是.prettierrc
。
1 .Use the other extension prettier was not working for me 我只是使用另一個名為PrettierNow
的 VSCODE 擴展現在我認為這會有所幫助,為我完成。 在此處查看擴展程序
2 .從prettier 的最新更新中,如果您想堅持使用prettier,您需要在項目的根目錄中添加.prettierrc
文件。 .prettierrc
的一個例子是 -
{
"tabWidth": 4,
"singleQuote": true,
"semi": false
}
在 VSCode 中啟用“保存時格式化”:設置 >> 用戶 >> 文本編輯器 >> 格式化對我有用! 🙌
如果 Prettier 在保存時自動格式化除 HTML 文件之外的所有其他文件:
按Cmd + P
或Ctrl + P
打開命令面板並在其中鍵入以下文本:
> open settings
從建議下拉菜單中單擊Preferences: Open Settings (JSON)
。 在settings.json
文件中,檢查"[html]"
鍵是否存在。 如果該鍵存在並且其值指示使用 Visual Studio Code 中安裝的另一個格式化擴展,則應將其重置為使用Prettier 。
"[html]": {
"esbenp.prettier-vscode"
}
例如,有時,當您安裝 Prettier Now 擴展時, "[html]"
鍵的值可能是"remimarsal.prettier-now"
。
如果您沒有安裝 Prettier 以外的任何其他格式擴展,您也可以從settings.json
文件中完全刪除"[html]"
鍵。
這對我有用(我的默認格式化程序已經設置為 Prettier)
default
Prettier
。轉到管理(位於左下角)->設置->用戶選項卡->文本編輯器->格式->檢查保存時的格式
如果不起作用,請關閉並再次打開您的 vscode 編輯器
對我來說 - 它與 ESlint 相關,它也適用於 Prettier。 Eslint 無法正常工作(本地安裝與全局安裝沖突),這破壞了 Prettier。
有時使用自動插件更新 Prettier 使用的必需文件可能會丟失。
如果此處存在文件或文件夾為空,請檢查此路徑
C:\Users\YOURUSERNAME\.vscode\extensions\esbenp.prettier-vscode-2.2.2\out
如果缺少卸載並重新安裝更漂亮
如果其他答案都不起作用,請檢查您的工作目錄中是否不存在沖突的更漂亮的配置.prettierrc
或檢查.prettierignore
以確保文件/文件夾沒有被忽略。
檢查您的項目目錄(工作區)中是否有 .vscode/settings.json 文件。 就我而言,有人簽入了此文件:
{
"editor.formatOnSave": false
}
解決方案:刪除文件(也從源代碼管理中刪除)並將.vscode/
添加到 .gitignore (如果您使用的是 git)。
在某些情況下,prettier 作為依賴項提供,您可能需要在 prettier vscode 使用以下命令之一識別它之前安裝它,具體取決於您使用的包管理器
npm i
或yarn
我將更漂亮的回滾到 1.7.3 並修復它
就我而言,我必須執行以下操作:
npm install --save-dev --save-exact prettier prettier-plugin-custom
)瞧,一切都開始工作了。
提示:為確保安裝良好,我檢查了版本:
npx prettier --version
檢查 .prettierrc 中的 requirePragma,它說您需要為要格式化的文件添加頂級注釋
刪除該規則,它應該可以工作
好吧,與其給出如何使用VScode 的 Prettier 擴展的指南,我更願意解釋如何依賴 ESlint 並擁有兩個世界:檢查你的代碼是否正確(ESlint),然后格式化它(Prettier)。
讓我們首先安裝ESlint 擴展,並且只安裝它,不要安裝 Prettier 的。
我強烈推薦它用於 Vue2 應用程序(目前 Nuxt 正在運行),你可以在下面找到它。 它將允許快速簡單地 ESlint (+ Prettier) 任何.vue
文件。
完成后,使用ctrl + shift + p
(Windows/Linux) 或cmd + shift + p
(Mac) 訪問Command Palette
並輸入Preferences: Open Default Settings (JSON)
在那里,你應該有這樣的東西
{
"workbench.colorTheme": "Solarized Dark", // example of some of your own configuration
"editor.codeActionsOnSave": {
"source.fixAll": true,
},
"eslint.options": {
"extensions": [
".html",
".js",
".vue",
".jsx",
]
},
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"html",
"vue",
],
}
要查看我的解決方案是否有效,請下載此Github 存儲庫,獲取最新的穩定 Node 版本(例如:14)並運行yarn
以使其正常工作。 否則,只需打開 VScode。
這個 repo 也可以用來通過檢查我的文件來仔細檢查你的配置是否正確!
然后,您可以訪問任何.js
或.vue
文件並查看那里的問題(命令面板: Problems: Focus on Problems View
)。 nuxt.config.js
和/pages/index.vue
是很好的例子,這里是index.vue
文件。
你可以看到我們確實有一些可以被 Prettier 修復的東西,但是我們也有一個eslint(vue/require-v-for-key)
錯誤。 順便說一句,該解決方案可作為評論提供。
PS:如果你想像截圖一樣有內聯的 ESlint 警告/錯誤,你可以安裝Error Lens ,如果你想擺脫錯誤,這是一個超級棒的擴展。
保存此文件,您應該會看到所有可自動修復的事情都已為您完成。 通常它主要是 Prettier 問題,但有時也可能是 ESlint。 由於我們確實擁有 Nuxt 的 ESlint 規則,因此您也將獲得一些開箱即用的良好實踐!
塔達,它的工作! 如果不是,請閱讀我答案末尾的部分。
您可以運行npx create-nuxt-app my-super-awesome-project
並在那里選擇一些東西,最重要的是Linting tools: Eslint + Prettier
(點擊空格以選擇其中之一)。
警告:從今天開始,還有一個額外的步驟可以讓 ESlint + Prettier 正常工作,如Github issue所示。 修復應該很快就會發布,那么下面的配置就不再需要了!
要解決此問題,請運行yarn add -D eslint-plugin-prettier
並仔細檢查您的.eslintrc.js
文件是否如下
module.exports = {
root: true,
env: {
browser: true,
node: true
},
parserOptions: {
parser: '@babel/eslint-parser',
requireConfigFile: false
},
extends: [
'@nuxtjs',
'plugin:prettier/recommended', // this line was updated
'prettier'
],
plugins: [
],
// add your custom rules here
rules: {}
}
然后,你可以讓它像上面一樣工作得很好。 保存文件,它應該一個接一個地運行 ESlint 然后 Prettier!
Command Palette
和ESLINT: restart ESLint Server
甚至Developer: Reload Window
從菜單中瀏覽: view -> Command Palette
在命令面板中搜索Format Document
,然后選擇 Prettier 作為您的格式引擎。
我已經在另一個項目上工作了,但是對於新項目,我必須通過這種方式再次為新項目啟用它。
檢查您的package.json
文件是否有prettier
屬性,因為這將優先。
{
"name": "example",
"scripts": { ... },
"prettier": {},
"dependencies": { ... },
"devDependencies": { ... },
}
刪除此屬性,將使用.prettierrc
文件。
優先順序在prettier docs中說明。
不要忘記在 VSCode 的設置中啟用“editor.defaultFormatter”。 在我的情況下,它是空的,因此即使是“editor.formatOnSave”似乎也沒有解決這個問題。
我嘗試啟用“保存時格式化”並將“自動保存延遲”設置為 0。它起作用了,所以我想你也可以試試這個。
編輯:您可以通過這些步驟查看它們。
Manage
(左下角的齒輪圖標)
Settings
(在管理下拉列表中)
- 搜索
Format On Save
並啟用它(選中該框)
- 向下滾動並查找
Auto Save Delay
並將其設置為0
有一些語法是 prettier 無法解析的。 ??
是其中之一。 去掉這個符號后,我的更漂亮的工作就像一個魅力。 你應該看看 vscode 中 Prettier 擴展的輸出。 這應該指出導致 prettier 正確格式化問題的行和語法。
如果您已經設置了所有可以在設置中執行的操作,那么 Prettier 將無法正常工作。 嘗試通過此命令行安裝它。 npm install --save-dev prettier
這是我處理 vue.js 文件、打字稿文件和 json 文件的更漂亮的配置。
arrowParens: 'always'
bracketSpacing: true
endOfLine: 'crlf'
htmlWhitespaceSensitivity: 'css'
insertPragma: false
jsxBracketSameLine: false
jsxSingleQuote: true
overrides:
- files: '*.json'
options:
semi: true
parser: 'json'
parser: 'babel'
printWidth: 120
proseWrap: 'preserve'
quoteProps: 'truepreserve'
requirePragma: false
semi: false
singleQuote: true
tabWidth: 8
trailingComma: 'es5'
useTabs: true
vueIndentScriptAndStyle:
不要忘記更新你的 vscode 設置
{
"extensions.ignoreRecommendations": false,
"editor.suggestSelection": "first",
"vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[vue]": {
"editor.defaultFormatter": "octref.vetur"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "vscode.html-language-features"
},
"vetur.format.options.useTabs": true}
這都是民間的!
對於我的情況,我使用的是 Windows 機器,結果發現文件系統已損壞,因此 prettier 引發了一個錯誤,因為由於文件系統損壞,它無法打開配置文件。
為了解決它,我在終端上運行chkdsk /fh:
,其中 h 是文件分區。
這解決了文件損壞和 prettier 現在工作正常。
對我來說,幫助在 VS Code 設置中禁用了這個選項(然后更漂亮地使用默認配置):
更漂亮:需要配置
重新啟動 VSCode 也可以工作
我唯一需要做的就是用一個簡單的更新我的包
npm install
我在這里嘗試了一切,但仍然無法正常工作。 就好像它不存在一樣。 Prettier 也被添加為項目中的依賴項。 事實證明,其他人添加或更新了任何導致我的 prettier 停止工作的包。
希望它可以避免它給我帶來的頭痛。
對我來說,當我擺脫解析器時它起作用了:.pretterrc 文件中的 json。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.