@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.
Files changed (157) hide show
  1. package/README.md +27 -22
  2. package/eslint.config.js +31 -60
  3. package/lint-staged.config.js +2 -2
  4. package/linthtml.config.js +2 -2
  5. package/package.json +3 -2
  6. package/packages/config-eslint/README.md +181 -106
  7. package/packages/config-eslint/base.js +8 -3
  8. package/packages/config-eslint/index.d.ts +114 -0
  9. package/packages/config-eslint/index.js +82 -23
  10. package/packages/config-eslint/package.json +20 -17
  11. package/packages/config-eslint/plugins/de-morgan.js +11 -4
  12. package/packages/config-eslint/plugins/import-x.js +54 -37
  13. package/packages/config-eslint/plugins/javascript.js +100 -85
  14. package/packages/config-eslint/plugins/jsdoc.js +28 -17
  15. package/packages/config-eslint/plugins/json.js +35 -24
  16. package/packages/config-eslint/plugins/perfectionist.js +112 -95
  17. package/packages/config-eslint/plugins/pinia.js +21 -10
  18. package/packages/config-eslint/plugins/prettier.js +32 -10
  19. package/packages/config-eslint/plugins/regexp.js +20 -9
  20. package/packages/config-eslint/plugins/sonar.js +23 -12
  21. package/packages/config-eslint/plugins/stylistic.js +111 -100
  22. package/packages/config-eslint/plugins/tailwindcss.js +24 -10
  23. package/packages/config-eslint/plugins/tanstack-query.js +20 -9
  24. package/packages/config-eslint/plugins/typescript-type-checked.js +42 -33
  25. package/packages/config-eslint/plugins/typescript.js +27 -14
  26. package/packages/config-eslint/plugins/unicorn.js +77 -64
  27. package/packages/config-eslint/plugins/unocss.js +16 -5
  28. package/packages/config-eslint/plugins/vitest.js +24 -13
  29. package/packages/config-eslint/plugins/vue-accessibility.js +26 -13
  30. package/packages/config-eslint/plugins/vue-i18n.js +43 -31
  31. package/packages/config-eslint/plugins/vue.js +259 -242
  32. package/packages/config-eslint/plugins/zod.js +21 -10
  33. package/packages/config-eslint/rules/typescript.js +1 -1
  34. package/packages/config-hooks/README.md +119 -37
  35. package/packages/config-hooks/index.d.ts +19 -0
  36. package/packages/config-hooks/lint-staged.js +8 -6
  37. package/packages/config-hooks/package.json +3 -1
  38. package/packages/config-htmllint/README.md +50 -22
  39. package/packages/config-htmllint/index.d.ts +13 -0
  40. package/packages/config-htmllint/index.js +15 -7
  41. package/packages/config-htmllint/package.json +4 -2
  42. package/packages/config-markdownlint/README.md +40 -5
  43. package/packages/config-markdownlint/index.json +0 -2
  44. package/packages/config-markdownlint/package.json +1 -1
  45. package/packages/config-npmlint/README.md +48 -5
  46. package/packages/config-npmlint/package.json +3 -3
  47. package/packages/config-prettier/README.md +158 -23
  48. package/packages/config-prettier/index.d.ts +100 -0
  49. package/packages/config-prettier/index.js +63 -85
  50. package/packages/config-prettier/package.json +6 -4
  51. package/packages/config-prettier/plugins/jsdoc.js +17 -2
  52. package/packages/config-prettier/plugins/mdc.js +17 -2
  53. package/packages/config-prettier/plugins/packagejson.js +17 -4
  54. package/packages/config-prettier/plugins/php.js +17 -4
  55. package/packages/config-prettier/plugins/pug.js +17 -2
  56. package/packages/config-prettier/plugins/ruby.js +17 -11
  57. package/packages/config-prettier/plugins/sh.js +17 -4
  58. package/packages/config-prettier/plugins/solidity.js +17 -4
  59. package/packages/config-prettier/plugins/sort-json.js +17 -2
  60. package/packages/config-prettier/plugins/sql.js +17 -4
  61. package/packages/config-prettier/plugins/tailwindcss.js +17 -2
  62. package/packages/config-prettier/plugins/xml.js +17 -2
  63. package/packages/config-prettier/utils/merge-configs.js +18 -0
  64. package/packages/config-stylelint/README.md +182 -44
  65. package/packages/config-stylelint/index.d.ts +56 -0
  66. package/packages/config-stylelint/index.js +161 -165
  67. package/packages/config-stylelint/package.json +5 -2
  68. package/packages/config-stylelint/plugins/a11y.js +13 -6
  69. package/packages/config-stylelint/plugins/bem.js +14 -6
  70. package/packages/config-stylelint/plugins/color-format.js +14 -2
  71. package/packages/config-stylelint/plugins/declaration-block-no-ignored-properties.js +14 -5
  72. package/packages/config-stylelint/plugins/gamut.js +13 -5
  73. package/packages/config-stylelint/plugins/high-performance-animation.js +15 -6
  74. package/packages/config-stylelint/plugins/logical-css.js +13 -5
  75. package/packages/config-stylelint/plugins/media-use-custom-media.js +14 -5
  76. package/packages/config-stylelint/plugins/no-indistinguishable-colors.js +14 -5
  77. package/packages/config-stylelint/plugins/no-nested-media.js +13 -5
  78. package/packages/config-stylelint/plugins/no-unresolved-module.js +15 -6
  79. package/packages/config-stylelint/plugins/no-unsupported-browser-features.js +15 -6
  80. package/packages/config-stylelint/plugins/order.js +14 -6
  81. package/packages/config-stylelint/plugins/prettier.js +13 -5
  82. package/packages/config-stylelint/plugins/scss.js +13 -6
  83. package/packages/config-stylelint/plugins/selector-no-empty.js +14 -5
  84. package/packages/config-stylelint/plugins/use-nesting.js +13 -5
  85. package/packages/config-stylelint/plugins/vue.js +10 -2
  86. package/packages/config-stylelint/utils/merge-configs.js +20 -0
  87. package/prettier.config.js +15 -7
  88. package/scripts/semver.sh +3 -3
  89. package/stylelint.config.js +25 -11
  90. package/packages/config-eslint/_legacy/LICENSE +0 -20
  91. package/packages/config-eslint/_legacy/README.md +0 -48
  92. package/packages/config-eslint/_legacy/constants/allow-boolean-property-list.js +0 -38
  93. package/packages/config-eslint/_legacy/constants/boolean-prefixes.js +0 -11
  94. package/packages/config-eslint/_legacy/constants/english-verbs.js +0 -3368
  95. package/packages/config-eslint/_legacy/dictionaries/index.js +0 -467
  96. package/packages/config-eslint/_legacy/dictionaries/programming/bash.js +0 -25
  97. package/packages/config-eslint/_legacy/dictionaries/programming/django.js +0 -2345
  98. package/packages/config-eslint/_legacy/dictionaries/programming/elixir.js +0 -64
  99. package/packages/config-eslint/_legacy/dictionaries/programming/go.js +0 -7748
  100. package/packages/config-eslint/_legacy/dictionaries/programming/java.js +0 -33527
  101. package/packages/config-eslint/_legacy/dictionaries/programming/latex.js +0 -675
  102. package/packages/config-eslint/_legacy/dictionaries/programming/lua.js +0 -394
  103. package/packages/config-eslint/_legacy/dictionaries/programming/php.js +0 -9788
  104. package/packages/config-eslint/_legacy/dictionaries/programming/python.js +0 -367
  105. package/packages/config-eslint/_legacy/dictionaries/programming/ruby.js +0 -357
  106. package/packages/config-eslint/_legacy/dictionaries/programming/rust.js +0 -115
  107. package/packages/config-eslint/_legacy/dictionaries/programming/scala.js +0 -2755
  108. package/packages/config-eslint/_legacy/dictionaries/specialized/html-symbol-entities.js +0 -1118
  109. package/packages/config-eslint/_legacy/dictionaries/specialized/lorem-ipsum.js +0 -359
  110. package/packages/config-eslint/_legacy/index.js +0 -12
  111. package/packages/config-eslint/_legacy/legacy.js +0 -3
  112. package/packages/config-eslint/_legacy/package.json +0 -97
  113. package/packages/config-eslint/_legacy/plugins/array-func.js +0 -20
  114. package/packages/config-eslint/_legacy/plugins/compat.js +0 -7
  115. package/packages/config-eslint/_legacy/plugins/decorator-position.js +0 -15
  116. package/packages/config-eslint/_legacy/plugins/eslint-comments.js +0 -9
  117. package/packages/config-eslint/_legacy/plugins/etc.js +0 -13
  118. package/packages/config-eslint/_legacy/plugins/ext.js +0 -12
  119. package/packages/config-eslint/_legacy/plugins/filenames.js +0 -38
  120. package/packages/config-eslint/_legacy/plugins/import.js +0 -133
  121. package/packages/config-eslint/_legacy/plugins/jsdoc.js +0 -32
  122. package/packages/config-eslint/_legacy/plugins/jsx-a11y.js +0 -5
  123. package/packages/config-eslint/_legacy/plugins/lit-a11y.js +0 -5
  124. package/packages/config-eslint/_legacy/plugins/lit.js +0 -9
  125. package/packages/config-eslint/_legacy/plugins/more.js +0 -17
  126. package/packages/config-eslint/_legacy/plugins/no-await-in-promise.js +0 -5
  127. package/packages/config-eslint/_legacy/plugins/no-constructor-bind.js +0 -8
  128. package/packages/config-eslint/_legacy/plugins/no-explicit-type-exports.js +0 -7
  129. package/packages/config-eslint/_legacy/plugins/no-loops.js +0 -7
  130. package/packages/config-eslint/_legacy/plugins/no-secrets.js +0 -12
  131. package/packages/config-eslint/_legacy/plugins/no-use-extend-native.js +0 -5
  132. package/packages/config-eslint/_legacy/plugins/node.js +0 -5
  133. package/packages/config-eslint/_legacy/plugins/prettier.js +0 -24
  134. package/packages/config-eslint/_legacy/plugins/promise.js +0 -10
  135. package/packages/config-eslint/_legacy/plugins/regexp.js +0 -7
  136. package/packages/config-eslint/_legacy/plugins/security.js +0 -10
  137. package/packages/config-eslint/_legacy/plugins/simple-import-sort.js +0 -7
  138. package/packages/config-eslint/_legacy/plugins/sonar.js +0 -5
  139. package/packages/config-eslint/_legacy/plugins/sort-class-members.js +0 -298
  140. package/packages/config-eslint/_legacy/plugins/sort-destructure-keys.js +0 -10
  141. package/packages/config-eslint/_legacy/plugins/sort-keys-fix.js +0 -7
  142. package/packages/config-eslint/_legacy/plugins/spellcheck.js +0 -9
  143. package/packages/config-eslint/_legacy/plugins/sql.js +0 -26
  144. package/packages/config-eslint/_legacy/plugins/tanstack-query.js +0 -4
  145. package/packages/config-eslint/_legacy/plugins/testing-library.js +0 -9
  146. package/packages/config-eslint/_legacy/plugins/typescript-sort-keys.js +0 -5
  147. package/packages/config-eslint/_legacy/plugins/typescript.js +0 -157
  148. package/packages/config-eslint/_legacy/plugins/unicorn.js +0 -70
  149. package/packages/config-eslint/_legacy/plugins/unused-imports.js +0 -17
  150. package/packages/config-eslint/_legacy/plugins/vitest.js +0 -16
  151. package/packages/config-eslint/_legacy/plugins/vue-i18n.js +0 -34
  152. package/packages/config-eslint/_legacy/plugins/vue.js +0 -291
  153. package/packages/config-eslint/_legacy/plugins/vuejs-accessibility.js +0 -20
  154. package/packages/config-eslint/_legacy/plugins/wc.js +0 -5
  155. package/packages/config-eslint/_legacy/plugins/write-good-comments.js +0 -7
  156. package/packages/config-eslint/_legacy/utils/create-config.js +0 -377
  157. package/packages/config-eslint/_legacy/utils/extend-spell-checker.js +0 -23
