@alexlit/lint-kit 214.4.0 → 216.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -22
- package/eslint.config.js +31 -60
- package/lint-staged.config.js +2 -2
- package/linthtml.config.js +2 -2
- package/package.json +3 -2
- package/packages/config-eslint/README.md +181 -106
- package/packages/config-eslint/base.js +8 -3
- package/packages/config-eslint/index.d.ts +114 -0
- package/packages/config-eslint/index.js +82 -23
- package/packages/config-eslint/package.json +20 -17
- package/packages/config-eslint/plugins/de-morgan.js +11 -4
- package/packages/config-eslint/plugins/import-x.js +54 -37
- package/packages/config-eslint/plugins/javascript.js +100 -85
- package/packages/config-eslint/plugins/jsdoc.js +28 -17
- package/packages/config-eslint/plugins/json.js +35 -24
- package/packages/config-eslint/plugins/perfectionist.js +112 -95
- package/packages/config-eslint/plugins/pinia.js +21 -10
- package/packages/config-eslint/plugins/prettier.js +32 -10
- package/packages/config-eslint/plugins/regexp.js +20 -9
- package/packages/config-eslint/plugins/sonar.js +23 -12
- package/packages/config-eslint/plugins/stylistic.js +111 -100
- package/packages/config-eslint/plugins/tailwindcss.js +24 -10
- package/packages/config-eslint/plugins/tanstack-query.js +20 -9
- package/packages/config-eslint/plugins/typescript-type-checked.js +42 -33
- package/packages/config-eslint/plugins/typescript.js +27 -14
- package/packages/config-eslint/plugins/unicorn.js +77 -64
- package/packages/config-eslint/plugins/unocss.js +16 -5
- package/packages/config-eslint/plugins/vitest.js +24 -13
- package/packages/config-eslint/plugins/vue-accessibility.js +26 -13
- package/packages/config-eslint/plugins/vue-i18n.js +43 -31
- package/packages/config-eslint/plugins/vue.js +259 -242
- package/packages/config-eslint/plugins/zod.js +21 -10
- package/packages/config-eslint/rules/typescript.js +1 -1
- package/packages/config-hooks/README.md +119 -37
- package/packages/config-hooks/index.d.ts +19 -0
- package/packages/config-hooks/lint-staged.js +8 -6
- package/packages/config-hooks/package.json +3 -1
- package/packages/config-htmllint/README.md +50 -22
- package/packages/config-htmllint/index.d.ts +13 -0
- package/packages/config-htmllint/index.js +15 -7
- package/packages/config-htmllint/package.json +4 -2
- package/packages/config-markdownlint/README.md +40 -5
- package/packages/config-markdownlint/index.json +0 -2
- package/packages/config-markdownlint/package.json +1 -1
- package/packages/config-npmlint/README.md +48 -5
- package/packages/config-npmlint/package.json +3 -3
- package/packages/config-prettier/README.md +158 -23
- package/packages/config-prettier/index.d.ts +100 -0
- package/packages/config-prettier/index.js +63 -85
- package/packages/config-prettier/package.json +6 -4
- package/packages/config-prettier/plugins/jsdoc.js +17 -2
- package/packages/config-prettier/plugins/mdc.js +17 -2
- package/packages/config-prettier/plugins/packagejson.js +17 -4
- package/packages/config-prettier/plugins/php.js +17 -4
- package/packages/config-prettier/plugins/pug.js +17 -2
- package/packages/config-prettier/plugins/ruby.js +17 -11
- package/packages/config-prettier/plugins/sh.js +17 -4
- package/packages/config-prettier/plugins/solidity.js +17 -4
- package/packages/config-prettier/plugins/sort-json.js +17 -2
- package/packages/config-prettier/plugins/sql.js +17 -4
- package/packages/config-prettier/plugins/tailwindcss.js +17 -2
- package/packages/config-prettier/plugins/xml.js +17 -2
- package/packages/config-prettier/utils/merge-configs.js +18 -0
- package/packages/config-stylelint/README.md +182 -44
- package/packages/config-stylelint/index.d.ts +56 -0
- package/packages/config-stylelint/index.js +161 -165
- package/packages/config-stylelint/package.json +5 -2
- package/packages/config-stylelint/plugins/a11y.js +13 -6
- package/packages/config-stylelint/plugins/bem.js +14 -6
- package/packages/config-stylelint/plugins/color-format.js +14 -2
- package/packages/config-stylelint/plugins/declaration-block-no-ignored-properties.js +14 -5
- package/packages/config-stylelint/plugins/gamut.js +13 -5
- package/packages/config-stylelint/plugins/high-performance-animation.js +15 -6
- package/packages/config-stylelint/plugins/logical-css.js +13 -5
- package/packages/config-stylelint/plugins/media-use-custom-media.js +14 -5
- package/packages/config-stylelint/plugins/no-indistinguishable-colors.js +14 -5
- package/packages/config-stylelint/plugins/no-nested-media.js +13 -5
- package/packages/config-stylelint/plugins/no-unresolved-module.js +15 -6
- package/packages/config-stylelint/plugins/no-unsupported-browser-features.js +15 -6
- package/packages/config-stylelint/plugins/order.js +14 -6
- package/packages/config-stylelint/plugins/prettier.js +13 -5
- package/packages/config-stylelint/plugins/scss.js +13 -6
- package/packages/config-stylelint/plugins/selector-no-empty.js +14 -5
- package/packages/config-stylelint/plugins/use-nesting.js +13 -5
- package/packages/config-stylelint/plugins/vue.js +10 -2
- package/packages/config-stylelint/utils/merge-configs.js +20 -0
- package/prettier.config.js +15 -7
- package/scripts/semver.sh +3 -3
- package/stylelint.config.js +25 -11
- package/packages/config-eslint/_legacy/LICENSE +0 -20
- package/packages/config-eslint/_legacy/README.md +0 -48
- package/packages/config-eslint/_legacy/constants/allow-boolean-property-list.js +0 -38
- package/packages/config-eslint/_legacy/constants/boolean-prefixes.js +0 -11
- package/packages/config-eslint/_legacy/constants/english-verbs.js +0 -3368
- package/packages/config-eslint/_legacy/dictionaries/index.js +0 -467
- package/packages/config-eslint/_legacy/dictionaries/programming/bash.js +0 -25
- package/packages/config-eslint/_legacy/dictionaries/programming/django.js +0 -2345
- package/packages/config-eslint/_legacy/dictionaries/programming/elixir.js +0 -64
- package/packages/config-eslint/_legacy/dictionaries/programming/go.js +0 -7748
- package/packages/config-eslint/_legacy/dictionaries/programming/java.js +0 -33527
- package/packages/config-eslint/_legacy/dictionaries/programming/latex.js +0 -675
- package/packages/config-eslint/_legacy/dictionaries/programming/lua.js +0 -394
- package/packages/config-eslint/_legacy/dictionaries/programming/php.js +0 -9788
- package/packages/config-eslint/_legacy/dictionaries/programming/python.js +0 -367
- package/packages/config-eslint/_legacy/dictionaries/programming/ruby.js +0 -357
- package/packages/config-eslint/_legacy/dictionaries/programming/rust.js +0 -115
- package/packages/config-eslint/_legacy/dictionaries/programming/scala.js +0 -2755
- package/packages/config-eslint/_legacy/dictionaries/specialized/html-symbol-entities.js +0 -1118
- package/packages/config-eslint/_legacy/dictionaries/specialized/lorem-ipsum.js +0 -359
- package/packages/config-eslint/_legacy/index.js +0 -12
- package/packages/config-eslint/_legacy/legacy.js +0 -3
- package/packages/config-eslint/_legacy/package.json +0 -97
- package/packages/config-eslint/_legacy/plugins/array-func.js +0 -20
- package/packages/config-eslint/_legacy/plugins/compat.js +0 -7
- package/packages/config-eslint/_legacy/plugins/decorator-position.js +0 -15
- package/packages/config-eslint/_legacy/plugins/eslint-comments.js +0 -9
- package/packages/config-eslint/_legacy/plugins/etc.js +0 -13
- package/packages/config-eslint/_legacy/plugins/ext.js +0 -12
- package/packages/config-eslint/_legacy/plugins/filenames.js +0 -38
- package/packages/config-eslint/_legacy/plugins/import.js +0 -133
- package/packages/config-eslint/_legacy/plugins/jsdoc.js +0 -32
- package/packages/config-eslint/_legacy/plugins/jsx-a11y.js +0 -5
- package/packages/config-eslint/_legacy/plugins/lit-a11y.js +0 -5
- package/packages/config-eslint/_legacy/plugins/lit.js +0 -9
- package/packages/config-eslint/_legacy/plugins/more.js +0 -17
- package/packages/config-eslint/_legacy/plugins/no-await-in-promise.js +0 -5
- package/packages/config-eslint/_legacy/plugins/no-constructor-bind.js +0 -8
- package/packages/config-eslint/_legacy/plugins/no-explicit-type-exports.js +0 -7
- package/packages/config-eslint/_legacy/plugins/no-loops.js +0 -7
- package/packages/config-eslint/_legacy/plugins/no-secrets.js +0 -12
- package/packages/config-eslint/_legacy/plugins/no-use-extend-native.js +0 -5
- package/packages/config-eslint/_legacy/plugins/node.js +0 -5
- package/packages/config-eslint/_legacy/plugins/prettier.js +0 -24
- package/packages/config-eslint/_legacy/plugins/promise.js +0 -10
- package/packages/config-eslint/_legacy/plugins/regexp.js +0 -7
- package/packages/config-eslint/_legacy/plugins/security.js +0 -10
- package/packages/config-eslint/_legacy/plugins/simple-import-sort.js +0 -7
- package/packages/config-eslint/_legacy/plugins/sonar.js +0 -5
- package/packages/config-eslint/_legacy/plugins/sort-class-members.js +0 -298
- package/packages/config-eslint/_legacy/plugins/sort-destructure-keys.js +0 -10
- package/packages/config-eslint/_legacy/plugins/sort-keys-fix.js +0 -7
- package/packages/config-eslint/_legacy/plugins/spellcheck.js +0 -9
- package/packages/config-eslint/_legacy/plugins/sql.js +0 -26
- package/packages/config-eslint/_legacy/plugins/tanstack-query.js +0 -4
- package/packages/config-eslint/_legacy/plugins/testing-library.js +0 -9
- package/packages/config-eslint/_legacy/plugins/typescript-sort-keys.js +0 -5
- package/packages/config-eslint/_legacy/plugins/typescript.js +0 -157
- package/packages/config-eslint/_legacy/plugins/unicorn.js +0 -70
- package/packages/config-eslint/_legacy/plugins/unused-imports.js +0 -17
- package/packages/config-eslint/_legacy/plugins/vitest.js +0 -16
- package/packages/config-eslint/_legacy/plugins/vue-i18n.js +0 -34
- package/packages/config-eslint/_legacy/plugins/vue.js +0 -291
- package/packages/config-eslint/_legacy/plugins/vuejs-accessibility.js +0 -20
- package/packages/config-eslint/_legacy/plugins/wc.js +0 -5
- package/packages/config-eslint/_legacy/plugins/write-good-comments.js +0 -7
- package/packages/config-eslint/_legacy/utils/create-config.js +0 -377
- package/packages/config-eslint/_legacy/utils/extend-spell-checker.js +0 -23
|
@@ -1,37 +1,172 @@
|
|
|
1
1
|
# Prettier Configuration
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@alexlit/config-prettier)
|
|
4
|
+
[](https://npmx.dev/package/@alexlit/config-prettier)
|
|
5
|
+
[](LICENSE)
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
Готовая конфигурация [Prettier](https://prettier.io/) с плагинами для
|
|
8
|
+
форматирования языков и форматов, которых Prettier не поддерживает из коробки
|
|
9
|
+
(PHP, SQL, шаблоны, shell-скрипты и т.д.), а также расширений для сортировки
|
|
10
|
+
JSON и утилит Tailwind CSS. Вместо того чтобы подключать и настраивать каждый
|
|
11
|
+
плагин вручную, соберите конфигурацию из готовых модулей.
|
|
12
|
+
|
|
13
|
+
Плагины модульные: по умолчанию ничего не включено - вы сами перечисляете нужные
|
|
14
|
+
в `defineConfig`.
|
|
15
|
+
|
|
16
|
+
## Установка
|
|
17
|
+
|
|
18
|
+
```bash
|
|
6
19
|
npm i @alexlit/config-prettier -D
|
|
7
20
|
```
|
|
8
21
|
|
|
9
|
-
##
|
|
22
|
+
## Быстрый старт
|
|
23
|
+
|
|
24
|
+
```js
|
|
25
|
+
// prettier.config.js
|
|
26
|
+
import { defineConfig, plugins } from '@alexlit/config-prettier';
|
|
27
|
+
|
|
28
|
+
export default defineConfig([plugins.packageJson(), plugins.xml()]);
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Каждый вызов `plugins.*()` - отдельный плагин. Добавьте только то, что нужно
|
|
32
|
+
проекту; полный список - в разделе [Плагины](#плагины).
|
|
33
|
+
|
|
34
|
+
Больше плагинов - просто допишите их в массив:
|
|
35
|
+
|
|
36
|
+
```js
|
|
37
|
+
// prettier.config.js
|
|
38
|
+
import { defineConfig, plugins } from '@alexlit/config-prettier';
|
|
39
|
+
|
|
40
|
+
export default defineConfig([
|
|
41
|
+
plugins.jsdoc(),
|
|
42
|
+
plugins.mdc(),
|
|
43
|
+
plugins.packageJson(),
|
|
44
|
+
plugins.php(),
|
|
45
|
+
plugins.pug(),
|
|
46
|
+
plugins.ruby(),
|
|
47
|
+
plugins.sh(),
|
|
48
|
+
plugins.sortJson(),
|
|
49
|
+
plugins.solidity(),
|
|
50
|
+
plugins.sql(),
|
|
51
|
+
plugins.tailwindcss(),
|
|
52
|
+
plugins.xml(),
|
|
53
|
+
]);
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Настройка
|
|
57
|
+
|
|
58
|
+
### Настройки конкретного плагина
|
|
59
|
+
|
|
60
|
+
Чтобы переопределить настройки одного плагина, передайте объект в его вызов:
|
|
61
|
+
|
|
62
|
+
```js
|
|
63
|
+
// prettier.config.js
|
|
64
|
+
import { defineConfig, plugins } from '@alexlit/config-prettier';
|
|
65
|
+
|
|
66
|
+
export default defineConfig([
|
|
67
|
+
plugins.sortJson({ jsonRecursiveSort: false }),
|
|
68
|
+
plugins.tailwindcss({ tailwindFunctions: ['cn', 'cva'] }),
|
|
69
|
+
]);
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Скалярные опции заменяют значения плагина, а `plugins` и `overrides` дополняют
|
|
73
|
+
дефолтные списки. Подробнее - в разделе
|
|
74
|
+
[Приоритет настроек](#приоритет-настроек).
|
|
75
|
+
|
|
76
|
+
### Общие настройки Prettier
|
|
77
|
+
|
|
78
|
+
Второй аргумент `defineConfig` - общие опции Prettier. Он перебивает настройки
|
|
79
|
+
всех плагинов:
|
|
80
|
+
|
|
81
|
+
```js
|
|
82
|
+
// prettier.config.js
|
|
83
|
+
import { defineConfig, plugins } from '@alexlit/config-prettier';
|
|
84
|
+
|
|
85
|
+
export default defineConfig([plugins.php()], {
|
|
86
|
+
printWidth: 100,
|
|
87
|
+
singleQuote: false,
|
|
88
|
+
});
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Приоритет настроек
|
|
92
|
+
|
|
93
|
+
Настройки применяются в таком порядке:
|
|
94
|
+
|
|
95
|
+
1. Базовые опции пакета.
|
|
96
|
+
2. Конфиги плагинов в порядке массива `defineConfig`.
|
|
97
|
+
3. Второй аргумент `defineConfig`.
|
|
98
|
+
|
|
99
|
+
Скалярные опции перекрывают друг друга. Коллекции `plugins` и `overrides`
|
|
100
|
+
дополняются, а не заменяются. `plugins` дедуплицируются, поэтому один и тот же
|
|
101
|
+
плагин можно безопасно указать несколько раз.
|
|
102
|
+
|
|
103
|
+
Для `overrides` более позднее правило выигрывает: пользовательские overrides
|
|
104
|
+
идут после дефолтных и перекрывают их при совпадении `files`.
|
|
105
|
+
|
|
106
|
+
### Правила для отдельных файлов
|
|
107
|
+
|
|
108
|
+
`overrides` из фабрики добавляются к дефолтным. Например, чтобы форматировать
|
|
109
|
+
документацию как обычный Markdown, оставив MDC для остальных файлов:
|
|
110
|
+
|
|
111
|
+
```js
|
|
112
|
+
// prettier.config.js
|
|
113
|
+
import { defineConfig, plugins } from '@alexlit/config-prettier';
|
|
114
|
+
|
|
115
|
+
export default defineConfig([
|
|
116
|
+
plugins.mdc({
|
|
117
|
+
overrides: [{ files: ['docs/**/*.md'], options: { parser: 'markdown' } }],
|
|
118
|
+
}),
|
|
119
|
+
]);
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Пустой массив `overrides: []` не отключает дефолтные правила. Чтобы
|
|
123
|
+
переопределить поведение, добавьте свой override с теми же `files` - он будет
|
|
124
|
+
применён после дефолтного.
|
|
125
|
+
|
|
126
|
+
## Плагины
|
|
127
|
+
|
|
128
|
+
| Плагин | Что делает | Пакет |
|
|
129
|
+
| ----------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
130
|
+
| `plugins.jsdoc()` | Нормализует JSDoc-комментарии | [`prettier-plugin-jsdoc`](https://github.com/hosseinmd/prettier-plugin-jsdoc) |
|
|
131
|
+
| `plugins.mdc()` | Форматирует MDC-документы (Nuxt Content) | [`prettier-plugin-mdc`](https://github.com/so1ve/prettier-plugin-mdc) |
|
|
132
|
+
| `plugins.packageJson()` | Сортирует ключи в package.json | [`prettier-plugin-packagejson`](https://github.com/matzkoh/prettier-plugin-packagejson) |
|
|
133
|
+
| `plugins.php()` | Форматирует PHP-файлы | [`@prettier/plugin-php`](https://github.com/prettier/plugin-php) |
|
|
134
|
+
| `plugins.pug()` | Форматирует Pug-шаблоны с сортировкой атрибутов | [`@prettier/plugin-pug`](https://github.com/prettier/plugin-pug) |
|
|
135
|
+
| `plugins.ruby()` | Форматирует Ruby и ERB файлы | [`@prettier/plugin-ruby`](https://github.com/prettier/plugin-ruby) + [`prettier-plugin-eruby`](https://github.com/ippachi/prettier-plugin-eruby) |
|
|
136
|
+
| `plugins.sh()` | Форматирует shell-скрипты | [`prettier-plugin-sh`](https://github.com/astorije/prettier-plugin-sh) |
|
|
137
|
+
| `plugins.sortJson()` | Рекурсивно сортирует ключи JSON-объектов | [`prettier-plugin-sort-json`](https://github.com/Gudahtt/prettier-plugin-sort-json) |
|
|
138
|
+
| `plugins.solidity()` | Форматирует контракты Solidity | [`prettier-plugin-solidity`](https://github.com/prettier-solidity/prettier-plugin-solidity) |
|
|
139
|
+
| `plugins.sql()` | Форматирует SQL-запросы | [`prettier-plugin-sql`](https://github.com/un-ts/prettier/tree/master/packages/sql) |
|
|
140
|
+
| `plugins.tailwindcss()` | Сортирует утилитарные классы Tailwind CSS | [`prettier-plugin-tailwindcss`](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) |
|
|
141
|
+
| `plugins.xml()` | Форматирует XML-файлы | [`@prettier/plugin-xml`](https://github.com/prettier/plugin-xml) |
|
|
142
|
+
|
|
143
|
+
## Миграция с v24
|
|
144
|
+
|
|
145
|
+
v25 - breaking-релиз: `plugins` и `overrides`, переданные в фабрику, теперь
|
|
146
|
+
дополняют дефолтные значения, а не заменяют их.
|
|
10
147
|
|
|
11
|
-
|
|
12
|
-
|
|
148
|
+
| v24 | v25 |
|
|
149
|
+
| --------------------------------------------------------- | ------------------------------------------------ |
|
|
150
|
+
| `plugins.mdc({ plugins: ['custom'] })` заменял MDC-плагин | добавляет `custom` к `prettier-plugin-mdc` |
|
|
151
|
+
| `plugins.mdc({ overrides: [...] })` заменял MDC-override | добавляет overrides после дефолтного |
|
|
152
|
+
| `plugins.ruby({ overrides: [] })` отключал ERB-override | не отключает; добавьте override для `*.html.erb` |
|
|
13
153
|
|
|
14
|
-
|
|
15
|
-
// prettier.config.js
|
|
16
|
-
import { createConfig } from '@alexlit/config-prettier';
|
|
154
|
+
Скалярные опции работают как раньше: значения из `options` заменяют дефолтные.
|
|
17
155
|
|
|
18
|
-
|
|
19
|
-
```
|
|
156
|
+
## Миграция с v23
|
|
20
157
|
|
|
21
|
-
-
|
|
158
|
+
v24 - breaking-релиз: плагинов по умолчанию больше нет, всё подключается явно.
|
|
22
159
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
160
|
+
| v23 | v24 |
|
|
161
|
+
| ------------------------------ | --------------------------------------------- |
|
|
162
|
+
| `createConfig()` | перечислите нужные плагины явно |
|
|
163
|
+
| `createConfig({ php: true })` | `defineConfig([plugins.php()])` |
|
|
164
|
+
| `createConfig({ sql: false })` | просто не добавляйте `plugins.sql()` в список |
|
|
165
|
+
| `createConfig({}, options)` | `defineConfig([...], options)` |
|
|
26
166
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
ruby: true,
|
|
30
|
-
sql: false,
|
|
31
|
-
tailwindcss: false,
|
|
32
|
-
});
|
|
33
|
-
```
|
|
167
|
+
Плагины, включённые по умолчанию в v23: `jsdoc`, `mdc`, `packagejson`, `pug`,
|
|
168
|
+
`sh`, `solidity`, `sort-json`, `xml`.
|
|
34
169
|
|
|
35
|
-
##
|
|
170
|
+
## Известные проблемы
|
|
36
171
|
|
|
37
|
-
- **tailwindcss**
|
|
172
|
+
- **tailwindcss** ранее конфликтовал с **jsdoc**
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { Config } from 'prettier';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Options of
|
|
5
|
+
* [prettier-plugin-jsdoc](https://github.com/hosseinmd/prettier-plugin-jsdoc)
|
|
6
|
+
*/
|
|
7
|
+
export interface JsdocOptions {
|
|
8
|
+
jsdocCommentLineStrategy?: 'fallback' | 'multiLine' | 'singleLine';
|
|
9
|
+
jsdocSeparateReturnsFromParam?: boolean;
|
|
10
|
+
jsdocSeparateTagGroups?: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Plugin factories. Every plugin is connected explicitly: pass
|
|
15
|
+
* `plugins.<name>()` to `defineConfig`.
|
|
16
|
+
*
|
|
17
|
+
* Collection options (`overrides`, `plugins`) are appended to the defaults:
|
|
18
|
+
* `plugins` are deduplicated and later `overrides` win. Other options replace
|
|
19
|
+
* default values.
|
|
20
|
+
*/
|
|
21
|
+
export interface Plugins {
|
|
22
|
+
/** @see prettier-plugin-jsdoc */
|
|
23
|
+
jsdoc(options?: Config & JsdocOptions): Config;
|
|
24
|
+
/** @see prettier-plugin-mdc */
|
|
25
|
+
mdc(options?: Config): Config;
|
|
26
|
+
/** @see prettier-plugin-packagejson */
|
|
27
|
+
packageJson(options?: Config): Config;
|
|
28
|
+
/** @see plugin-php */
|
|
29
|
+
php(options?: Config): Config;
|
|
30
|
+
/** @see plugin-pug */
|
|
31
|
+
pug(options?: Config & PugOptions): Config;
|
|
32
|
+
/** @see plugin-ruby */
|
|
33
|
+
ruby(options?: Config): Config;
|
|
34
|
+
/** @see prettier-plugin-sh */
|
|
35
|
+
sh(options?: Config): Config;
|
|
36
|
+
/** @see prettier-plugin-solidity */
|
|
37
|
+
solidity(options?: Config): Config;
|
|
38
|
+
/** @see prettier-plugin-sort-json */
|
|
39
|
+
sortJson(options?: Config & SortJsonOptions): Config;
|
|
40
|
+
/** @see prettier-plugin-sql */
|
|
41
|
+
sql(options?: Config): Config;
|
|
42
|
+
/** @see prettier-plugin-tailwindcss */
|
|
43
|
+
tailwindcss(options?: Config & TailwindcssOptions): Config;
|
|
44
|
+
/** @see plugin-xml */
|
|
45
|
+
xml(options?: Config & XmlOptions): Config;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Options of [plugin-pug](https://github.com/prettier/plugin-pug) */
|
|
49
|
+
export interface PugOptions {
|
|
50
|
+
pugCommentPreserveSpaces?: string;
|
|
51
|
+
pugSingleQuote?: boolean;
|
|
52
|
+
pugSortAttributes?: 'asc' | 'desc' | 'natural' | false;
|
|
53
|
+
pugWrapAttributesThreshold?: number;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Options of
|
|
58
|
+
* [prettier-plugin-sort-json](https://github.com/Gudahtt/prettier-plugin-sort-json)
|
|
59
|
+
*/
|
|
60
|
+
export interface SortJsonOptions {
|
|
61
|
+
jsonRecursiveSort?: boolean;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Options of
|
|
66
|
+
* [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss)
|
|
67
|
+
*/
|
|
68
|
+
export interface TailwindcssOptions {
|
|
69
|
+
tailwindFunctions?: string[];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Options of [plugin-xml](https://github.com/prettier/plugin-xml) */
|
|
73
|
+
export interface XmlOptions {
|
|
74
|
+
xmlWhitespaceSensitivity?: 'ignore' | 'preserve' | 'strict';
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export declare const plugins: Plugins;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Create prettier config
|
|
81
|
+
*
|
|
82
|
+
* There are no default plugins - connect the required ones explicitly:
|
|
83
|
+
*
|
|
84
|
+
* ```js
|
|
85
|
+
* defineConfig([plugins.php(), plugins.tailwindcss()], {
|
|
86
|
+
* printWidth: 100,
|
|
87
|
+
* });
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
90
|
+
* Base options are replaced by plugin options and `options`. Collection options
|
|
91
|
+
* (`overrides`, `plugins`) are appended: `plugins` are deduplicated and later
|
|
92
|
+
* `overrides` win.
|
|
93
|
+
*
|
|
94
|
+
* @param pluginConfigs Plugin configs, e.g. `[plugins.php()]`
|
|
95
|
+
* @param options Base prettier options (highest precedence)
|
|
96
|
+
*/
|
|
97
|
+
export declare function defineConfig(
|
|
98
|
+
pluginConfigs?: Config[],
|
|
99
|
+
options?: Config,
|
|
100
|
+
): Config;
|
|
@@ -1,96 +1,74 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsdoc } from './plugins/jsdoc.js';
|
|
2
|
+
import { mdc } from './plugins/mdc.js';
|
|
3
|
+
import { packageJson } from './plugins/packagejson.js';
|
|
4
|
+
import { php } from './plugins/php.js';
|
|
5
|
+
import { pug } from './plugins/pug.js';
|
|
6
|
+
import { ruby } from './plugins/ruby.js';
|
|
7
|
+
import { sh } from './plugins/sh.js';
|
|
8
|
+
import { solidity } from './plugins/solidity.js';
|
|
9
|
+
import { sortJson } from './plugins/sort-json.js';
|
|
10
|
+
import { sql } from './plugins/sql.js';
|
|
11
|
+
import { tailwindcss } from './plugins/tailwindcss.js';
|
|
12
|
+
import { xml } from './plugins/xml.js';
|
|
13
|
+
import { mergeConfigs } from './utils/merge-configs.js';
|
|
2
14
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
'
|
|
6
|
-
'
|
|
7
|
-
'
|
|
8
|
-
'
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
15
|
+
const DEFAULTS = {
|
|
16
|
+
bracketSameLine: false,
|
|
17
|
+
endOfLine: 'lf',
|
|
18
|
+
objectWrap: 'collapse',
|
|
19
|
+
proseWrap: 'always',
|
|
20
|
+
quoteProps: 'consistent',
|
|
21
|
+
singleAttributePerLine: true,
|
|
22
|
+
singleQuote: true,
|
|
23
|
+
tabWidth: 2,
|
|
24
|
+
trailingComma: 'all',
|
|
25
|
+
vueIndentScriptAndStyle: true,
|
|
12
26
|
};
|
|
13
27
|
|
|
14
|
-
const OPTIONAL_PLUGINS = {
|
|
15
|
-
php: false,
|
|
16
|
-
ruby: false,
|
|
17
|
-
sql: false,
|
|
18
|
-
tailwindcss: false,
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
const PLUGINS = { ...DEFAULT_PLUGINS, ...OPTIONAL_PLUGINS };
|
|
22
|
-
|
|
23
28
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* @param {PLUGINS} plugins Enabled/disabled plugins list
|
|
27
|
-
*
|
|
28
|
-
* @returns {import('prettier').Config} Prettier configuration
|
|
29
|
+
* Фабрики плагинов. Каждый плагин подключается явно: передайте
|
|
30
|
+
* `plugins.<name>()` в `defineConfig`
|
|
29
31
|
*/
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
let pluginsConfig = { overrides: [], plugins: [] };
|
|
46
|
-
|
|
47
|
-
configs.forEach((config) => {
|
|
48
|
-
if (config.plugins?.length > 0) {
|
|
49
|
-
pluginsConfig.plugins.push(...config.plugins);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (config.overrides?.length > 0) {
|
|
53
|
-
pluginsConfig.overrides.push(...config.overrides);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
pluginsConfig = {
|
|
57
|
-
...pluginsConfig,
|
|
58
|
-
...omit(config, ['plugins', 'overrides']),
|
|
59
|
-
};
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
return pluginsConfig;
|
|
32
|
+
export const plugins = {
|
|
33
|
+
jsdoc,
|
|
34
|
+
mdc,
|
|
35
|
+
packageJson,
|
|
36
|
+
php,
|
|
37
|
+
pug,
|
|
38
|
+
ruby,
|
|
39
|
+
sh,
|
|
40
|
+
solidity,
|
|
41
|
+
sortJson,
|
|
42
|
+
sql,
|
|
43
|
+
tailwindcss,
|
|
44
|
+
xml,
|
|
63
45
|
};
|
|
64
46
|
|
|
65
47
|
/**
|
|
66
|
-
*
|
|
48
|
+
* Создать конфигурацию Prettier
|
|
49
|
+
*
|
|
50
|
+
* Плагинов по умолчанию нет - подключайте нужные явно:
|
|
51
|
+
*
|
|
52
|
+
* ```js
|
|
53
|
+
* defineConfig(
|
|
54
|
+
* [
|
|
55
|
+
* plugins.php(),
|
|
56
|
+
* plugins.tailwindcss({ tailwindFunctions: ['cn', 'tw'] }),
|
|
57
|
+
* ],
|
|
58
|
+
* { printWidth: 100 },
|
|
59
|
+
* );
|
|
60
|
+
* ```
|
|
67
61
|
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
62
|
+
* Базовые опции заменяются опциями плагинов и `options`. Коллекции `overrides`
|
|
63
|
+
* и `plugins` дополняются, `plugins` дедуплицируются, более поздние `overrides`
|
|
64
|
+
* выигрывают.
|
|
70
65
|
*
|
|
71
|
-
* @
|
|
66
|
+
* @param {import('prettier').Config[]} pluginConfigs Конфиги плагинов, напр.
|
|
67
|
+
* `[plugins.php()]`
|
|
68
|
+
* @param {import('prettier').Config} options Базовые опции Prettier (наивысший
|
|
69
|
+
* приоритет)
|
|
70
|
+
*
|
|
71
|
+
* @returns {import('prettier').Config} Конфигурация Prettier
|
|
72
72
|
*/
|
|
73
|
-
export const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
return {
|
|
77
|
-
bracketSameLine: false,
|
|
78
|
-
endOfLine: 'lf',
|
|
79
|
-
objectWrap: 'collapse',
|
|
80
|
-
overrides: [
|
|
81
|
-
...(pluginsConfig.overrides ?? []),
|
|
82
|
-
...(options.overrides ?? []),
|
|
83
|
-
],
|
|
84
|
-
plugins: [...(pluginsConfig.plugins ?? []), ...(options.plugins ?? [])],
|
|
85
|
-
proseWrap: 'always',
|
|
86
|
-
quoteProps: 'consistent',
|
|
87
|
-
singleAttributePerLine: true,
|
|
88
|
-
singleQuote: true,
|
|
89
|
-
tabWidth: 2,
|
|
90
|
-
trailingComma: 'all',
|
|
91
|
-
vueIndentScriptAndStyle: true,
|
|
92
|
-
|
|
93
|
-
...omit(pluginsConfig, ['plugins']),
|
|
94
|
-
...omit(options, ['plugins']),
|
|
95
|
-
};
|
|
96
|
-
};
|
|
73
|
+
export const defineConfig = (pluginConfigs = [], options = {}) =>
|
|
74
|
+
mergeConfigs(DEFAULTS, ...pluginConfigs, options);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alexlit/config-prettier",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "25.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "prettier config",
|
|
6
6
|
"keywords": [
|
|
@@ -23,10 +23,13 @@
|
|
|
23
23
|
],
|
|
24
24
|
"type": "module",
|
|
25
25
|
"main": "index.js",
|
|
26
|
+
"types": "index.d.ts",
|
|
26
27
|
"files": [
|
|
27
28
|
"README.md",
|
|
29
|
+
"index.d.ts",
|
|
28
30
|
"index.js",
|
|
29
|
-
"plugins"
|
|
31
|
+
"plugins",
|
|
32
|
+
"utils"
|
|
30
33
|
],
|
|
31
34
|
"scripts": {
|
|
32
35
|
"ou": "../../scripts/ou.sh",
|
|
@@ -48,8 +51,7 @@
|
|
|
48
51
|
"prettier-plugin-solidity": "^2.4.1",
|
|
49
52
|
"prettier-plugin-sort-json": "^4.2.0",
|
|
50
53
|
"prettier-plugin-sql": "^0.20.0",
|
|
51
|
-
"prettier-plugin-tailwindcss": "^0.8.1"
|
|
52
|
-
"radash": "^12.1.1"
|
|
54
|
+
"prettier-plugin-tailwindcss": "^0.8.1"
|
|
53
55
|
},
|
|
54
56
|
"publishConfig": {
|
|
55
57
|
"access": "public",
|
|
@@ -1,7 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { mergeConfigs } from '../utils/merge-configs.js';
|
|
2
|
+
|
|
3
|
+
const DEFAULTS = {
|
|
3
4
|
jsdocCommentLineStrategy: 'singleLine',
|
|
4
5
|
jsdocSeparateReturnsFromParam: true,
|
|
5
6
|
jsdocSeparateTagGroups: true,
|
|
6
7
|
plugins: ['prettier-plugin-jsdoc'],
|
|
7
8
|
};
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Нормализует JSDoc-комментарии
|
|
12
|
+
*
|
|
13
|
+
* @param {Partial<import('prettier').Config>} [options] - Опции, накладываемые
|
|
14
|
+
* поверх значений по умолчанию. Коллекции (`overrides`, `plugins`)
|
|
15
|
+
* дополняются, `plugins` дедуплицируются, более поздние `overrides`
|
|
16
|
+
* выигрывают, остальные поля заменяются
|
|
17
|
+
*
|
|
18
|
+
* @returns {import('prettier').Config}
|
|
19
|
+
*
|
|
20
|
+
* @see [prettier-plugin-jsdoc](https://github.com/hosseinmd/prettier-plugin-jsdoc)
|
|
21
|
+
*/
|
|
22
|
+
export const jsdoc = (options = {}) => mergeConfigs(DEFAULTS, options);
|
|
@@ -1,5 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { mergeConfigs } from '../utils/merge-configs.js';
|
|
2
|
+
|
|
3
|
+
const DEFAULTS = {
|
|
3
4
|
overrides: [{ files: ['*.md'], options: { parser: 'mdc' } }],
|
|
4
5
|
plugins: ['prettier-plugin-mdc'],
|
|
5
6
|
};
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Форматирует MDC-документы (Nuxt Content)
|
|
10
|
+
*
|
|
11
|
+
* @param {Partial<import('prettier').Config>} [options] - Опции, накладываемые
|
|
12
|
+
* поверх значений по умолчанию. Коллекции (`overrides`, `plugins`)
|
|
13
|
+
* дополняются, `plugins` дедуплицируются, более поздние `overrides`
|
|
14
|
+
* выигрывают, остальные поля заменяются
|
|
15
|
+
*
|
|
16
|
+
* @returns {import('prettier').Config}
|
|
17
|
+
*
|
|
18
|
+
* @see [prettier-plugin-mdc](https://github.com/so1ve/prettier-plugin-mdc)
|
|
19
|
+
*/
|
|
20
|
+
export const mdc = (options = {}) => mergeConfigs(DEFAULTS, options);
|
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { mergeConfigs } from '../utils/merge-configs.js';
|
|
2
|
+
|
|
3
|
+
const DEFAULTS = { plugins: ['prettier-plugin-packagejson'] };
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Сортирует ключи в package.json
|
|
7
|
+
*
|
|
8
|
+
* @param {Partial<import('prettier').Config>} [options] - Опции, накладываемые
|
|
9
|
+
* поверх значений по умолчанию. Коллекции (`overrides`, `plugins`)
|
|
10
|
+
* дополняются, `plugins` дедуплицируются, более поздние `overrides`
|
|
11
|
+
* выигрывают, остальные поля заменяются
|
|
12
|
+
*
|
|
13
|
+
* @returns {import('prettier').Config}
|
|
14
|
+
*
|
|
15
|
+
* @see [prettier-plugin-packagejson](https://github.com/matzkoh/prettier-plugin-packagejson)
|
|
16
|
+
*/
|
|
17
|
+
export const packageJson = (options = {}) => mergeConfigs(DEFAULTS, options);
|
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { mergeConfigs } from '../utils/merge-configs.js';
|
|
2
|
+
|
|
3
|
+
const DEFAULTS = { plugins: ['@prettier/plugin-php'] };
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Форматирует PHP-файлы
|
|
7
|
+
*
|
|
8
|
+
* @param {Partial<import('prettier').Config>} [options] - Опции, накладываемые
|
|
9
|
+
* поверх значений по умолчанию. Коллекции (`overrides`, `plugins`)
|
|
10
|
+
* дополняются, `plugins` дедуплицируются, более поздние `overrides`
|
|
11
|
+
* выигрывают, остальные поля заменяются
|
|
12
|
+
*
|
|
13
|
+
* @returns {import('prettier').Config}
|
|
14
|
+
*
|
|
15
|
+
* @see [plugin-php](https://github.com/prettier/plugin-php)
|
|
16
|
+
*/
|
|
17
|
+
export const php = (options = {}) => mergeConfigs(DEFAULTS, options);
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { mergeConfigs } from '../utils/merge-configs.js';
|
|
2
|
+
|
|
3
|
+
const DEFAULTS = {
|
|
3
4
|
plugins: ['@prettier/plugin-pug'],
|
|
4
5
|
pugCommentPreserveSpaces: 'trim-all',
|
|
5
6
|
pugSingleQuote: false,
|
|
6
7
|
pugSortAttributes: 'asc',
|
|
7
8
|
pugWrapAttributesThreshold: 3,
|
|
8
9
|
};
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Форматирует Pug-шаблоны с сортировкой атрибутов и одинарными кавычками
|
|
13
|
+
*
|
|
14
|
+
* @param {Partial<import('prettier').Config>} [options] - Опции, накладываемые
|
|
15
|
+
* поверх значений по умолчанию. Коллекции (`overrides`, `plugins`)
|
|
16
|
+
* дополняются, `plugins` дедуплицируются, более поздние `overrides`
|
|
17
|
+
* выигрывают, остальные поля заменяются
|
|
18
|
+
*
|
|
19
|
+
* @returns {import('prettier').Config}
|
|
20
|
+
*
|
|
21
|
+
* @see [plugin-pug](https://github.com/prettier/plugin-pug)
|
|
22
|
+
*/
|
|
23
|
+
export const pug = (options = {}) => mergeConfigs(DEFAULTS, options);
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
+
import { mergeConfigs } from '../utils/merge-configs.js';
|
|
2
|
+
|
|
3
|
+
const DEFAULTS = {
|
|
4
|
+
overrides: [{ files: '*.html.erb', options: { parser: 'eruby-parse' } }],
|
|
5
|
+
plugins: ['@prettier/plugin-ruby', 'prettier-plugin-eruby'],
|
|
6
|
+
};
|
|
7
|
+
|
|
1
8
|
/**
|
|
9
|
+
* Форматирует Ruby и ERB файлы
|
|
10
|
+
*
|
|
11
|
+
* @param {Partial<import('prettier').Config>} [options] - Опции, накладываемые
|
|
12
|
+
* поверх значений по умолчанию. Коллекции (`overrides`, `plugins`)
|
|
13
|
+
* дополняются, `plugins` дедуплицируются, более поздние `overrides`
|
|
14
|
+
* выигрывают, остальные поля заменяются
|
|
15
|
+
*
|
|
16
|
+
* @returns {import('prettier').Config}
|
|
17
|
+
*
|
|
2
18
|
* @see [plugin-ruby](https://github.com/prettier/plugin-ruby)
|
|
3
19
|
* @see [prettier-plugin-eruby](https://github.com/ippachi/prettier-plugin-eruby)
|
|
4
20
|
*/
|
|
5
|
-
export
|
|
6
|
-
overrides: [
|
|
7
|
-
{
|
|
8
|
-
files: '*.html.erb',
|
|
9
|
-
options: {
|
|
10
|
-
parser: 'eruby-parse',
|
|
11
|
-
},
|
|
12
|
-
},
|
|
13
|
-
],
|
|
14
|
-
plugins: ['@prettier/plugin-ruby', 'prettier-plugin-eruby'],
|
|
15
|
-
};
|
|
21
|
+
export const ruby = (options = {}) => mergeConfigs(DEFAULTS, options);
|
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { mergeConfigs } from '../utils/merge-configs.js';
|
|
2
|
+
|
|
3
|
+
const DEFAULTS = { plugins: ['prettier-plugin-sh'] };
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Форматирует shell-скрипты
|
|
7
|
+
*
|
|
8
|
+
* @param {Partial<import('prettier').Config>} [options] - Опции, накладываемые
|
|
9
|
+
* поверх значений по умолчанию. Коллекции (`overrides`, `plugins`)
|
|
10
|
+
* дополняются, `plugins` дедуплицируются, более поздние `overrides`
|
|
11
|
+
* выигрывают, остальные поля заменяются
|
|
12
|
+
*
|
|
13
|
+
* @returns {import('prettier').Config}
|
|
14
|
+
*
|
|
15
|
+
* @see [prettier-plugin-sh](https://github.com/astorije/prettier-plugin-sh)
|
|
16
|
+
*/
|
|
17
|
+
export const sh = (options = {}) => mergeConfigs(DEFAULTS, options);
|