在我安装并启用了ESlint和Prettier的Nuxt应用程序中,我切换到Visual Studio Code。

当我打开一个.vue文件并按CMD+ Shift + P并选择格式化文档时,我的文件根本没有被格式化。

我的.prettierrc设置:

{
  "tabWidth": 2,
  "semi": false,
  "singleQuote": true
}

我有这么多源代码行,所以我不能手动格式化它们。我做错了什么?


当前回答

我尝试了这篇文章中的每一个解决方案,我才意识到我唯一的问题是我的Visual Studio颜色主题。这么简单!

之前:

后:

其他回答

在VSCode中启用“保存格式”:设置>>用户>>文本编辑器>>格式化对我有用!

更漂亮地回滚到1.7.3并修复了它

尽管有这些设置,你仍然会遇到问题。在这种情况下,正如之前的回答中所指出的,那么在VSCode的底部状态栏中检查更漂亮的通知将是一个好点。

当单击该状态时,输出面板应该在HTML文件中报告该问题。对我来说,问题是我在p标签里面有一个div,我认为更漂亮的/VSCode惯例是反对的。当我删除它(并结合上面的所有设置,即默认格式化器和保存时的格式)时,我工作得更好了。

.prettierrc不是必需的,除非你想覆盖VSCode设置

如何通过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服务器或甚至开发人员:重新加载窗口 如果你需要帮助,欢迎留言或联系我

在. pretierrc中检查requirePragma,它说你需要为要格式化的文件添加一个顶级注释

去掉这个规则,它就会起作用