@@ -1,53 +1,135 @@
1
1
  # Hooks Configuration
2
2
 
3
- ## Installation
3
+ [![version](https://npmx.dev/api/registry/badge/version/@alexlit/config-hooks)](https://www.npmjs.com/package/@alexlit/config-hooks)
4
+ [![downloads](https://npmx.dev/api/registry/badge/downloads/@alexlit/config-hooks)](https://npmx.dev/package/@alexlit/config-hooks)
5
+ [![license](https://npmx.dev/api/registry/badge/license/@alexlit/config-hooks)](LICENSE)
4
6
 
5
- ```sh
7
+ Готовые конфигурации для git-хуков проекта - три инструмента, которые вместе
8
+ следят за качеством коммитов:
9
+
10
+ - **commitlint** - проверяет, что сообщение коммита написано по
11
+ [Conventional Commits](https://www.conventionalcommits.org/) (`fix: ...`,
12
+ `feat: ...` и т.д.);
13
+ - **lint-staged** - запускает линтеры и форматтеры только на файлах, попавших в
14
+ коммит;
15
+ - **simple-git-hooks** - устанавливает сами хуки в `.git/hooks`.
16
+
17
+ ## Установка
18
+
19
+ ```bash
6
20
  npm i @alexlit/config-hooks -D
7
21
  ```
8
22
 
9
- ## Connection
23
+ ## Подключение
24
+
25
+ ### 1. commitlint
10
26
 
11
- - commitlint
27
+ ```js
28
+ // commitlint.config.js
29
+ export default { extends: ['@alexlit/config-hooks/commitlint'] };
30
+ ```
31
+
32
+ Коммит с сообщением не по Conventional Commits будет отклонён.
12
33
 
13
- ```js
14
- // commitlint.config.js
15
- export default { extends: ['@alexlit/config-hooks/commitlint'] };
16
- ```
34
+ ### 2. lint-staged
17
35
 
18
- - lint-staged
36
+ ```js
37
+ // lint-staged.config.js
38
+ import { defineConfig } from '@alexlit/config-hooks';
19
39
 
20
- ```js
21
- // lint-staged.config.js
22
- import { createLintStagedConfig } from '@alexlit/config-hooks';
40
+ export default defineConfig();
41
+ ```
23
42
 
24
- export default createLintStagedConfig(
25
- // optional plugins list
26
- { stylelint: false },
43
+ `defineConfig()` возвращает готовую карту «тип файла → команды»: при
44
+ `git commit` к изменённым файлам применяются только подходящие линтеры
45
+ (например, `.vue` - eslint + stylelint + prettier, `.md` - prettier +
46
+ markdownlint). Ниже - [настройка](#настройка-lint-staged).
27
47
 
28
- // optional config
29
- {
30
- '*.css': [], // disable existing rule
31
- '*.yaml': ['echo "Hello, .yaml!"'], // custom rule
32
- },
33
- );
34
- ```
48
+ ### 3. simple-git-hooks
35
49
 
36
- - simple-git-hooks
50
+ Пропишите хуки в `package.json` и установите их:
37
51
 
38
- ```json
39
- // package.json
40
- {
41
- "scripts": { "prepare": "simple-git-hooks" },
42
- "simple-git-hooks": {
43
- "commit-msg": "npx commitlint --edit",
44
- "pre-commit": "npx lint-staged"
45
- }
52
+ ```json
53
+ // package.json
54
+ {
55
+ "scripts": { "prepare": "simple-git-hooks" },
56
+ "simple-git-hooks": {
57
+ "commit-msg": "npx commitlint --edit",
58
+ "pre-commit": "npx lint-staged"
46
59
  }
47
- ```
60
+ }
61
+ ```
62
+
63
+ ```bash
64
+ git config --unset core.hooksPath || true
65
+ rm -rf .git/hooks/*
66
+ npx simple-git-hooks
67
+ ```
68
+
69
+ Скрипт `prepare` установит хуки автоматически после `npm install`.
70
+
71
+ ## Настройка lint-staged
72
+
73
+ У `defineConfig(plugins?, config?)` два необязательных аргумента.
74
+
75
+ ### Линтеры
76
+
77
+ Первый аргумент - включает и выключает линтеры (по умолчанию включены все):
78
+
79
+ | Линтер | Команда | Файлы |
80
+ | -------------- | --------------------------------------------------- | --------------------------------------------------------- |
81
+ | `eslint` | `eslint --fix` | `*.js`, `*.ts`, `*.jsx`, `*.tsx`, `*.vue`, `*.json` и др. |
82
+ | `prettier` | `prettier --write` | почти все текстовые файлы |
83
+ | `stylelint` | `stylelint --fix` | `*.css`, `*.scss`, `*.sass`, `*.pcss`, `*.vue` |
84
+ | `htmllint` | `linthtml` | `*.html` |
85
+ | `markdownlint` | `markdownlint --fix` | `*.md` |
86
+ | `npmlint` | `npmPkgJsonLint` | `package.json` |
87
+ | `lockfilelint` | `lockfile-lint --type npm --path package-lock.json` | `package-lock.json` |
88
+
89
+ Выключенный линтер заменяется на `echo "... disabled"` - правило остаётся, но
90
+ ничего не делает.
91
+
92
+ ```js
93
+ // stylelint и htmllint выключены
94
+ export default defineConfig({ stylelint: false, htmllint: false });
95
+ ```
96
+
97
+ ### Свои правила
98
+
99
+ Второй аргумент - дополняет или переопределяет карту по паттернам:
100
+
101
+ ```js
102
+ // lint-staged.config.js
103
+ import { defineConfig } from '@alexlit/config-hooks';
104
+
105
+ export default defineConfig(
106
+ // 1. линтеры
107
+ { stylelint: false },
108
+
109
+ // 2. правила по паттернам
110
+ {
111
+ '*.css': [], // пустой массив - отключить правило для css
112
+ '*.yaml': ['echo "Hello, .yaml!"'], // своя команда
113
+ },
114
+ );
115
+ ```
116
+
117
+ ## Миграция v9 → v10
118
+
119
+ v10 - breaking-релиз: функция переименована для консистентности с остальными
120
+ пакетами `@alexlit/config-*` (`defineConfig` в `config-prettier`,
121
+ `config-stylelint`).
122
+
123
+ | v9 | v10 |
124
+ | ------------------------------ | -------------------- |
125
+ | `createLintStagedConfig()` | `defineConfig()` |
126
+ | `createLintStagedConfig(a, b)` | `defineConfig(a, b)` |
127
+
128
+ Аргументы и их поведение не изменились - достаточно заменить имя функции.
129
+
130
+ ## Полезные ссылки
48
131
 
49
- ```sh
50
- git config --unset core.hooksPath || true
51
- rm -rf .git/hooks/*
52
- npx simple-git-hooks
53
- ```
132
+ - [conventionalcommits](https://www.conventionalcommits.org/)
133
+ - [commitlint](https://commitlint.org/)
134
+ - [lint-staged](https://github.com/lint-staged/lint-staged)
135
+ - [simple-git-hooks](https://github.com/typicode/simple-git-hooks)
@@ -0,0 +1,19 @@
1
+ /** Флаги включения и выключения линтеров (по умолчанию включены все). */
2
+ type LintersFlags = Record<string, boolean>;
3
+
4
+ /** Карта «паттерн файла → команды». */
5
+ type LintStagedRules = Record<string, string | string[]>;
6
+
7
+ /**
8
+ * Создать конфигурацию lint-staged.
9
+ *
10
+ * @param plugins - Включение и выключение линтеров
11
+ * @param config - Свои правила по паттернам: дополняют или переопределяют карту
12
+ * по умолчанию
13
+ */
14
+ declare function defineConfig(
15
+ plugins?: LintersFlags,
16
+ config?: LintStagedRules,
17
+ ): LintStagedRules;
18
+
19
+ export { defineConfig };
@@ -1,12 +1,14 @@
1
1
  /**
2
- * Create lint-staged config
2
+ * Создать конфигурацию lint-staged.
3
3
  *
4
- * @param {Record<string, boolean>} plugins Enabled plugins
5
- * @param {Record<string, unknown>} config Users config
4
+ * @param {Record<string, boolean>} [plugins] - Включение и выключение линтеров
5
+ * (по умолчанию включены все)
6
+ * @param {Record<string, unknown>} [config] - Свои правила по паттернам:
7
+ * дополняют или переопределяют карту по умолчанию
6
8
  *
7
- * @returns {Record<string, unknown>} Lint-staged configuration
9
+ * @returns {Record<string, unknown>} Карта «паттерн файла → команды»
8
10
  */
9
- const createLintStagedConfig = (plugins = {}, config = {}) => {
11
+ const defineConfig = (plugins = {}, config = {}) => {
10
12
  const pluginsList = {
11
13
  eslint: true,
12
14
  htmllint: true,
@@ -83,4 +85,4 @@ const createLintStagedConfig = (plugins = {}, config = {}) => {
83
85
  };
84
86
  };
85
87
 
86
- export { createLintStagedConfig };
88
+ export { defineConfig };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexlit/config-hooks",
3
- "version": "9.1.1",
3
+ "version": "10.0.0",
4
4
  "private": false,
5
5
  "description": "Hooks config",
6
6
  "keywords": [
@@ -23,9 +23,11 @@
23
23
  ],
24
24
  "type": "module",
25
25
  "main": "lint-staged.js",
26
+ "types": "index.d.ts",
26
27
  "files": [
27
28
  "README.md",
28
29
  "commitlint.js",
30
+ "index.d.ts",
29
31
  "lint-staged.js"
30
32
  ],
31
33
  "scripts": {
@@ -1,38 +1,66 @@
1
1
  # HTMLLint Configuration
2
2
 
3
- ## Installation
3
+ [![version](https://npmx.dev/api/registry/badge/version/@alexlit/config-htmllint)](https://www.npmjs.com/package/@alexlit/config-htmllint)
4
+ [![downloads](https://npmx.dev/api/registry/badge/downloads/@alexlit/config-htmllint)](https://npmx.dev/package/@alexlit/config-htmllint)
5
+ [![license](https://npmx.dev/api/registry/badge/license/@alexlit/config-htmllint)](LICENSE)
4
6
 
5
- ```sh
7
+ Готовая конфигурация [linthtml](https://github.com/linthtml/linthtml) - линтера
8
+ HTML-разметки. Пакет объединяет рекомендованный базовый конфиг
9
+ `@linthtml/linthtml-config-recommended` с дополнительными правилами (в том числе
10
+ проверками доступности и стиля разметки), чтобы подключить линтер одной строкой
11
+ и не держать сотни строк настроек в каждом проекте.
12
+
13
+ ## Установка
14
+
15
+ ```bash
6
16
  npm i @alexlit/config-htmllint -D
7
17
  ```
8
18
 
9
- ## Connection
19
+ ## Быстрый старт
20
+
21
+ ```js
22
+ // linthtml.config.js
23
+ import { defineConfig } from '@alexlit/config-htmllint';
10
24
 
11
- - Default
12
- ([see rules enabled by default](https://github.com/alex-lit/lint-kit/blob/master/packages/config-htmllint/index.js))
25
+ export default defineConfig();
26
+ ```
27
+
28
+ Готово: подключены рекомендованный конфиг, правила пакета и дефолтные опции
29
+ линтера.
13
30
 
14
- ```js
15
- // linthtml.config.js
16
- import { createConfig } from '@alexlit/config-htmllint';
31
+ ## Настройка
17
32
 
18
- export default createConfig();
19
- ```
33
+ Аргумент `options` накладывается поверх значений по умолчанию: `rules` - shallow
34
+ merge, `extends` и `ignoreFiles` - конкатенация.
20
35
 
21
- - Custom
36
+ ```js
37
+ // linthtml.config.js
38
+ import { defineConfig } from '@alexlit/config-htmllint';
22
39
 
23
- ```js
24
- // linthtml.config.js
25
- import { createConfig } from '@alexlit/config-htmllint';
40
+ export default defineConfig({
41
+ 'line-max-len-ignore-regex': false,
26
42
 
27
- export default createConfig({
28
- 'attr-name-ignore-regex': false,
43
+ 'rules': { 'indent-width': [true, 4], 'title-max-len': [true, 60] },
44
+ });
45
+ ```
29
46
 
30
- rules: {
31
- 'indent-width': [true, 4],
32
- },
33
- });
34
- ```
47
+ ## Миграция v1 → v2
35
48
 
36
- ## VSCode extention
49
+ v2 - breaking-релиз: функция переименована для консистентности с остальными
50
+ пакетами `@alexlit/config-*`.
51
+
52
+ | v1 | v2 |
53
+ | -------------------- | -------------------- |
54
+ | `createConfig()` | `defineConfig()` |
55
+ | `createConfig(opts)` | `defineConfig(opts)` |
56
+
57
+ Аргументы и их поведение не изменились - достаточно заменить имя функции.
58
+
59
+ ## Расширение для VSCode
37
60
 
38
61
  [vscode-linthtml](https://marketplace.visualstudio.com/items?itemName=kamikillerto.vscode-linthtml)
62
+
63
+ ## Полезные ссылки
64
+
65
+ - [linthtml](https://github.com/linthtml/linthtml)
66
+ - [linthtml-config-recommended](https://github.com/linthtml/linthtml-config-recommended)
@@ -0,0 +1,13 @@
1
+ import type { Config } from '@linthtml/linthtml';
2
+
3
+ /**
4
+ * Создать конфигурацию linthtml.
5
+ *
6
+ * База (расширяется рекомендованным конфигом):
7
+ * `@linthtml/linthtml-config-recommended` плюс дефолтные опции линтера и
8
+ * правила. Всё, что передано в `options`, накладывается поверх базы; `extends`
9
+ * и `ignoreFiles` конкатенируются, `rules` - shallow merge.
10
+ *
11
+ * @param options - Опции linthtml, накладываемые поверх значений по умолчанию
12
+ */
13
+ export declare function defineConfig(options?: Config): Config;
@@ -1,26 +1,34 @@
1
1
  /**
2
- * Create linthtml config
2
+ * Создать конфигурацию linthtml.
3
3
  *
4
- * @param options LintHTML options
4
+ * База (расширяется рекомендованным конфигом):
5
+ * `@linthtml/linthtml-config-recommended` плюс дефолтные опции линтера и
6
+ * правила ниже. Всё, что передано в `options`, накладывается поверх базы;
7
+ * `extends` и `ignoreFiles` конкатенируются, `rules` - shallow merge.
8
+ *
9
+ * @param {import('@linthtml/linthtml').Config} [options] - Опции linthtml,
10
+ * накладываемые поверх значений по умолчанию
11
+ *
12
+ * @returns {import('@linthtml/linthtml').Config}
5
13
  *
6
14
  * @see [linthtml](https://github.com/linthtml/linthtml)
7
15
  */
8
- export const createConfig = (options = {}) => ({
16
+ export const defineConfig = (options = {}) => ({
9
17
  'attr-name-ignore-regex': false,
10
18
  'id-class-ignore-regex': false,
11
19
  'line-max-len-ignore-regex': false,
12
- maxerr: false,
20
+ 'maxerr': false,
13
21
  'raw-ignore-regex': false,
14
22
  'spec-char-escape': false,
15
23
  'text-ignore-regex': false,
16
24
  ...options,
17
- extends: [
25
+ 'extends': [
18
26
  '@linthtml/linthtml-config-recommended',
19
27
 
20
28
  ...(options.extends ?? []),
21
29
  ],
22
- ignoreFiles: [...(options.rules ?? [])],
23
- rules: {
30
+ 'ignoreFiles': [...(options.ignoreFiles ?? [])],
31
+ 'rules': {
24
32
  'attr-order': [true, ['id', 'class']],
25
33
  'attr-quote-style': [true, 'double'],
26
34
  'button-req-content': true,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexlit/config-htmllint",
3
- "version": "1.3.2",
3
+ "version": "2.0.0",
4
4
  "private": false,
5
5
  "description": "htmllint config",
6
6
  "keywords": [
@@ -25,9 +25,11 @@
25
25
  ],
26
26
  "type": "module",
27
27
  "main": "index.js",
28
+ "types": "index.d.ts",
28
29
  "files": [
29
30
  "README.md",
30
- "index.js"
31
+ "index.js",
32
+ "index.d.ts"
31
33
  ],
32
34
  "scripts": {
33
35
  "lint": "cd ../../ && ./scripts/lint.htmllint.sh",
@@ -1,16 +1,51 @@
1
- # MarkdownLint Configuration
1
+ # Markdownlint Configuration
2
2
 
3
- ## Installation
3
+ [![npm version](https://npmx.dev/api/registry/badge/version/@alexlit/config-markdownlint)](https://www.npmjs.com/package/@alexlit/config-markdownlint)
4
+ [![downloads](https://npmx.dev/api/registry/badge/downloads/@alexlit/config-markdownlint)](https://npmx.dev/package/@alexlit/config-markdownlint)
5
+ [![license](https://npmx.dev/api/registry/badge/license/@alexlit/config-markdownlint)](LICENSE)
4
6
 
5
- ```sh
7
+ Готовый набор правил
8
+ [markdownlint](https://github.com/DavidAnson/markdownlint) - линтера
9
+ Markdown-файлов. Пакет подключается одной строкой через `extends`, чтобы не
10
+ держать конфигурацию в каждом проекте отдельно: включены все правила линтера по
11
+ умолчанию, сняты спорные ограничения (длина строки, HTML) и зафиксирован стиль
12
+ код-блоков и списков.
13
+
14
+ Формат пакета - JSON: это конвенция markdownlint-cli, которая загружает конфиги
15
+ только в форматах JSON/YAML и не поддерживает JS-конфиги.
16
+
17
+ ## Установка
18
+
19
+ ```bash
6
20
  npm i @alexlit/config-markdownlint -D
7
21
  ```
8
22
 
9
- ## Connection
23
+ ## Быстрый старт
24
+
25
+ ```json
26
+ // .markdownlint.json
27
+ { "extends": "@alexlit/config-markdownlint" }
28
+ ```
29
+
30
+ Готово: линтер работает с набором правил пакета.
31
+
32
+ ## Настройка
33
+
34
+ Перечислите нужные правила в своём `.markdownlint.json` - собственные ключи
35
+ перекрывают одноимённые правила из `extends`.
10
36
 
11
37
  ```json
12
38
  // .markdownlint.json
13
39
  {
14
- "extends": "@alexlit/config-markdownlint"
40
+ "extends": "@alexlit/config-markdownlint",
41
+
42
+ "no-inline-html": true,
43
+ "ul-style": { "style": "asterisk" }
15
44
  }
16
45
  ```
46
+
47
+ ## Полезные ссылки
48
+
49
+ - [markdownlint](https://github.com/DavidAnson/markdownlint)
50
+ - [Список правил](https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md)
51
+ - [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli)
@@ -3,14 +3,12 @@
3
3
  "code-fence-style": { "style": "backtick" },
4
4
  "default": true,
5
5
  "first-line-heading": false,
6
-
7
6
  "line-length": {
8
7
  "code_blocks": false,
9
8
  "headings": false,
10
9
  "strict": false,
11
10
  "tables": false
12
11
  },
13
-
14
12
  "no-inline-html": false,
15
13
  "ol-prefix": { "style": "ordered" },
16
14
  "ul-style": { "style": "dash" }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexlit/config-markdownlint",
3
- "version": "2.27.0",
3
+ "version": "2.27.1",
4
4
  "private": false,
5
5
  "description": "markdownlint config",
6
6
  "keywords": [
@@ -1,18 +1,61 @@
1
1
  # NPMLint Configuration
2
2
 
3
- [npm-package-json-lint](https://github.com/tclindner/npm-package-json-lint)
3
+ [![version](https://npmx.dev/api/registry/badge/version/@alexlit/config-npmlint)](https://www.npmjs.com/package/@alexlit/config-npmlint)
4
+ [![downloads](https://npmx.dev/api/registry/badge/downloads/@alexlit/config-npmlint)](https://npmx.dev/package/@alexlit/config-npmlint)
5
+ [![license](https://npmx.dev/api/registry/badge/license/@alexlit/config-npmlint)](LICENSE)
4
6
 
5
- ## Installation
7
+ Готовая конфигурация
8
+ [npm-package-json-lint](https://github.com/tclindner/npm-package-json-lint) -
9
+ линтера `package.json` файлов. Пакет собирает рекомендованный базовый конфиг
10
+ `npm-package-json-lint-config-default` (обязательные `name` и `version`,
11
+ корректный формат имени и версии, типы всех разделов манифеста) и подключается
12
+ одной строкой через `extends`, чтобы не держать конфигурацию в каждом проекте
13
+ отдельно.
6
14
 
7
- ```sh
15
+ Формат пакета - JSON: это конвенция npm-package-json-lint, которая загружает
16
+ конфиги только в форматах JSON/YAML и не поддерживает JS-конфиги.
17
+
18
+ ## Установка
19
+
20
+ ```bash
8
21
  npm i @alexlit/config-npmlint -D
9
22
  ```
10
23
 
11
- ## Connection
24
+ ## Быстрый старт
25
+
26
+ ```json
27
+ // .npmpackagejsonlintrc.json
28
+ { "extends": "@alexlit/config-npmlint" }
29
+ ```
30
+
31
+ Готово: линтер работает с набором правил пакета.
32
+
33
+ ## Настройка
34
+
35
+ Перечислите нужные правила в своём `.npmpackagejsonlintrc.json` - собственные
36
+ ключи перекрывают одноимённые правила из `extends`. Значение правила: `"error"`,
37
+ `"warning"` или `"off"`.
12
38
 
13
39
  ```json
14
40
  // .npmpackagejsonlintrc.json
15
41
  {
16
- "extends": "@alexlit/config-npmlint"
42
+ "extends": "@alexlit/config-npmlint",
43
+
44
+ "rules": { "keywords-type": "warning", "require-version": "off" }
17
45
  }
18
46
  ```
47
+
48
+ Ошибку можно не снять, а ослабить - замените `"error"` на `"warning"`, чтобы
49
+ проблема не ломала сборку.
50
+
51
+ Кроме `package.json` пакет умеет проверять `package-lock.json` через
52
+ [lockfile-lint](https://github.com/lirantal/lockfile-lint) - бинарь уже входит в
53
+ зависимости пакета.
54
+
55
+ ## Полезные ссылки
56
+
57
+ - [npm-package-json-lint](https://github.com/tclindner/npm-package-json-lint)
58
+ - [Список правил](https://npmpackagejsonlint.org/docs/rules)
59
+ - [Конфигурация](https://npmpackagejsonlint.org/docs/configuration)
60
+ - [npm-package-json-lint-config-default](https://github.com/tclindner/npm-package-json-lint-config-default)
61
+ - [lockfile-lint](https://github.com/lirantal/lockfile-lint)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexlit/config-npmlint",
3
- "version": "10.1.0",
3
+ "version": "10.1.1",
4
4
  "private": false,
5
5
  "description": "npmlint config",
6
6
  "keywords": [
@@ -8,8 +8,8 @@
8
8
  "json",
9
9
  "lint",
10
10
  "npm",
11
- "package",
12
- "npmlint"
11
+ "npm-package-json-lint",
12
+ "package"
13
13
  ],
14
14
  "homepage": "https://github.com/alex-lit/lint-kit/tree/master/packages/config-npmlint#readme",
15
15
  "bugs": {