在我安装并启用了ESlint和Prettier的Nuxt应用程序中,我切换到Visual Studio Code。
当我打开一个.vue文件并按CMD+ Shift + P并选择格式化文档时,我的文件根本没有被格式化。
我的.prettierrc设置:
{
"tabWidth": 2,
"semi": false,
"singleQuote": true
}
我有这么多源代码行,所以我不能手动格式化它们。我做错了什么?
在我安装并启用了ESlint和Prettier的Nuxt应用程序中,我切换到Visual Studio Code。
当我打开一个.vue文件并按CMD+ Shift + P并选择格式化文档时,我的文件根本没有被格式化。
我的.prettierrc设置:
{
"tabWidth": 2,
"semi": false,
"singleQuote": true
}
我有这么多源代码行,所以我不能手动格式化它们。我做错了什么?
当前回答
我尝试了这篇文章中的每一个解决方案,我才意识到我唯一的问题是我的Visual Studio颜色主题。这么简单!
之前:
后:
其他回答
如何通过VScode的ESlint插件格式化你的代码
好吧,与其给出如何使用VScode的Prettier扩展的指南,我更愿意解释如何依赖ESlint并拥有两个世界:检查你的代码是正确的(ESlint),然后格式化它(Prettier)。
这样做的好处是什么?
not forcing your entire team to use VScode with the Prettier extension, maybe some prefer Vim, IntelliJ's Webstorm, Emacs etc... A tool-agnostic solution is IMO always better. I think that linting your code is more important that formatting it, but if you have both extensions working at the same time, you may have conflicts between the formatting and the linting. your hardware will struggle less, if you have less extensions running (mainly because it can stop the conflicts) using an ESlint + Prettier combo will strip the need to have a specific personal configuration aside of the codebase (untracked). You'll also benefit from having Vue/Nuxt specific ESlint rules and a simpler/more universal configuration. an ESlint configuration can be configured to be run before a commit, in a CI/CD or anywhere really.
如何实现这种设置?
让我们首先安装ESlint扩展,并且只安装它,不要安装更漂亮的扩展。
还没有安装Vetur ?
我强烈推荐ve2应用程序使用它(Nuxt目前正在运行),你可以在下面找到它。它将允许快速简单地ESlint (+ pretty)任何.vue文件。
完成后,使用ctrl + shift + p (Windows/Linux)或cmd + shift + p (Mac)访问命令面板,并键入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。 这个回购也可以用来通过检查我的文件来检查您的配置是否正确!
然后,你可以访问任何.js或.vue文件,并看到那里的问题(命令面板:问题:关注问题视图)。js和/pages/index。Vue是很好的例子,这里是索引。vue文件。
你可以看到,我们确实有几个东西可以被pretty修复,但我们也有一个eslint(vue/require-v-for-key)错误。顺便说一句,解决方案可作为下面的评论。
PS:如果你想有内联ESlint警告/错误,如截图所示,你可以安装Error Lens,如果你想摆脱错误,这是一个超级神奇的扩展。
保存这个文件,你应该看到每一个自动修复的事情都为你做了。通常它主要是漂亮的问题,但有时也可以是ESlint。因为我们有来自Nuxt的ESlint规则,你也会得到一些很好的实践!
塔达,起作用了!如果不是,请阅读我答案后面的部分。
如果你想创建一个全新的项目
你可以运行npx create-nuxt-app my-super-awesome-project,并在那里选择一些东西,最重要的是检测工具:Eslint + Prettier(点击空格选择其中之一)。
警告:到今天为止,要让ESlint + Prettier正常工作,还需要额外的步骤,如Github所示。修复应该很快就会发布,然后下面的配置将不再需要!
要解决这个问题,运行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,然后一个接一个地变得更漂亮!
如果你还有问题
尝试再次使用命令面板和ESLINT:重启ESLINT服务器或甚至开发人员:重新加载窗口 如果你需要帮助,欢迎留言或联系我
你只需要配置你的默认格式化器,并勾选设置中的Format On Save复选框,在安装prettier后,使其工作。不要乱动其他配置文件。
1 -选择Default Formatter
打开文件->首选项->设置(或Windows中的Ctrl +)。 搜索编辑器:默认格式化器 选择您的默认格式化程序为pretty - Code formatter;
见下图;
2 -保存格式
打开文件->首选项->设置(或Windows中的Ctrl +)。 搜索编辑器:保存格式 单击Format On Save下的复选框;
见下图;
在Windows上:
我们可以使用以下命令打开下面的文件:
Start > Run
文件路径:
%AppData%\Code\User\settings.json
改变 来自:
"[javascript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
},
To:
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
注意:
如果上述内容不存在,请添加而不是更改。 您应该已经安装了“更漂亮的代码格式化器”,以查看上述更改的效果- https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode
这就是我的工作(我的默认格式化器已经设置为更漂亮)
将默认格式化程序更改为default 重启vscode 将默认格式化程序更改为pretty。
1 .使用其他扩展更漂亮的是不为我工作,我只是使用其他VSCODE扩展名为pretiernow我认为这将有助于,为我做的。在这里签出扩展
2 .从prettier的最新更新中,如果你想坚持使用prettier,你需要在项目的根目录中添加.prettierrc文件。 .prettierrc的一个例子是-
{
"tabWidth": 4,
"singleQuote": true,
"semi": false
}