mikaela.github.io/n/prettier.md

151 lines
4.6 KiB
Markdown
Raw Normal View History

---
2024-05-18 18:58:57 +02:00
layout: mini
permalink: /n/prettier.html
sitemap: true
robots: noai
2024-05-30 08:05:52 +02:00
lang: en
title: Prettier packages I use
excerpt: I use them both directly, and within pre-commit
---
_{{ page.excerpt }}_
<!-- editorconfig-checker-disable -->
<!-- prettier-ignore-start -->
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
<em lang="fi">Automaattinen sisällysluettelo</em> / <em lang="en">Automatically generated Table of Contents</em>
- [The packages](#the-packages)
- [Installation](#installation)
- [Configuration](#configuration)
- [`.pre-commit-config.yaml`](#pre-commit-configyaml)
- [Offline](#offline)
- [Online](#online)
- [Further information](#further-information)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
<!-- prettier-ignore-end -->
<!-- editorconfig-checker-enable -->
## The packages
2024-01-08 11:47:02 +01:00
- [@prettier/plugin-ruby](https://www.npmjs.com/package/@prettier/plugin-ruby)
- [@prettier/plugin-xml](https://www.npmjs.com/package/@prettier/plugin-xml)
- [prettier](https://www.npmjs.com/package/prettier)
- [prettier-plugin-nginx](https://www.npmjs.com/package/prettier-plugin-nginx)
2024-06-07 05:40:38 +02:00
- [prettier-plugin-sh](https://www.npmjs.com/package/prettier-plugin-sh)
- [prettier-plugin-toml](https://www.npmjs.com/package/prettier-plugin-toml)
2024-01-09 07:15:10 +01:00
## Installation
2024-06-21 06:02:31 +02:00
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 it's not your project.
2024-06-19 07:19:44 +02:00
1. If they don't exist already
`echo "{}" > .prettierrc && touch .prettierignore`
2024-06-21 06:02:31 +02:00
1. `corepack pnpm exec prettier . --write` or
`corepack pnpm exec prettier . --check`
## Configuration
2024-06-19 07:19:44 +02:00
I do with `.editorconfig` what I can, but for example my template `.prettierrc`
looks like:
```json
{
"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" }
}
]
}
```
2024-06-19 07:19:44 +02:00
at the time of writing. It's directly from documentation excluding the plugin
names, but I will want it everywhere.
## `.pre-commit-config.yaml`
This is the file that controls [`pre-commit`]s behaviour.
### Offline
2024-06-19 07:19:44 +02:00
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, won't work in [`pre-commit` ci] and may have other issues
I am not thinking of as a not-coder myself.
[`pre-commit`]: https://pre-commit.com
[`pre-commit` ci]: https://pre-commit.ci
```yaml
ci:
skip: [pnpm-install-dev, prettier]
repos:
- repo: local
hooks:
- id: pnpm-install-dev
name: Install pnpm dev dependencies
2024-06-21 06:02:31 +02:00
entry: corepack pnpm install -D
language: system
always_run: true
2024-06-21 06:02:31 +02:00
#verbose: true
pass_filenames: false
- id: prettier
name: prettier
2024-06-21 06:02:31 +02:00
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
2024-01-09 07:15:10 +01:00
```yaml
repos:
#- repo: https://github.com/pre-commit/mirrors-prettier
- repo: https://github.com/rbubley/mirrors-prettier
rev: "v3.3.1"
2024-01-09 07:15:10 +01:00
hooks:
- id: prettier
# Better handled by pretty-format-json from pre-commit-hooks.
# Remember to have *.json in .prettierignore!
exclude_types: [json]
2024-01-09 07:15:10 +01:00
additional_dependencies: [
# https://aminda.eu/n/prettier
"prettier@3.3.1",
2024-01-09 07:15:10 +01:00
"prettier-plugin-nginx@1.0.3",
"@prettier/plugin-ruby@4.0.4",
"prettier-plugin-toml@2.0.1",
"@prettier/plugin-xml@3.4.1",
2024-01-09 07:15:10 +01:00
]
```
## Further information
- [prettier docs install](https://prettier.io/docs/en/install)
- [prettier parser options](https://github.com/prettier/prettier/blob/main/docs/options.md#parser)
2024-06-21 06:02:31 +02:00
- [corepack docs](https://nodejs.org/api/corepack.html)
- [corepack readme](https://github.com/nodejs/corepack/blob/main/README.md)