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

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

我的.prettierrc设置:

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

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


当前回答

我需要做的唯一一件事就是用简单的更新包

npm install

我试了这里所有的东西,还是不行。就好像它不存在一样。pretty也作为依赖项添加到项目中。原来是其他人添加或更新了任何软件包,导致我的美容器停止工作。

希望能让别人免去我的头疼。

其他回答

在我的例子中,我使用一个不存在的配置文件(见下面的屏幕截图)配置得更漂亮。这很难找到,因为没有任何错误消息,但漂亮的只是没有工作。也许这也能帮助到别人。

在某些情况下,prettier是作为依赖项提供的,您可能需要在prettier vscode使用以下命令之一识别它之前安装它,这取决于您使用的包管理器 NPM I或纱线

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

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

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

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