禁用 Prettier 在 VS Code 中格式化 HTML 文件中的内联 JS

Disable Prettier from formatting inline JS in HTML files in VS Code

我正在 运行使用 eslint-config-prettiereslint-plugin-prettier 包通过 ESLint 更漂亮。我也将 Prettier 作为开发依赖项用于非 JS 文件。我将这两个扩展与 VS Code 一起使用,以在保存时自动验证和格式化我的代码:Prettier - Code formatter and ESLint.

我在 HTML 文件中遇到内联 JS 问题。看起来好像通过 ESLint 的 Prettier 运行 不是 运行,或者被常规 Prettier 扩展否决了,即使在我的配置文件中我已经明确设置了选项 html.format.contentUnformatted"pre,code,textarea,script" 以防止使用默认格式化程序格式化该内容。我希望它忽略 script 标签中的内容,因为 ESLint 应该在那里处理格式。

我的相关设置settings.json

{
  "javascript.validate.enable": false,  // turns off default VS Code validation, I'm using ESLint's
  "javascript.format.enable": false,    // ^ see above
  "editor.formatOnSave": true,          // Turn on formatting for all files except JS/JSX
  "[javascript]": {
    "editor.formatOnSave": false
  },
  "[javascriptreact]": {
    "editor.formatOnSave": false
  },
  "eslint.alwaysShowStatus": true,
  "editor.codeActionsOnSave": {
    "source.fixAll": true // Let ESLint fix all fixable errors on save
  },
  "eslint.run": "onSave", // Run ESLint on save
  // Turn off Prettier for JS since we are doing it through Eslint already
  "prettier.disableLanguages": ["javascript", "javascriptreact"],
  "html.validate.scripts": false, // turn off default VSCode JS validation in HTML files
  "editor.defaultFormatter": "esbenp.prettier-vscode", // Use Prettier formatter
  "html.format.contentUnformatted": "pre,code,textarea,script" // Don't format content within these tags
}

知道出了什么问题吗?我也乐于接受其他构建事物的方法的建议。感谢您的帮助!

您可以使用 Prettier 的 embeddedLanguageFormatting 选项来实现您想要的。参见 https://prettier.io/docs/en/options.html#embedded-language-formatting

至于html.format.*VS Code设置,是VS Code内置格式化程序的设置,与Prettier无关