跳至正文
Wener Notes

prettier

约 2 分钟阅读
bash
# 直接格式化
npx prettier --write src/**/*.{ts,tsx,css,html}
# 格式检查
npx prettier --check src/**/*.{ts,tsx,css,html}

# 项目依赖
npm add -D prettier

# 当前配置文件
prettier --find-config-path src/types.d.ts

prettier --write src --cache --cache-strategy metadata


prettier --support-info
prettier --file-info a.js

pnpm dlx --packages={prettier-plugin-sh,prettier} prettier  --write ./*.sh
依赖包

prettier.config.js

JavaScript
// https://prettier.io/docs/en/options.html
module.exports = {
  printWidth: 120,
  singleQuote: true,
  trailingComma: 'all',
};
package.json
{
  "prettier": {
    "bracketSameLine": false,
    "importOrder": ["^[^.]", "^[.][.]", "^[.][/]"],
    "importOrderSeparation": false,
    "trailingComma": "all",
    "printWidth": 120,
    "singleQuote": true,
    "overrides": [
      {
        "files": ["*.html", "*.css"],
        "options": {
          "singleQuote": false
        }
      }
    ]
  },
  "lint-staged": {
    "**/*": "prettier --write --ignore-unknown"
  }
}
配合 lint-staged
npm install --save-dev husky lint-staged
npx husky install
npm set-script prepare "husky install"
npx husky add .husky/pre-commit "npx lint-staged"
依赖包

排序 import

bash
npm add -D @trivago/prettier-plugin-sort-imports
JavaScript
module.exports = {
  printWidth: 80,
  tabWidth: 4,
  trailingComma: 'all',
  singleQuote: true,
  jsxBracketSameLine: true,
  semi: true,
  importOrder: ['^@core/(.*)$', '^@server/(.*)$', '^@ui/(.*)$', '^[./]'],
};

plugins

  • prettier-plugin-sql
  • prettier-plugin-sh
  • prettier-plugin-pkg
    • package.json

ignore

  • .prettierignore
  • prettier-ignore 注释
JavaScript
// prettier-ignore
text
<div>
  {/* prettier-ignore */}
  <span     ugly  format=''   />
</div>
html
<!-- prettier-ignore -->

SyntaxError: This experimental syntax requires enabling one of the following parser plugin(s): "decorators", "decorators-legacy".

text
importOrderParserPlugins: ['typescript', 'decorators-legacy'],

.prettierrc.json

json
{
  "bracketSameLine": false,
  "trailingComma": "all",
  "printWidth": 120,
  "singleQuote": true,
  "jsxSingleQuote": true,
  "overrides": [
    {
      "files": ["*.html", "*.css"],
      "options": {
        "singleQuote": false
      }
    },
    {
      "files": ["*.sql"],
      "options": {
        "tabWidth": 4
      }
    }
  ],
  "importOrder": [
    "^node:",
    "<BUILTIN_MODULES>",
    "[.](polyfill|shim)$",
    "reflect-metadata",
    "^react(-dom)?",
    "<THIRD_PARTY_MODULES>",
    "^@/",
    "^[.][.]",
    "^[.][/]"
  ],
  "importOrderParserPlugins": ["typescript", "jsx", "decorators-legacy", "importAttributes"],
  "plugins": ["prettier-plugin-pkg", "@ianvs/prettier-plugin-sort-imports", "prettier-plugin-tailwindcss"],
  "tailwindFunctions": ["clsx", "tw", "cn"],
  "tailwindConfig": "./tailwind.config.ts"
}

No parser could be inferred for file

bash
cat abc.css | prettier --stdin-filepath abc.css

关联信息

反向链接、本文链接的其他页面和外部资料。

反向链接

  • Web Dev FAQ
    笔记 · prettier

    | abbr. | stand for | · | iife | Immediately Invoked Function Expression | · 在开发时 assert 错误 · invariant · 早期来自 React, flux

参考资料

GitHub11 条
其他外链1 条
最近更新commit 7ae07ca编辑