zirka 0.0.25 → 0.0.27
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 +40 -29
- package/package.json +70 -70
- package/typescript/base.json +12 -18
package/README.md
CHANGED
|
@@ -1,27 +1,34 @@
|
|
|
1
|
-
#
|
|
1
|
+
# zirka ⭐
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> зірка — _star_ in Ukrainian
|
|
4
|
+
|
|
5
|
+
**zirka** is a shared ESLint, Prettier, and TypeScript config. Configs are loaded lazily — only the plugins you enable are imported. `jiti` is bundled, so TypeScript config files just work.
|
|
6
|
+
|
|
7
|
+
---
|
|
4
8
|
|
|
5
9
|
## Install
|
|
6
10
|
|
|
7
11
|
```sh
|
|
8
|
-
npm i -D
|
|
12
|
+
npm i -D zirka eslint prettier typescript
|
|
9
13
|
```
|
|
10
14
|
|
|
15
|
+
---
|
|
16
|
+
|
|
11
17
|
## Usage
|
|
12
18
|
|
|
13
19
|
### ESLint — `eslint.config.ts`
|
|
14
20
|
|
|
15
21
|
```ts
|
|
16
|
-
import {
|
|
22
|
+
import { RuleSeverity, styleguide } from "zirka";
|
|
17
23
|
|
|
18
24
|
const { eslintConfig } = styleguide({
|
|
19
25
|
browser: RuleSeverity.Error,
|
|
20
26
|
typescript: RuleSeverity.Error,
|
|
21
|
-
react: RuleSeverity.
|
|
22
|
-
next: RuleSeverity.
|
|
27
|
+
react: RuleSeverity.Error,
|
|
28
|
+
next: RuleSeverity.Error,
|
|
23
29
|
node: RuleSeverity.Off,
|
|
24
|
-
playwright: RuleSeverity.
|
|
30
|
+
playwright: RuleSeverity.Error,
|
|
31
|
+
ignores: [".next/**", "node_modules/**"],
|
|
25
32
|
});
|
|
26
33
|
|
|
27
34
|
export default eslintConfig;
|
|
@@ -30,10 +37,10 @@ export default eslintConfig;
|
|
|
30
37
|
### Prettier — `prettier.config.js`
|
|
31
38
|
|
|
32
39
|
```js
|
|
33
|
-
import { styleguide } from
|
|
40
|
+
import { styleguide } from "zirka";
|
|
34
41
|
|
|
35
42
|
const { prettierConfig } = styleguide({
|
|
36
|
-
prettier:
|
|
43
|
+
prettier: { tailwind: true }, // or just `true`
|
|
37
44
|
});
|
|
38
45
|
|
|
39
46
|
export default prettierConfig;
|
|
@@ -43,34 +50,38 @@ export default prettierConfig;
|
|
|
43
50
|
|
|
44
51
|
```json
|
|
45
52
|
{
|
|
46
|
-
"extends": "
|
|
53
|
+
"extends": "zirka/typescript"
|
|
47
54
|
}
|
|
48
55
|
```
|
|
49
56
|
|
|
57
|
+
---
|
|
58
|
+
|
|
50
59
|
## Options
|
|
51
60
|
|
|
52
|
-
| Option
|
|
53
|
-
|
|
|
54
|
-
| `browser`
|
|
55
|
-
| `node`
|
|
56
|
-
| `typescript`
|
|
57
|
-
| `react`
|
|
58
|
-
| `next`
|
|
59
|
-
| `playwright`
|
|
60
|
-
| `ignores`
|
|
61
|
-
| `additionalConfigs
|
|
62
|
-
| `prettier`
|
|
61
|
+
| Option | Type | Description |
|
|
62
|
+
| ------------------- | -------------------------------- | ------------------------------- |
|
|
63
|
+
| `browser` | `RuleSeverity` | Browser globals + base JS rules |
|
|
64
|
+
| `node` | `RuleSeverity` | Node.js globals |
|
|
65
|
+
| `typescript` | `RuleSeverity` | TypeScript-ESLint strict rules |
|
|
66
|
+
| `react` | `RuleSeverity` | React + JSX-a11y rules |
|
|
67
|
+
| `next` | `RuleSeverity` | Next.js rules |
|
|
68
|
+
| `playwright` | `RuleSeverity` | Playwright test rules |
|
|
69
|
+
| `ignores` | `string[]` | Glob patterns to ignore |
|
|
70
|
+
| `additionalConfigs` | `Linter.Config[]` | Extra flat config entries |
|
|
71
|
+
| `prettier` | `true \| { tailwind?: boolean }` | Enable Prettier config |
|
|
63
72
|
|
|
64
73
|
### `RuleSeverity`
|
|
65
74
|
|
|
66
|
-
| Value | Behaviour
|
|
67
|
-
| ----------- |
|
|
68
|
-
| `"error"` | All rules set to `error`
|
|
69
|
-
| `"warn"` | All rules set to `warn`
|
|
70
|
-
| `"default"` | Rules use their recommended severity as-is
|
|
71
|
-
| `"off"` | Config block skipped entirely (no import)
|
|
75
|
+
| Value | Behaviour |
|
|
76
|
+
| ----------- | ------------------------------------------ |
|
|
77
|
+
| `"error"` | All rules set to `error` |
|
|
78
|
+
| `"warn"` | All rules set to `warn` |
|
|
79
|
+
| `"default"` | Rules use their recommended severity as-is |
|
|
80
|
+
| `"off"` | Config block skipped entirely (no import) |
|
|
81
|
+
|
|
82
|
+
---
|
|
72
83
|
|
|
73
84
|
## Requirements
|
|
74
85
|
|
|
75
|
-
- Node ≥ 22
|
|
76
|
-
- eslint ^9 · prettier ^3 · typescript ^5 (peer deps)
|
|
86
|
+
- Node ≥ 22
|
|
87
|
+
- `eslint` ^9 · `prettier` ^3 · `typescript` ^5 (peer deps)
|
package/package.json
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "zirka",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "",
|
|
5
|
-
"license": "ISC",
|
|
6
|
-
"author": "",
|
|
7
|
-
"type": "module",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": {
|
|
10
|
-
"import": "./dist/styleguide.js",
|
|
11
|
-
"require": "./dist/styleguide.cjs"
|
|
12
|
-
},
|
|
13
|
-
"./typescript": "./typescript/base.json"
|
|
14
|
-
},
|
|
15
|
-
"types": "dist/styleguide.d.ts",
|
|
16
|
-
"files": [
|
|
17
|
-
"dist",
|
|
18
|
-
"typescript",
|
|
19
|
-
"types"
|
|
20
|
-
],
|
|
21
|
-
"scripts": {
|
|
22
|
-
"build": "tsup",
|
|
23
|
-
"check": "npm run fix && npm run typecheck",
|
|
24
|
-
"fix": "eslint . --fix",
|
|
25
|
-
"prepare": "husky"
|
|
26
|
-
},
|
|
27
|
-
"lint-staged": {
|
|
28
|
-
"!(*.ts|*.mts|*.cts|*.tsx|*.js|*.cjs|*.mjs|*.jsx)": "prettier --write --ignore-unknown",
|
|
29
|
-
"*.ts|*.mts|*.cts|*.tsx|*.js|*.cjs|*.mjs|*.jsx": "eslint --fix"
|
|
30
|
-
},
|
|
31
|
-
"dependencies": {
|
|
32
|
-
"@babel/eslint-parser": "^7.27.1",
|
|
33
|
-
"@babel/preset-env": "^7.27.2",
|
|
34
|
-
"@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
|
|
35
|
-
"@eslint-react/eslint-plugin": "^1.53.0",
|
|
36
|
-
"@eslint/js": "^9.27.0",
|
|
37
|
-
"@next/eslint-plugin-next": "^15.3.3",
|
|
38
|
-
"@types/eslint-plugin-jsx-a11y": "^6.10.0",
|
|
39
|
-
"@types/node": "^22.15.29",
|
|
40
|
-
"eslint-config-prettier": "^10.1.5",
|
|
41
|
-
"eslint-import-resolver-typescript": "^4.4.4",
|
|
42
|
-
"eslint-plugin-import": "^2.31.0",
|
|
43
|
-
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
44
|
-
"eslint-plugin-playwright": "^2.3.0",
|
|
45
|
-
"eslint-plugin-prettier": "^5.4.0",
|
|
46
|
-
"eslint-plugin-react-hooks": "^5.2.0",
|
|
47
|
-
"eslint-plugin-unicorn": "^59.0.1",
|
|
48
|
-
"globals": "^16.2.0",
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"prettier-plugin-tailwindcss": "^0.6.14",
|
|
52
|
-
"typescript-eslint": "^8.33.1"
|
|
53
|
-
},
|
|
54
|
-
"devDependencies": {
|
|
55
|
-
"eslint": "^9.27.0",
|
|
56
|
-
"husky": "^9.1.7",
|
|
57
|
-
"lint-staged": "^16.1.6",
|
|
58
|
-
"prettier": "^3.5.3",
|
|
59
|
-
"tsup": "^8.5.0",
|
|
60
|
-
"typescript": "^5.8.3"
|
|
61
|
-
},
|
|
62
|
-
"peerDependencies": {
|
|
63
|
-
"eslint": "^9.27.0",
|
|
64
|
-
"prettier": "^3.5.3",
|
|
65
|
-
"typescript": "^5.8.3"
|
|
66
|
-
},
|
|
67
|
-
"engines": {
|
|
68
|
-
"node": ">=22.16"
|
|
69
|
-
}
|
|
70
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "zirka",
|
|
3
|
+
"version": "0.0.27",
|
|
4
|
+
"description": "",
|
|
5
|
+
"license": "ISC",
|
|
6
|
+
"author": "",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/styleguide.js",
|
|
11
|
+
"require": "./dist/styleguide.cjs"
|
|
12
|
+
},
|
|
13
|
+
"./typescript": "./typescript/base.json"
|
|
14
|
+
},
|
|
15
|
+
"types": "dist/styleguide.d.ts",
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"typescript",
|
|
19
|
+
"types"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsup",
|
|
23
|
+
"check": "npm run fix && npm run typecheck",
|
|
24
|
+
"fix": "eslint . --fix",
|
|
25
|
+
"prepare": "husky"
|
|
26
|
+
},
|
|
27
|
+
"lint-staged": {
|
|
28
|
+
"!(*.ts|*.mts|*.cts|*.tsx|*.js|*.cjs|*.mjs|*.jsx)": "prettier --write --ignore-unknown",
|
|
29
|
+
"*.ts|*.mts|*.cts|*.tsx|*.js|*.cjs|*.mjs|*.jsx": "npx eslint --fix"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@babel/eslint-parser": "^7.27.1",
|
|
33
|
+
"@babel/preset-env": "^7.27.2",
|
|
34
|
+
"@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
|
|
35
|
+
"@eslint-react/eslint-plugin": "^1.53.0",
|
|
36
|
+
"@eslint/js": "^9.27.0",
|
|
37
|
+
"@next/eslint-plugin-next": "^15.3.3",
|
|
38
|
+
"@types/eslint-plugin-jsx-a11y": "^6.10.0",
|
|
39
|
+
"@types/node": "^22.15.29",
|
|
40
|
+
"eslint-config-prettier": "^10.1.5",
|
|
41
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
42
|
+
"eslint-plugin-import": "^2.31.0",
|
|
43
|
+
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
44
|
+
"eslint-plugin-playwright": "^2.3.0",
|
|
45
|
+
"eslint-plugin-prettier": "^5.4.0",
|
|
46
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
47
|
+
"eslint-plugin-unicorn": "^59.0.1",
|
|
48
|
+
"globals": "^16.2.0",
|
|
49
|
+
"jiti": "^2.6.1",
|
|
50
|
+
"prettier-plugin-packagejson": "^2.5.14",
|
|
51
|
+
"prettier-plugin-tailwindcss": "^0.6.14",
|
|
52
|
+
"typescript-eslint": "^8.33.1"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"eslint": "^9.27.0",
|
|
56
|
+
"husky": "^9.1.7",
|
|
57
|
+
"lint-staged": "^16.1.6",
|
|
58
|
+
"prettier": "^3.5.3",
|
|
59
|
+
"tsup": "^8.5.0",
|
|
60
|
+
"typescript": "^5.8.3"
|
|
61
|
+
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"eslint": "^9.27.0",
|
|
64
|
+
"prettier": "^3.5.3",
|
|
65
|
+
"typescript": "^5.8.3"
|
|
66
|
+
},
|
|
67
|
+
"engines": {
|
|
68
|
+
"node": ">=22.16"
|
|
69
|
+
}
|
|
70
|
+
}
|
package/typescript/base.json
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
"moduleResolution": "bundler",
|
|
14
|
-
"noEmit": true,
|
|
15
|
-
"typeRoots": ["../types", "../node_modules/@types"],
|
|
16
|
-
"resolveJsonModule": true
|
|
17
|
-
}
|
|
18
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"strict": true,
|
|
5
|
+
"esModuleInterop": true,
|
|
6
|
+
"skipLibCheck": true,
|
|
7
|
+
"forceConsistentCasingInFileNames": true,
|
|
8
|
+
"noFallthroughCasesInSwitch": true,
|
|
9
|
+
"noUncheckedIndexedAccess": true,
|
|
10
|
+
"resolveJsonModule": true
|
|
11
|
+
}
|
|
12
|
+
}
|