@alexlit/lint-kit 214.4.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 +19 -16
- 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 +4 -3
- 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,53 +1,135 @@
|
|
|
1
|
+
[](https://www.npmjs.com/package/@alexlit/config-hooks)
|
|
2
|
+
[](https://npmx.dev/package/@alexlit/config-hooks)
|
|
3
|
+
[](LICENSE)
|
|
4
|
+
|
|
1
5
|
# Hooks Configuration
|
|
2
6
|
|
|
3
|
-
|
|
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`.
|
|
4
16
|
|
|
5
|
-
|
|
17
|
+
## Установка
|
|
18
|
+
|
|
19
|
+
```bash
|
|
6
20
|
npm i @alexlit/config-hooks -D
|
|
7
21
|
```
|
|
8
22
|
|
|
9
|
-
##
|
|
23
|
+
## Подключение
|
|
24
|
+
|
|
25
|
+
### 1. commitlint
|
|
10
26
|
|
|
11
|
-
|
|
27
|
+
```js
|
|
28
|
+
// commitlint.config.js
|
|
29
|
+
export default { extends: ['@alexlit/config-hooks/commitlint'] };
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Коммит с сообщением не по Conventional Commits будет отклонён.
|
|
12
33
|
|
|
13
|
-
|
|
14
|
-
// commitlint.config.js
|
|
15
|
-
export default { extends: ['@alexlit/config-hooks/commitlint'] };
|
|
16
|
-
```
|
|
34
|
+
### 2. lint-staged
|
|
17
35
|
|
|
18
|
-
|
|
36
|
+
```js
|
|
37
|
+
// lint-staged.config.js
|
|
38
|
+
import { defineConfig } from '@alexlit/config-hooks';
|
|
19
39
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
import { createLintStagedConfig } from '@alexlit/config-hooks';
|
|
40
|
+
export default defineConfig();
|
|
41
|
+
```
|
|
23
42
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
43
|
+
`defineConfig()` возвращает готовую карту «тип файла → команды»: при
|
|
44
|
+
`git commit` к изменённым файлам применяются только подходящие линтеры
|
|
45
|
+
(например, `.vue` - eslint + stylelint + prettier, `.md` - prettier +
|
|
46
|
+
markdownlint). Ниже - [настройка](#настройка-lint-staged).
|
|
27
47
|
|
|
28
|
-
|
|
29
|
-
{
|
|
30
|
-
'*.css': [], // disable existing rule
|
|
31
|
-
'*.yaml': ['echo "Hello, .yaml!"'], // custom rule
|
|
32
|
-
},
|
|
33
|
-
);
|
|
34
|
-
```
|
|
48
|
+
### 3. simple-git-hooks
|
|
35
49
|
|
|
36
|
-
|
|
50
|
+
Пропишите хуки в `package.json` и установите их:
|
|
37
51
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
*
|
|
2
|
+
* Создать конфигурацию lint-staged.
|
|
3
3
|
*
|
|
4
|
-
* @param {Record<string, boolean>} plugins
|
|
5
|
-
*
|
|
4
|
+
* @param {Record<string, boolean>} [plugins] - Включение и выключение линтеров
|
|
5
|
+
* (по умолчанию включены все)
|
|
6
|
+
* @param {Record<string, unknown>} [config] - Свои правила по паттернам:
|
|
7
|
+
* дополняют или переопределяют карту по умолчанию
|
|
6
8
|
*
|
|
7
|
-
* @returns {Record<string, unknown>}
|
|
9
|
+
* @returns {Record<string, unknown>} Карта «паттерн файла → команды»
|
|
8
10
|
*/
|
|
9
|
-
const
|
|
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 {
|
|
88
|
+
export { defineConfig };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alexlit/config-hooks",
|
|
3
|
-
"version": "
|
|
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
|
+
[](https://www.npmjs.com/package/@alexlit/config-htmllint)
|
|
2
|
+
[](https://npmx.dev/package/@alexlit/config-htmllint)
|
|
3
|
+
[](LICENSE)
|
|
4
|
+
|
|
1
5
|
# HTMLLint Configuration
|
|
2
6
|
|
|
3
|
-
|
|
7
|
+
Готовая конфигурация [linthtml](https://github.com/linthtml/linthtml) - линтера
|
|
8
|
+
HTML-разметки. Пакет объединяет рекомендованный базовый конфиг
|
|
9
|
+
`@linthtml/linthtml-config-recommended` с дополнительными правилами (в том числе
|
|
10
|
+
проверками доступности и стиля разметки), чтобы подключить линтер одной строкой
|
|
11
|
+
и не держать сотни строк настроек в каждом проекте.
|
|
12
|
+
|
|
13
|
+
## Установка
|
|
4
14
|
|
|
5
|
-
```
|
|
15
|
+
```bash
|
|
6
16
|
npm i @alexlit/config-htmllint -D
|
|
7
17
|
```
|
|
8
18
|
|
|
9
|
-
##
|
|
19
|
+
## Быстрый старт
|
|
20
|
+
|
|
21
|
+
```js
|
|
22
|
+
// linthtml.config.js
|
|
23
|
+
import { defineConfig } from '@alexlit/config-htmllint';
|
|
10
24
|
|
|
11
|
-
|
|
12
|
-
|
|
25
|
+
export default defineConfig();
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Готово: подключены рекомендованный конфиг, правила пакета и дефолтные опции
|
|
29
|
+
линтера.
|
|
13
30
|
|
|
14
|
-
|
|
15
|
-
// linthtml.config.js
|
|
16
|
-
import { createConfig } from '@alexlit/config-htmllint';
|
|
31
|
+
## Настройка
|
|
17
32
|
|
|
18
|
-
|
|
19
|
-
|
|
33
|
+
Аргумент `options` накладывается поверх значений по умолчанию: `rules` - shallow
|
|
34
|
+
merge, `extends` и `ignoreFiles` - конкатенация.
|
|
20
35
|
|
|
21
|
-
|
|
36
|
+
```js
|
|
37
|
+
// linthtml.config.js
|
|
38
|
+
import { defineConfig } from '@alexlit/config-htmllint';
|
|
22
39
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
import { createConfig } from '@alexlit/config-htmllint';
|
|
40
|
+
export default defineConfig({
|
|
41
|
+
'line-max-len-ignore-regex': false,
|
|
26
42
|
|
|
27
|
-
|
|
28
|
-
|
|
43
|
+
'rules': { 'indent-width': [true, 4], 'title-max-len': [true, 60] },
|
|
44
|
+
});
|
|
45
|
+
```
|
|
29
46
|
|
|
30
|
-
|
|
31
|
-
'indent-width': [true, 4],
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
```
|
|
47
|
+
## Миграция v1 → v2
|
|
35
48
|
|
|
36
|
-
|
|
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
|
-
*
|
|
2
|
+
* Создать конфигурацию linthtml.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
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
|
|
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.
|
|
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": "
|
|
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
|
-
|
|
1
|
+
[](https://www.npmjs.com/package/@alexlit/config-markdownlint)
|
|
2
|
+
[](https://npmx.dev/package/@alexlit/config-markdownlint)
|
|
3
|
+
[](LICENSE)
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
# Markdownlint Configuration
|
|
4
6
|
|
|
5
|
-
|
|
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
|
-
##
|
|
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,18 +1,61 @@
|
|
|
1
|
+
[](https://www.npmjs.com/package/@alexlit/config-npmlint)
|
|
2
|
+
[](https://npmx.dev/package/@alexlit/config-npmlint)
|
|
3
|
+
[](LICENSE)
|
|
4
|
+
|
|
1
5
|
# NPMLint Configuration
|
|
2
6
|
|
|
3
|
-
|
|
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
|
+
отдельно.
|
|
14
|
+
|
|
15
|
+
Формат пакета - JSON: это конвенция npm-package-json-lint, которая загружает
|
|
16
|
+
конфиги только в форматах JSON/YAML и не поддерживает JS-конфиги.
|
|
4
17
|
|
|
5
|
-
##
|
|
18
|
+
## Установка
|
|
6
19
|
|
|
7
|
-
```
|
|
20
|
+
```bash
|
|
8
21
|
npm i @alexlit/config-npmlint -D
|
|
9
22
|
```
|
|
10
23
|
|
|
11
|
-
##
|
|
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.
|
|
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
|
-
"
|
|
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": {
|