[英]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.