@nitra/cursor 1.3.3 → 1.3.5
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/bin/nitra-cursor.js +4 -8
- package/mdc/js-format.mdc +1 -1
- package/mdc/js-lint.mdc +102 -0
- package/mdc/nginx-default-tpl.mdc +10 -2
- package/mdc/{stylelint.mdc → style-lint.mdc} +2 -2
- package/package.json +4 -2
package/bin/nitra-cursor.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Завантажує cursor-правила з npm-пакету nitra-cursor у локальний репозиторій.
|
|
7
7
|
*
|
|
8
8
|
* Використання:
|
|
9
|
-
* npx @nitra/cursor
|
|
9
|
+
* `npx @nitra/cursor`
|
|
10
10
|
*
|
|
11
11
|
* Якщо у корені репозиторію немає nitra-cursor.json, він створюється автоматично
|
|
12
12
|
* з усіма правилами з каталогу mdc пакету (їх можна відредагувати після створення).
|
|
@@ -199,14 +199,10 @@ async function removeOrphanManagedRuleFiles(rulesDir, configRules) {
|
|
|
199
199
|
const names = await readdir(rulesDir)
|
|
200
200
|
const removed = []
|
|
201
201
|
for (const name of names) {
|
|
202
|
-
if (
|
|
203
|
-
|
|
202
|
+
if (name.endsWith('.mdc') && name.startsWith(RULE_PREFIX) && !expected.has(name)) {
|
|
203
|
+
await unlink(join(rulesDir, name))
|
|
204
|
+
removed.push(name)
|
|
204
205
|
}
|
|
205
|
-
if (expected.has(name)) {
|
|
206
|
-
continue
|
|
207
|
-
}
|
|
208
|
-
await unlink(join(rulesDir, name))
|
|
209
|
-
removed.push(name)
|
|
210
206
|
}
|
|
211
207
|
return removed.sort((a, b) => a.localeCompare(b))
|
|
212
208
|
}
|
package/mdc/js-format.mdc
CHANGED
package/mdc/js-lint.mdc
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Перевірка JavaScript коду
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
version: '1.2'
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Перевірка виконується за допомогою **oxlint** та **ESLint**.
|
|
8
|
+
|
|
9
|
+
У файлі `.vscode/extensions.json` мають бути рекомендації розширень:
|
|
10
|
+
|
|
11
|
+
```json title=".vscode/extensions.json"
|
|
12
|
+
{
|
|
13
|
+
"recommendations": [
|
|
14
|
+
"dbaeumer.vscode-eslint",
|
|
15
|
+
"github.vscode-github-actions",
|
|
16
|
+
"oxc.oxc-vscode"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
У кореневому `package.json` додай скрипт і залежність:
|
|
22
|
+
|
|
23
|
+
```json title="package.json"
|
|
24
|
+
"scripts": {
|
|
25
|
+
"lint-js": "oxlint --fix && bunx eslint --fix ."
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@nitra/eslint-config": "^3.0.7"
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
У `devDependencies` достатньо `@nitra/eslint-config` (залежності ESLint підтягуються разом із ним). **oxlint** і **eslint** у скриптах викликай через `bunx`; окремо не додавай пакети `oxlint` / `eslint`, якщо цього не вимагає ваш монорепо.
|
|
33
|
+
|
|
34
|
+
Додай workflow `.github/workflows/lint-js.yml`:
|
|
35
|
+
|
|
36
|
+
```yaml
|
|
37
|
+
name: Lint JS
|
|
38
|
+
|
|
39
|
+
on:
|
|
40
|
+
push:
|
|
41
|
+
branches:
|
|
42
|
+
- dev
|
|
43
|
+
paths:
|
|
44
|
+
- '**/*.js'
|
|
45
|
+
- '**/*.mjs'
|
|
46
|
+
- '**/*.cjs'
|
|
47
|
+
- '**/*.jsx'
|
|
48
|
+
- '**/*.ts'
|
|
49
|
+
- '**/*.tsx'
|
|
50
|
+
- '**/*.vue'
|
|
51
|
+
- '**/eslint.config.*'
|
|
52
|
+
|
|
53
|
+
pull_request:
|
|
54
|
+
branches:
|
|
55
|
+
- dev
|
|
56
|
+
|
|
57
|
+
concurrency:
|
|
58
|
+
group: ${{ github.ref }}-${{ github.workflow }}
|
|
59
|
+
cancel-in-progress: true
|
|
60
|
+
|
|
61
|
+
jobs:
|
|
62
|
+
eslint:
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
steps:
|
|
65
|
+
- uses: actions/checkout@v4
|
|
66
|
+
|
|
67
|
+
- uses: oven-sh/setup-bun@v2
|
|
68
|
+
|
|
69
|
+
- name: Cache Bun dependencies
|
|
70
|
+
uses: actions/cache@v4
|
|
71
|
+
with:
|
|
72
|
+
path: |
|
|
73
|
+
~/.bun/install/cache
|
|
74
|
+
node_modules
|
|
75
|
+
key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }}
|
|
76
|
+
restore-keys: |
|
|
77
|
+
${{ runner.os }}-bun-
|
|
78
|
+
|
|
79
|
+
- name: Install dependencies
|
|
80
|
+
run: bun install --frozen-lockfile
|
|
81
|
+
|
|
82
|
+
- name: Eslint
|
|
83
|
+
run: |
|
|
84
|
+
bunx oxlint
|
|
85
|
+
bunx eslint .
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Без дублювання CI:** якщо в `.github/workflows` уже є `lint.yml` з тими самими кроками `oxlint` або `eslint`, видали зайвий workflow — лінт JS має виконуватися в одному місці.
|
|
89
|
+
|
|
90
|
+
У корені проєкту має бути `eslint.config.js` із розподілом директорій за типом коду:
|
|
91
|
+
|
|
92
|
+
```javascript title="eslint.config.js"
|
|
93
|
+
import { getConfig } from '@nitra/eslint-config'
|
|
94
|
+
|
|
95
|
+
export default [
|
|
96
|
+
...getConfig({
|
|
97
|
+
node: ['npm']
|
|
98
|
+
})
|
|
99
|
+
]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
У монорепо пакети з Vite (frontend) вкажи в секції `vue`, решту — у секції `node` у виклику `getConfig`.
|
|
@@ -66,7 +66,7 @@ server {
|
|
|
66
66
|
}
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
Тобто в ньому не потрібно щоб було жодного proxy_pass секціі і інших опцій для
|
|
69
|
+
Тобто в ньому не потрібно щоб було жодного proxy_pass секціі і інших опцій для proxy.
|
|
70
70
|
|
|
71
71
|
Якщо в файлі вже були proxy_pass секції, то їх логіку потрібно перенести до HTTPRoute в k8s.
|
|
72
72
|
|
|
@@ -87,10 +87,19 @@ spec:
|
|
|
87
87
|
type: ReplaceFullPath
|
|
88
88
|
replaceFullPath: /$PUBLIC_PATH/
|
|
89
89
|
statusCode: 301
|
|
90
|
+
- matches:
|
|
91
|
+
- path:
|
|
92
|
+
type: PathPrefix
|
|
93
|
+
value: /$PUBLIC_PATH/
|
|
94
|
+
backendRefs:
|
|
95
|
+
- name: $SERVICE_NAME
|
|
96
|
+
port: 8080
|
|
90
97
|
```
|
|
91
98
|
|
|
92
99
|
де $PUBLIC_PATH підставляється з ini файлу з dev середовища, а якщо для інших середовищ відрізняється то підставляється в kustomization.ya,l відповідні значення з ini середовища.
|
|
93
100
|
|
|
101
|
+
В $SERVICE_NAME повинно бути вказано ім'я сервісу, яке буде використовуватися в k8s.
|
|
102
|
+
|
|
94
103
|
В Dockerfile потрібно додати команду для стиснення файлів, які потім використовуватимуться з `gzip_static on`:
|
|
95
104
|
|
|
96
105
|
```dockerfile
|
|
@@ -111,7 +120,6 @@ RUN NAMES=$(sed -nE '/^\s*[#;]/d; /^\s*$/d; s/^\s*([A-Za-z_][A-Za-z0-9_]*)\s*=.*
|
|
|
111
120
|
|
|
112
121
|
Якщо у конфігураційних файлах *.ini є змінні які відсутні в default.conf.template, то їх потрібно вилучити.
|
|
113
122
|
|
|
114
|
-
|
|
115
123
|
в файлі .vscode/extensions.json є налаштування для NGINX Configuration Language Support:
|
|
116
124
|
|
|
117
125
|
```json title=".vscode/extensions.json"
|
|
@@ -4,7 +4,7 @@ alwaysApply: true
|
|
|
4
4
|
version: '1.0'
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
В файлі .vscode/extensions.json є налаштування для офіційного плагіну:
|
|
8
8
|
|
|
9
9
|
```json title=".vscode/extensions.json"
|
|
10
10
|
{
|
|
@@ -32,7 +32,7 @@ version: '1.0'
|
|
|
32
32
|
"lint-style": "stylelint '**/*.{css,scss,vue}' --fix",
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@nitra/stylelint-config": "^1.
|
|
35
|
+
"@nitra/stylelint-config": "^1.4.0"
|
|
36
36
|
},
|
|
37
37
|
"stylelint": {
|
|
38
38
|
"extends": "@nitra/stylelint-config"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nitra/cursor",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.5",
|
|
4
4
|
"description": "CLI для завантаження cursor-правил Nitra у локальний репозиторій",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -31,5 +31,7 @@
|
|
|
31
31
|
"scripts": {
|
|
32
32
|
"test": "npx coverage-node test/index.js"
|
|
33
33
|
},
|
|
34
|
-
"
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=24"
|
|
36
|
+
}
|
|
35
37
|
}
|