簡體   English   中英

VSCode Prettier 不格式化 PHP

[英]VSCode Prettier not formatting PHP

所以我用 Prettier 設置了 vscode,但它不會 format.php 文件。 .html 文件在 Prettier 中運行良好。 所以當我有一個帶有 HTML 代碼的 a.php 時,它的格式會有所不同,因為我使用 Beautify 作為最后一個選項。

如何讓 Prettier 自動格式化 .php 文件和 .php 中的 html 代碼與 .html 文件相同?

設置.json

{
  "sync.autoDownload": true,
  "sync.autoUpload": true,
  "sync.forceDownload": true,
  "sync.forceUpload": true,
  "workbench.iconTheme": "vscode-icons",
  "sync.gist": "715bf022af486e449cae9313183b9a56",
  "sync.quietSync": true,
  "typescript.updateImportsOnFileMove.enabled": "always",
  "window.zoomLevel": 0,
  "vetur.format.defaultFormatter.js": "vscode-typescript",
  "vetur.format.defaultFormatter.ts": "vscode-typescript",
  "eslint.codeActionsOnSave.mode": "all",
  "workbench.colorTheme": "Atom One Dark",
  "beautify.language": {
    "html": ["php", "blade"]
  },
  // These are all my auto-save configs
  "editor.formatOnSave": true,
  // turn it off for JS and JSX, we will do this via eslint
  "[javascript]": {
    "editor.formatOnSave": false
  },
  "[javascriptreact]": {
    "editor.formatOnSave": false
  },
  // tell the ESLint plugin to run on save
  "editor.codeActionsOnSave": {
    "source.fixAll": true
  },
  // Optional BUT IMPORTANT: If you have the prettier extension enabled for other languages like CSS and HTML, turn it off for JS since we are doing it through Eslint already
  "prettier.disableLanguages": ["javascript", "javascriptreact"],
  "php.validate.executablePath": "C:\\xampp\\php\\php.exe"
}

.eslintrc.json

{
  "extends": ["airbnb", "prettier", "prettier/react"],
  "parser": "babel-eslint",
  "parserOptions": {
    "ecmaVersion": 2020,
    // Can I remove these now?
    "ecmaFeatures": {
      "impliedStrict": true,
      "classes": true
    }
  },
  "env": {
    "browser": true,
    "node": true,
    "jquery": true,
    "jest": true
  },
  "rules": {
    "no-debugger": 0,
    "no-alert": 0,
    "no-await-in-loop": 0,
    "no-return-assign": ["error", "except-parens"],
    "no-restricted-syntax": [
      2,
      "ForInStatement",
      "LabeledStatement",
      "WithStatement"
    ],
    "no-unused-vars": [
      1,
      {
        "ignoreSiblings": true,
        "argsIgnorePattern": "res|next|^err"
      }
    ],
    "prefer-const": [
      "error",
      {
        "destructuring": "all"
      }
    ],
    "arrow-body-style": [2, "as-needed"],
    "no-unused-expressions": [
      2,
      {
        "allowTaggedTemplates": true
      }
    ],
    "no-param-reassign": [
      2,
      {
        "props": false
      }
    ],
    "no-console": 0,
    "import/prefer-default-export": 0,
    "import": 0,
    "func-names": 0,
    "space-before-function-paren": 0,
    "comma-dangle": 0,
    "max-len": 0,
    "import/extensions": 0,
    "no-underscore-dangle": 0,
    "consistent-return": 0,
    "react/display-name": 1,
    "react/no-array-index-key": 0,
    "react/react-in-jsx-scope": 0,
    "react/prefer-stateless-function": 0,
    "react/forbid-prop-types": 0,
    "react/no-unescaped-entities": 0,
    "jsx-a11y/accessible-emoji": 0,
    "react/require-default-props": 0,
    "react/jsx-filename-extension": [
      1,
      {
        "extensions": [".js", ".jsx"]
      }
    ],
    "radix": 0,
    "no-shadow": [
      2,
      {
        "hoist": "all",
        "allow": ["resolve", "reject", "done", "next", "err", "error"]
      }
    ],
    "quotes": [
      2,
      "single",
      {
        "avoidEscape": true,
        "allowTemplateLiterals": true
      }
    ],
    "prettier/prettier": [
      "error",
      {
        "trailingComma": "es5",
        "singleQuote": true,
        "printWidth": 80
      }
    ],
    "jsx-a11y/href-no-hash": "off",
    "jsx-a11y/anchor-is-valid": [
      "warn",
      {
        "aspects": ["invalidHref"]
      }
    ],
    "react-hooks/rules-of-hooks": "error",
    "react-hooks/exhaustive-deps": "warn"
  },
  "plugins": ["html", "prettier", "react-hooks"]
}

Core prettier 不支持 PHP 1 ,因此 VSCode/VSCodium 的插件也不支持。 幸運的是,prettier 的設計者似乎已經想到了這一點,並實現了一個插件系統2

根據prettier-vscode 存儲庫,使用插件所需要做的就是將它添加到package.json 3

因此,對於 php 支持,您的 package.json 需要包含:

{
  "devDependencies": {
    "@prettier/plugin-php": "0.14.3",
    "prettier": "2.0.5"
  }
}

遺憾的是,不支持帶有 HTML 的php 文件: https://github.com/prettier/plugin-php/issues/845

在 VSC 終端中運行它,如果你已經安裝了更漂亮的

npm install --global prettier @prettier/plugin-php

我設法用 html 格式化 php 文件

我遇到了同樣的問題,並解決了它禁用我所有的擴展:碰巧這個擴展

用於 Visual Studio Code 的 Aura 組件

使我的 PHP 代碼顏色消失。 但是,此擴展是“官方”Salesforce 擴展包的一部分......

不要直接安裝此擴展。 而是安裝完整的 Salesforce 擴展包。

如果有幫助,請檢查您的擴展!!

是工作 !

更漂亮的 HTML、CSS 和 JavaScript 文件

改變你的 settings.json

  "editor.defaultFormatter": "esbenp.prettier-vscode",
  // add this code 
  "[php]": {
      "editor.defaultFormatter": "bmewburn.vscode-intelephense-client"
  }

這些設置使用 Intelephense 作為 PHP 文件的格式化程序,並使用 Prettier 作為所有其他文件的格式化程序。

現在我像其他人一樣使用 Shift + Alt + F 來格式化文件。

如果您不知道如何打開 setting.json 讓我們看看:我通常只需按 [ctrl] + [,] 進入設置,然后單擊出現在右上角的“打開設置 (JSON)”圖標標題欄 這是另一個選項... VS Code:如何打開 settings.json 文件? 如何打開 Visual Studio Code 的“settings.json”文件?

在這個確切的問題上遇到了麻煩。 我的罪魁禍首是 settings.json 文件中的錯誤配置(在 Mac 上,設置配置文件位於 ~/Library/Application Support/Code/User 中)

settings.json 配置文件需要正確的屬性“php.validate.executablePath”。 要設置為此屬性的值可能會因您使用的 PHP 版本而異。

要在 Mac 上獲取 PHP 可執行文件的正確路徑,請打開一個新終端 window(Cmd + 空格鍵和寫入終端)並鍵入which php 返回的值應與配置屬性值匹配。

settings.json 示例:

{
    // your other settings
    "php.validate.executablePath": "/Applications/MAMP/bin/php/php7.3.8/bin/php"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM