@alexlit/lint-kit 214.3.0 → 215.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 +23 -56
- package/lint-staged.config.js +2 -2
- package/linthtml.config.js +2 -2
- package/package.json +3 -2
- package/packages/config-eslint/README.md +156 -106
- package/packages/config-eslint/base.js +5 -3
- package/packages/config-eslint/index.d.ts +112 -0
- package/packages/config-eslint/index.js +79 -23
- package/packages/config-eslint/package.json +21 -18
- package/packages/config-eslint/plugins/de-morgan.js +9 -4
- package/packages/config-eslint/plugins/import-x.js +50 -37
- package/packages/config-eslint/plugins/javascript.js +96 -85
- package/packages/config-eslint/plugins/jsdoc.js +24 -17
- package/packages/config-eslint/plugins/json.js +31 -24
- package/packages/config-eslint/plugins/perfectionist.js +108 -95
- package/packages/config-eslint/plugins/pinia.js +17 -10
- package/packages/config-eslint/plugins/prettier.js +24 -10
- package/packages/config-eslint/plugins/regexp.js +16 -9
- package/packages/config-eslint/plugins/sonar.js +19 -12
- package/packages/config-eslint/plugins/stylistic.js +107 -100
- package/packages/config-eslint/plugins/tailwindcss.js +17 -6
- package/packages/config-eslint/plugins/tanstack-query.js +16 -9
- package/packages/config-eslint/plugins/typescript-type-checked.js +38 -33
- package/packages/config-eslint/plugins/typescript.js +23 -14
- package/packages/config-eslint/plugins/unicorn.js +73 -64
- package/packages/config-eslint/plugins/unocss.js +12 -5
- package/packages/config-eslint/plugins/vitest.js +20 -13
- package/packages/config-eslint/plugins/vue-accessibility.js +22 -13
- package/packages/config-eslint/plugins/vue-i18n.js +38 -31
- package/packages/config-eslint/plugins/vue.js +255 -242
- package/packages/config-eslint/plugins/zod.js +17 -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 +106 -23
- package/packages/config-prettier/index.d.ts +92 -0
- package/packages/config-prettier/index.js +60 -74
- package/packages/config-prettier/package.json +5 -4
- package/packages/config-prettier/plugins/jsdoc.js +12 -3
- package/packages/config-prettier/plugins/mdc.js +12 -3
- package/packages/config-prettier/plugins/packagejson.js +12 -3
- package/packages/config-prettier/plugins/php.js +12 -3
- package/packages/config-prettier/plugins/pug.js +12 -3
- package/packages/config-prettier/plugins/ruby.js +10 -10
- package/packages/config-prettier/plugins/sh.js +12 -3
- package/packages/config-prettier/plugins/solidity.js +12 -3
- package/packages/config-prettier/plugins/sort-json.js +12 -3
- package/packages/config-prettier/plugins/sql.js +12 -3
- package/packages/config-prettier/plugins/tailwindcss.js +12 -3
- package/packages/config-prettier/plugins/xml.js +12 -3
- package/packages/config-stylelint/README.md +131 -44
- package/packages/config-stylelint/index.d.ts +52 -0
- package/packages/config-stylelint/index.js +169 -165
- package/packages/config-stylelint/package.json +3 -1
- package/packages/config-stylelint/plugins/a11y.js +24 -11
- package/packages/config-stylelint/plugins/bem.js +10 -3
- package/packages/config-stylelint/plugins/color-format.js +14 -4
- package/packages/config-stylelint/plugins/declaration-block-no-ignored-properties.js +15 -4
- package/packages/config-stylelint/plugins/gamut.js +12 -4
- package/packages/config-stylelint/plugins/high-performance-animation.js +12 -3
- package/packages/config-stylelint/plugins/logical-css.js +10 -3
- package/packages/config-stylelint/plugins/media-use-custom-media.js +12 -4
- package/packages/config-stylelint/plugins/no-indistinguishable-colors.js +15 -4
- package/packages/config-stylelint/plugins/no-nested-media.js +12 -4
- package/packages/config-stylelint/plugins/no-unresolved-module.js +12 -3
- package/packages/config-stylelint/plugins/no-unsupported-browser-features.js +12 -3
- package/packages/config-stylelint/plugins/order.js +13 -3
- package/packages/config-stylelint/plugins/prettier.js +12 -4
- package/packages/config-stylelint/plugins/scss.js +13 -3
- package/packages/config-stylelint/plugins/selector-no-empty.js +12 -4
- package/packages/config-stylelint/plugins/use-nesting.js +15 -4
- package/packages/config-stylelint/plugins/vue.js +11 -2
- 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,120 @@
|
|
|
1
|
+
[](https://www.npmjs.com/package/@alexlit/config-prettier)
|
|
2
|
+
[](https://npmx.dev/package/@alexlit/config-prettier)
|
|
3
|
+
[](LICENSE)
|
|
4
|
+
|
|
1
5
|
# Prettier Configuration
|
|
2
6
|
|
|
3
|
-
|
|
7
|
+
Готовая конфигурация [Prettier](https://prettier.io/) с плагинами для
|
|
8
|
+
форматирования языков и форматов, которых Prettier не поддерживает из коробки
|
|
9
|
+
(PHP, SQL, шаблоны, shell-скрипты и т.д.), а также расширений для сортировки
|
|
10
|
+
JSON и утилит Tailwind CSS. Вместо того чтобы подключать и настраивать каждый
|
|
11
|
+
плагин вручную, соберите конфигурацию из готовых модулей.
|
|
12
|
+
|
|
13
|
+
Плагины модульные: по умолчанию ничего не включено - вы сами перечисляете нужные
|
|
14
|
+
в `defineConfig`.
|
|
15
|
+
|
|
16
|
+
## Установка
|
|
4
17
|
|
|
5
|
-
```
|
|
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
|
+
### Общие настройки Prettier
|
|
73
|
+
|
|
74
|
+
Второй аргумент `defineConfig` - общие опции Prettier. Он перебивает настройки
|
|
75
|
+
всех плагинов:
|
|
76
|
+
|
|
77
|
+
```js
|
|
78
|
+
// prettier.config.js
|
|
79
|
+
import { defineConfig, plugins } from '@alexlit/config-prettier';
|
|
80
|
+
|
|
81
|
+
export default defineConfig([plugins.php()], {
|
|
82
|
+
printWidth: 100,
|
|
83
|
+
singleQuote: false,
|
|
84
|
+
});
|
|
85
|
+
```
|
|
10
86
|
|
|
11
|
-
|
|
12
|
-
([see plugins enabled by default](https://github.com/alex-lit/lint-kit/blob/master/packages/config-prettier/index.js#L5))
|
|
87
|
+
## Плагины
|
|
13
88
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
89
|
+
| Плагин | Что делает | Пакет |
|
|
90
|
+
| ----------------------- | ----------------------------------------------- | ------------------------------------------------- |
|
|
91
|
+
| `plugins.jsdoc()` | Нормализует JSDoc-комментарии | `prettier-plugin-jsdoc` |
|
|
92
|
+
| `plugins.mdc()` | Форматирует MDC-документы (Nuxt Content) | `prettier-plugin-mdc` |
|
|
93
|
+
| `plugins.packageJson()` | Сортирует ключи в package.json | `prettier-plugin-packagejson` |
|
|
94
|
+
| `plugins.php()` | Форматирует PHP-файлы | `@prettier/plugin-php` |
|
|
95
|
+
| `plugins.pug()` | Форматирует Pug-шаблоны с сортировкой атрибутов | `@prettier/plugin-pug` |
|
|
96
|
+
| `plugins.ruby()` | Форматирует Ruby и ERB файлы | `@prettier/plugin-ruby` + `prettier-plugin-eruby` |
|
|
97
|
+
| `plugins.sh()` | Форматирует shell-скрипты | `prettier-plugin-sh` |
|
|
98
|
+
| `plugins.sortJson()` | Рекурсивно сортирует ключи JSON-объектов | `prettier-plugin-sort-json` |
|
|
99
|
+
| `plugins.solidity()` | Форматирует контракты Solidity | `prettier-plugin-solidity` |
|
|
100
|
+
| `plugins.sql()` | Форматирует SQL-запросы | `prettier-plugin-sql` |
|
|
101
|
+
| `plugins.tailwindcss()` | Сортирует утилитарные классы Tailwind CSS | `prettier-plugin-tailwindcss` |
|
|
102
|
+
| `plugins.xml()` | Форматирует XML-файлы | `@prettier/plugin-xml` |
|
|
17
103
|
|
|
18
|
-
|
|
19
|
-
```
|
|
104
|
+
## Миграция с v23
|
|
20
105
|
|
|
21
|
-
-
|
|
106
|
+
v24 - breaking-релиз: плагинов по умолчанию больше нет, всё подключается явно.
|
|
22
107
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
108
|
+
| v23 | v24 |
|
|
109
|
+
| ------------------------------ | --------------------------------------------- |
|
|
110
|
+
| `createConfig()` | перечислите нужные плагины явно |
|
|
111
|
+
| `createConfig({ php: true })` | `defineConfig([plugins.php()])` |
|
|
112
|
+
| `createConfig({ sql: false })` | просто не добавляйте `plugins.sql()` в список |
|
|
113
|
+
| `createConfig({}, options)` | `defineConfig([...], options)` |
|
|
26
114
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
ruby: true,
|
|
30
|
-
sql: false,
|
|
31
|
-
tailwindcss: false,
|
|
32
|
-
});
|
|
33
|
-
```
|
|
115
|
+
Плагины, включённые по умолчанию в v23: `jsdoc`, `mdc`, `packagejson`, `pug`,
|
|
116
|
+
`sh`, `solidity`, `sort-json`, `xml`.
|
|
34
117
|
|
|
35
|
-
##
|
|
118
|
+
## Известные проблемы
|
|
36
119
|
|
|
37
|
-
- **tailwindcss**
|
|
120
|
+
- **tailwindcss** ранее конфликтовал с **jsdoc**
|
|
@@ -0,0 +1,92 @@
|
|
|
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
|
+
export interface Plugins {
|
|
18
|
+
/** @see prettier-plugin-jsdoc */
|
|
19
|
+
jsdoc(options?: Config & JsdocOptions): Config;
|
|
20
|
+
/** @see prettier-plugin-mdc */
|
|
21
|
+
mdc(options?: Config): Config;
|
|
22
|
+
/** @see prettier-plugin-packagejson */
|
|
23
|
+
packageJson(options?: Config): Config;
|
|
24
|
+
/** @see plugin-php */
|
|
25
|
+
php(options?: Config): Config;
|
|
26
|
+
/** @see plugin-pug */
|
|
27
|
+
pug(options?: Config & PugOptions): Config;
|
|
28
|
+
/** @see plugin-ruby */
|
|
29
|
+
ruby(options?: Config): Config;
|
|
30
|
+
/** @see prettier-plugin-sh */
|
|
31
|
+
sh(options?: Config): Config;
|
|
32
|
+
/** @see prettier-plugin-solidity */
|
|
33
|
+
solidity(options?: Config): Config;
|
|
34
|
+
/** @see prettier-plugin-sort-json */
|
|
35
|
+
sortJson(options?: Config & SortJsonOptions): Config;
|
|
36
|
+
/** @see prettier-plugin-sql */
|
|
37
|
+
sql(options?: Config): Config;
|
|
38
|
+
/** @see prettier-plugin-tailwindcss */
|
|
39
|
+
tailwindcss(options?: Config & TailwindcssOptions): Config;
|
|
40
|
+
/** @see plugin-xml */
|
|
41
|
+
xml(options?: Config & XmlOptions): Config;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Options of [plugin-pug](https://github.com/prettier/plugin-pug) */
|
|
45
|
+
export interface PugOptions {
|
|
46
|
+
pugCommentPreserveSpaces?: string;
|
|
47
|
+
pugSingleQuote?: boolean;
|
|
48
|
+
pugSortAttributes?: 'asc' | 'desc' | 'natural' | false;
|
|
49
|
+
pugWrapAttributesThreshold?: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Options of
|
|
54
|
+
* [prettier-plugin-sort-json](https://github.com/Gudahtt/prettier-plugin-sort-json)
|
|
55
|
+
*/
|
|
56
|
+
export interface SortJsonOptions {
|
|
57
|
+
jsonRecursiveSort?: boolean;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Options of
|
|
62
|
+
* [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss)
|
|
63
|
+
*/
|
|
64
|
+
export interface TailwindcssOptions {
|
|
65
|
+
tailwindFunctions?: string[];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Options of [plugin-xml](https://github.com/prettier/plugin-xml) */
|
|
69
|
+
export interface XmlOptions {
|
|
70
|
+
xmlWhitespaceSensitivity?: 'ignore' | 'preserve' | 'strict';
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export declare const plugins: Plugins;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Create prettier config
|
|
77
|
+
*
|
|
78
|
+
* There are no default plugins - connect the required ones explicitly:
|
|
79
|
+
*
|
|
80
|
+
* ```js
|
|
81
|
+
* defineConfig([plugins.php(), plugins.tailwindcss()], {
|
|
82
|
+
* printWidth: 100,
|
|
83
|
+
* });
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @param pluginConfigs Plugin configs, e.g. `[plugins.php()]`
|
|
87
|
+
* @param options Base prettier options (highest precedence)
|
|
88
|
+
*/
|
|
89
|
+
export declare function defineConfig(
|
|
90
|
+
pluginConfigs?: Config[],
|
|
91
|
+
options?: Config,
|
|
92
|
+
): Config;
|
|
@@ -1,87 +1,62 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
};
|
|
13
|
-
|
|
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 };
|
|
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';
|
|
22
13
|
|
|
23
14
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* @param {PLUGINS} plugins Enabled/disabled plugins list
|
|
27
|
-
*
|
|
28
|
-
* @returns {import('prettier').Config} Prettier configuration
|
|
15
|
+
* Фабрики плагинов. Каждый плагин подключается явно: передайте
|
|
16
|
+
* `plugins.<name>()` в `defineConfig`
|
|
29
17
|
*/
|
|
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;
|
|
18
|
+
export const plugins = {
|
|
19
|
+
jsdoc,
|
|
20
|
+
mdc,
|
|
21
|
+
packageJson,
|
|
22
|
+
php,
|
|
23
|
+
pug,
|
|
24
|
+
ruby,
|
|
25
|
+
sh,
|
|
26
|
+
solidity,
|
|
27
|
+
sortJson,
|
|
28
|
+
sql,
|
|
29
|
+
tailwindcss,
|
|
30
|
+
xml,
|
|
63
31
|
};
|
|
64
32
|
|
|
65
33
|
/**
|
|
66
|
-
*
|
|
34
|
+
* Создать конфигурацию Prettier
|
|
35
|
+
*
|
|
36
|
+
* Плагинов по умолчанию нет - подключайте нужные явно:
|
|
67
37
|
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
38
|
+
* ```js
|
|
39
|
+
* defineConfig(
|
|
40
|
+
* [
|
|
41
|
+
* plugins.php(),
|
|
42
|
+
* plugins.tailwindcss({ tailwindFunctions: ['cn', 'tw'] }),
|
|
43
|
+
* ],
|
|
44
|
+
* { printWidth: 100 },
|
|
45
|
+
* );
|
|
46
|
+
* ```
|
|
70
47
|
*
|
|
71
|
-
* @
|
|
48
|
+
* @param {import('prettier').Config[]} pluginConfigs Конфиги плагинов, напр.
|
|
49
|
+
* `[plugins.php()]`
|
|
50
|
+
* @param {import('prettier').Config} options Базовые опции Prettier (наивысший
|
|
51
|
+
* приоритет)
|
|
52
|
+
*
|
|
53
|
+
* @returns {import('prettier').Config} Конфигурация Prettier
|
|
72
54
|
*/
|
|
73
|
-
export const
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
return {
|
|
55
|
+
export const defineConfig = (pluginConfigs = [], options = {}) => {
|
|
56
|
+
const config = {
|
|
77
57
|
bracketSameLine: false,
|
|
78
58
|
endOfLine: 'lf',
|
|
79
59
|
objectWrap: 'collapse',
|
|
80
|
-
overrides: [
|
|
81
|
-
...(pluginsConfig.overrides ?? []),
|
|
82
|
-
...(options.overrides ?? []),
|
|
83
|
-
],
|
|
84
|
-
plugins: [...(pluginsConfig.plugins ?? []), ...(options.plugins ?? [])],
|
|
85
60
|
proseWrap: 'always',
|
|
86
61
|
quoteProps: 'consistent',
|
|
87
62
|
singleAttributePerLine: true,
|
|
@@ -90,7 +65,18 @@ export const createConfig = async (plugins = {}, options = {}) => {
|
|
|
90
65
|
trailingComma: 'all',
|
|
91
66
|
vueIndentScriptAndStyle: true,
|
|
92
67
|
|
|
93
|
-
|
|
94
|
-
|
|
68
|
+
// конфиги плагинов перекрывают базовые опции, а пользовательские опции
|
|
69
|
+
// имеют наивысший приоритет
|
|
70
|
+
...Object.assign({}, ...pluginConfigs, options),
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const sources = [...pluginConfigs, options];
|
|
74
|
+
|
|
75
|
+
return {
|
|
76
|
+
...config,
|
|
77
|
+
|
|
78
|
+
// `overrides` и `plugins` конкатенируются, а не заменяются
|
|
79
|
+
overrides: sources.flatMap((source) => source.overrides ?? []),
|
|
80
|
+
plugins: [...new Set(sources.flatMap((source) => source.plugins ?? []))],
|
|
95
81
|
};
|
|
96
82
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alexlit/config-prettier",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "24.1.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "prettier config",
|
|
6
6
|
"keywords": [
|
|
@@ -23,8 +23,10 @@
|
|
|
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
31
|
"plugins"
|
|
30
32
|
],
|
|
@@ -35,7 +37,7 @@
|
|
|
35
37
|
"up": "../../scripts/up.sh"
|
|
36
38
|
},
|
|
37
39
|
"dependencies": {
|
|
38
|
-
"@prettier/plugin-php": "^0.
|
|
40
|
+
"@prettier/plugin-php": "^0.26.0",
|
|
39
41
|
"@prettier/plugin-pug": "^3.6.0",
|
|
40
42
|
"@prettier/plugin-ruby": "^4.0.4",
|
|
41
43
|
"@prettier/plugin-xml": "^3.4.2",
|
|
@@ -48,8 +50,7 @@
|
|
|
48
50
|
"prettier-plugin-solidity": "^2.4.1",
|
|
49
51
|
"prettier-plugin-sort-json": "^4.2.0",
|
|
50
52
|
"prettier-plugin-sql": "^0.20.0",
|
|
51
|
-
"prettier-plugin-tailwindcss": "^0.8.1"
|
|
52
|
-
"radash": "^12.1.1"
|
|
53
|
+
"prettier-plugin-tailwindcss": "^0.8.1"
|
|
53
54
|
},
|
|
54
55
|
"publishConfig": {
|
|
55
56
|
"access": "public",
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Нормализует JSDoc-комментарии
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
8
|
+
* @see [prettier-plugin-jsdoc](https://github.com/hosseinmd/prettier-plugin-jsdoc)
|
|
9
|
+
*/
|
|
10
|
+
export const jsdoc = (options = {}) => ({
|
|
3
11
|
jsdocCommentLineStrategy: 'singleLine',
|
|
4
12
|
jsdocSeparateReturnsFromParam: true,
|
|
5
13
|
jsdocSeparateTagGroups: true,
|
|
6
14
|
plugins: ['prettier-plugin-jsdoc'],
|
|
7
|
-
|
|
15
|
+
...options,
|
|
16
|
+
});
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Форматирует MDC-документы (Nuxt Content)
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
8
|
+
* @see [prettier-plugin-mdc](https://github.com/so1ve/prettier-plugin-mdc)
|
|
9
|
+
*/
|
|
10
|
+
export const mdc = (options = {}) => ({
|
|
3
11
|
overrides: [{ files: ['*.md'], options: { parser: 'mdc' } }],
|
|
4
12
|
plugins: ['prettier-plugin-mdc'],
|
|
5
|
-
|
|
13
|
+
...options,
|
|
14
|
+
});
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Сортирует ключи в package.json
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
8
|
+
* @see [prettier-plugin-packagejson](https://github.com/matzkoh/prettier-plugin-packagejson)
|
|
9
|
+
*/
|
|
10
|
+
export const packageJson = (options = {}) => ({
|
|
3
11
|
plugins: ['prettier-plugin-packagejson'],
|
|
4
|
-
|
|
12
|
+
...options,
|
|
13
|
+
});
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Форматирует PHP-файлы
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
8
|
+
* @see [plugin-php](https://github.com/prettier/plugin-php)
|
|
9
|
+
*/
|
|
10
|
+
export const php = (options = {}) => ({
|
|
3
11
|
plugins: ['@prettier/plugin-php'],
|
|
4
|
-
|
|
12
|
+
...options,
|
|
13
|
+
});
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Форматирует Pug-шаблоны с сортировкой атрибутов и одинарными кавычками
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
8
|
+
* @see [plugin-pug](https://github.com/prettier/plugin-pug)
|
|
9
|
+
*/
|
|
10
|
+
export const pug = (options = {}) => ({
|
|
3
11
|
plugins: ['@prettier/plugin-pug'],
|
|
4
12
|
pugCommentPreserveSpaces: 'trim-all',
|
|
5
13
|
pugSingleQuote: false,
|
|
6
14
|
pugSortAttributes: 'asc',
|
|
7
15
|
pugWrapAttributesThreshold: 3,
|
|
8
|
-
|
|
16
|
+
...options,
|
|
17
|
+
});
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* Форматирует Ruby и ERB файлы
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
2
8
|
* @see [plugin-ruby](https://github.com/prettier/plugin-ruby)
|
|
3
9
|
* @see [prettier-plugin-eruby](https://github.com/ippachi/prettier-plugin-eruby)
|
|
4
10
|
*/
|
|
5
|
-
export
|
|
6
|
-
overrides: [
|
|
7
|
-
{
|
|
8
|
-
files: '*.html.erb',
|
|
9
|
-
options: {
|
|
10
|
-
parser: 'eruby-parse',
|
|
11
|
-
},
|
|
12
|
-
},
|
|
13
|
-
],
|
|
11
|
+
export const ruby = (options = {}) => ({
|
|
12
|
+
overrides: [{ files: '*.html.erb', options: { parser: 'eruby-parse' } }],
|
|
14
13
|
plugins: ['@prettier/plugin-ruby', 'prettier-plugin-eruby'],
|
|
15
|
-
|
|
14
|
+
...options,
|
|
15
|
+
});
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Форматирует shell-скрипты
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
8
|
+
* @see [prettier-plugin-sh](https://github.com/astorije/prettier-plugin-sh)
|
|
9
|
+
*/
|
|
10
|
+
export const sh = (options = {}) => ({
|
|
3
11
|
plugins: ['prettier-plugin-sh'],
|
|
4
|
-
|
|
12
|
+
...options,
|
|
13
|
+
});
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Форматирует контракты Solidity
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
8
|
+
* @see [prettier-plugin-solidity](https://github.com/prettier-solidity/prettier-plugin-solidity)
|
|
9
|
+
*/
|
|
10
|
+
export const solidity = (options = {}) => ({
|
|
3
11
|
plugins: ['prettier-plugin-solidity'],
|
|
4
|
-
|
|
12
|
+
...options,
|
|
13
|
+
});
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Рекурсивно сортирует ключи JSON-объектов
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
8
|
+
* @see [prettier-plugin-sort-json](https://github.com/Gudahtt/prettier-plugin-sort-json)
|
|
9
|
+
*/
|
|
10
|
+
export const sortJson = (options = {}) => ({
|
|
3
11
|
jsonRecursiveSort: true,
|
|
4
12
|
plugins: ['prettier-plugin-sort-json'],
|
|
5
|
-
|
|
13
|
+
...options,
|
|
14
|
+
});
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Форматирует SQL-запросы
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
8
|
+
* @see [prettier-plugin-sql](https://github.com/un-ts/prettier/tree/master/packages/sql)
|
|
9
|
+
*/
|
|
10
|
+
export const sql = (options = {}) => ({
|
|
3
11
|
plugins: ['prettier-plugin-sql'],
|
|
4
|
-
|
|
12
|
+
...options,
|
|
13
|
+
});
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Сортирует утилитарные классы Tailwind CSS по каноническому порядку
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
8
|
+
* @see [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss)
|
|
9
|
+
*/
|
|
10
|
+
export const tailwindcss = (options = {}) => ({
|
|
3
11
|
plugins: ['prettier-plugin-tailwindcss'],
|
|
4
12
|
tailwindFunctions: [
|
|
5
13
|
'classnames',
|
|
@@ -11,4 +19,5 @@ export default {
|
|
|
11
19
|
'tw',
|
|
12
20
|
'twMerge',
|
|
13
21
|
],
|
|
14
|
-
|
|
22
|
+
...options,
|
|
23
|
+
});
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Форматирует XML-файлы
|
|
3
|
+
*
|
|
4
|
+
* @param {Partial<import('prettier').Config>} [options]
|
|
5
|
+
*
|
|
6
|
+
* @returns {import('prettier').Config}
|
|
7
|
+
*
|
|
8
|
+
* @see [plugin-xml](https://github.com/prettier/plugin-xml)
|
|
9
|
+
*/
|
|
10
|
+
export const xml = (options = {}) => ({
|
|
3
11
|
plugins: ['@prettier/plugin-xml'],
|
|
4
12
|
xmlWhitespaceSensitivity: 'ignore',
|
|
5
|
-
|
|
13
|
+
...options,
|
|
14
|
+
});
|