mikaela.github.io/n/prettier.md

4.6 KiB
Raw Blame History

{{ page.excerpt }}

Automaattinen sisällysluettelo / Automatically generated Table of Contents

The packages

Installation

  1. corepack pnpm install -D -E prettier@latest prettier-plugin-nginx@latest @prettier/plugin-ruby@latest prettier-plugin-toml@latest @prettier/plugin-xml@latest prettier-plugin-sh@latest or probably just corepack pnpm install -D if its not your project.
  2. If they dont exist already echo "{}" > .prettierrc && touch .prettierignore
  3. corepack pnpm exec prettier . --write or corepack pnpm exec prettier . --check

Configuration

I do with .editorconfig what I can, but for example my template .prettierrc looks like:

{
  "insertPragma": true,
  "proseWrap": "always",
  "singleAttributePerLine": true,
  "plugins": [
    "@prettier/plugin-ruby",
    "@prettier/plugin-xml",
    "prettier-plugin-nginx",
    "prettier-plugin-sh",
    "prettier-plugin-toml"
  ],
  "overrides": [
    { "files": ".prettierrc", "options": { "parser": "json" } },
    {
      "files": "conf/librewolf.overrides.cfg",
      "options": { "parser": "babel" }
    },
    {
      "files": "conf/autoconfig.js.online",
      "options": { "parser": "babel" }
    }
  ]
}

at the time of writing. Its directly from documentation excluding the plugin names, but I will want it everywhere.

.pre-commit-config.yaml

This is the file that controls pre-commits behaviour.

Offline

I accidentally wrote this while updating this page to reflect me using prettier outside of pre-commit too nowadays. This has the advantage that the same local environment gets reused and dependencies are managed centrally, but assumes everyone uses pnpm, wont work in pre-commit ci and may have other issues I am not thinking of as a not-coder myself.

ci:
  skip: [pnpm-install-dev, prettier]

repos:
  - repo: local
    hooks:
      - id: pnpm-install-dev
        name: Install pnpm dev dependencies
        entry: corepack pnpm install -D
        language: system
        always_run: true
        #verbose: true
        pass_filenames: false
      - id: prettier
        name: prettier
        entry: corepack pnpm exec prettier --cache --ignore-unknown --write
        language: system
        # Better handled by pretty-format-json from pre-commit-hooks.
        # Remember to have *.json in .prettierignore!
        exclude_types: [json]

Online

repos:
  #- repo: https://github.com/pre-commit/mirrors-prettier
  - repo: https://github.com/rbubley/mirrors-prettier
    rev: "v3.3.1"
    hooks:
      - id: prettier
        # Better handled by pretty-format-json from pre-commit-hooks.
        # Remember to have *.json in .prettierignore!
        exclude_types: [json]
        additional_dependencies: [
            # https://aminda.eu/n/prettier
            "prettier@3.3.1",
            "prettier-plugin-nginx@1.0.3",
            "@prettier/plugin-ruby@4.0.4",
            "prettier-plugin-toml@2.0.1",
            "@prettier/plugin-xml@3.4.1",
          ]

Further information