arui-presets-lint 9.5.1 → 9.6.1

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/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ## 9.6.1
2
+
3
+ ### Patch Changes
4
+
5
+ - [#128](https://github.com/core-ds/arui-presets-lint/pull/128) [`bb55225`](https://github.com/core-ds/arui-presets-lint/commit/bb5522545b99f3ecc383f17f77dcfbcbfce91662) Thanks [@dmitrbrvsk](https://github.com/dmitrbrvsk)! - Для правила import-x/no-cycle задан maxDepth вместе с ignoreExternal, чтобы снизить время линта на больших графах импортов. В V9_MIGRATION_GUIDE описан компромисс и как переопределить правило в проекте
6
+
7
+ - Updated dependencies []:
8
+ - @alfalab/stylelint-core-vars@2.1.1
9
+
10
+ ## 9.6.0
11
+
12
+ ### Minor Changes
13
+
14
+ - [#125](https://github.com/core-ds/arui-presets-lint/pull/125) [`292ec32`](https://github.com/core-ds/arui-presets-lint/commit/292ec32d3f412dcb8f174256c73fe86b12951b02) Thanks [@dmitrbrvsk](https://github.com/dmitrbrvsk)! - В пресет stylelint добавлен плагин `stylelint-order` и правила `order/properties-order` и `order/order`.
15
+ За счёт них выравнивается порядок css свойств и выстраивается единообразный порядок вложенности в блоке.
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies []:
20
+ - @alfalab/stylelint-core-vars@2.1.1
21
+
1
22
  ## 9.5.1
2
23
 
3
24
  ### Patch Changes
@@ -78,6 +78,23 @@ export default defineConfig(eslintConfig, [
78
78
 
79
79
  Так же все правила в конфиге которые начинаються на `import/` нужно заменить на `import-x/`. Других изменений делать не нужно, новый плагин полностью совместим со старым.
80
80
 
81
+ **Производительность `import-x/no-cycle`.**
82
+ Правило «дорогое»: оно обходит зависимости, чтобы найти путь обратно к текущему файлу.
83
+ В пресете это задано в [`eslint/rules/imports.ts`](eslint/rules/imports.ts): по умолчанию включены **`ignoreExternal: true`** и **`maxDepth: 20`** (см. [документацию правила](https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-cycle.md)). Циклы длиннее этого порога ESLint не сообщит.
84
+ Если необходима проверка без ограничения глубины или другое значение, то переопределите правило в своём `eslint.config.mts`:
85
+
86
+ ```typescript
87
+ {
88
+ rules: {
89
+ 'import-x/no-cycle': ['error', { ignoreExternal: true, maxDepth: 50 }],
90
+ // или полная проверка без maxDepth (может сильно увеличить время линта):
91
+ // 'import-x/no-cycle': ['error', { ignoreExternal: true }],
92
+ // или отключить правило:
93
+ // 'import-x/no-cycle': 'off',
94
+ },
95
+ },
96
+ ```
97
+
81
98
  4. Набор правил eslint изменился - но многие правятся с помощью автофикса. Сделаем это!
82
99
 
83
100
  ```bash
@@ -165,7 +165,8 @@ export const importsConfig = {
165
165
  'import-x/no-self-import': 'error',
166
166
  // Запрещать циклические зависимости между модулями
167
167
  // https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-cycle.md
168
- 'import-x/no-cycle': ['error', { ignoreExternal: true }],
168
+ // maxDepth ограничивает глубину обхода графа импортов (без лимита правило сильно замедляет линтинг на больших проектах)
169
+ 'import-x/no-cycle': ['error', { ignoreExternal: true, maxDepth: 20 }],
169
170
  // Гарантировать отсутствие бесполезных сегментов пути
170
171
  // https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-useless-path-segments.md
171
172
  'import-x/no-useless-path-segments': ['error', { noUselessIndex: true }],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arui-presets-lint",
3
- "version": "9.5.1",
3
+ "version": "9.6.1",
4
4
  "description": "Config files for arui-apps",
5
5
  "author": "core-ds contributors",
6
6
  "license": "MIT",
@@ -35,6 +35,7 @@
35
35
  "lefthook": "2.1.6",
36
36
  "prettier": "3.8.3",
37
37
  "stylelint": "16.26.1",
38
+ "stylelint-order": "8.1.1",
38
39
  "typescript-eslint": "8.59.1"
39
40
  },
40
41
  "engines": {
@@ -51,6 +51,18 @@ declare const _default: {
51
51
  except: string[];
52
52
  ignore: string[];
53
53
  })[];
54
+ 'order/properties-order': string[];
55
+ 'order/order': ((string | {
56
+ type: string;
57
+ name: string;
58
+ selector?: undefined;
59
+ } | {
60
+ type: string;
61
+ selector: string;
62
+ name?: undefined;
63
+ })[] | {
64
+ severity: string;
65
+ })[];
54
66
  };
55
67
  plugins: string[];
56
68
  overrides: {
@@ -125,8 +125,39 @@ export default {
125
125
  ignore: ['after-comment'],
126
126
  },
127
127
  ],
128
+ // Задаёт порядок перечисленных свойств относительно друг друга
129
+ // https://github.com/hudochenkov/stylelint-order/blob/master/rules/properties-order/README.md
130
+ 'order/properties-order': ['position', 'z-index', 'top', 'right', 'bottom', 'left'],
131
+ // Требует порядок вложенности: декларации > @media > псевдоэлементы > псевдоклассы > &__ > вложенные классы
132
+ // https://github.com/hudochenkov/stylelint-order/blob/master/rules/order/README.md
133
+ 'order/order': [
134
+ [
135
+ 'declarations',
136
+ {
137
+ type: 'at-rule',
138
+ name: 'media',
139
+ },
140
+ {
141
+ type: 'rule',
142
+ selector: '^&::(before|after)',
143
+ },
144
+ {
145
+ type: 'rule',
146
+ selector: String.raw `^&:\w`,
147
+ },
148
+ {
149
+ type: 'rule',
150
+ selector: '^&_',
151
+ },
152
+ {
153
+ type: 'rule',
154
+ selector: '^.',
155
+ },
156
+ ],
157
+ { severity: 'warning' },
158
+ ],
128
159
  },
129
- plugins: ['@alfalab/stylelint-core-vars'],
160
+ plugins: ['stylelint-order', '@alfalab/stylelint-core-vars'],
130
161
  overrides: [
131
162
  {
132
163
  files: ['*.module.css'],