@santi020k/eslint-config-basic 3.5.2 → 3.5.4
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 +17 -0
- package/README.md +201 -6
- package/package.json +49 -49
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @santi020k/eslint-config-basic
|
|
2
2
|
|
|
3
|
+
## 3.5.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#134](https://github.com/santi020k/eslint-config-basic/pull/134) [`07cb188`](https://github.com/santi020k/eslint-config-basic/commit/07cb188c727606bf00b67928ac20e95c2201ddc6) Thanks [@santi020k](https://github.com/santi020k)! - Replace the minimal npm package READMEs with practical installation,
|
|
8
|
+
configuration, compatibility, and support guidance. The Basic package now
|
|
9
|
+
publishes the comprehensive root README instead of a short placeholder.
|
|
10
|
+
- Updated dependencies [[`07cb188`](https://github.com/santi020k/eslint-config-basic/commit/07cb188c727606bf00b67928ac20e95c2201ddc6)]:
|
|
11
|
+
- @santi020k/eslint-config-core@3.1.3
|
|
12
|
+
- @santi020k/eslint-config-typescript@3.1.5
|
|
13
|
+
|
|
14
|
+
## 3.5.3
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- [#132](https://github.com/santi020k/eslint-config-basic/pull/132) [`d92bcf4`](https://github.com/santi020k/eslint-config-basic/commit/d92bcf4e1591a18cdd1c2a84db556e8598cd293a) Thanks [@santi020k](https://github.com/santi020k)! - Create the umbrella GitHub Release and rolling major Action tag from the protected GitHub Actions release workflow, including a main-only recovery dispatch.
|
|
19
|
+
|
|
3
20
|
## 3.5.2
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,11 +1,206 @@
|
|
|
1
1
|
# @santi020k/eslint-config-basic
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
DX-first ESLint 10 flat config for JavaScript and TypeScript, with auto-detection
|
|
4
|
+
and opt-in framework packages.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
[Documentation](https://eslint.santi020k.com/) ·
|
|
7
|
+
[npm](https://www.npmjs.com/package/@santi020k/eslint-config-basic) ·
|
|
8
|
+
[Migration to v3](https://eslint.santi020k.com/guide/migration-v2-to-v3/)
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
[](https://github.com/santi020k/eslint-config-basic/actions/workflows/build.yml)
|
|
11
|
+
[](https://github.com/santi020k/eslint-config-basic/actions/workflows/codeql.yml)
|
|
12
|
+
[](https://www.npmjs.com/package/@santi020k/eslint-config-basic)
|
|
13
|
+
[](https://www.npmjs.com/package/@santi020k/eslint-config-basic)
|
|
14
|
+
[](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE)
|
|
10
15
|
|
|
11
|
-
|
|
16
|
+
## Quick start
|
|
17
|
+
|
|
18
|
+
Install the lean package and ESLint:
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
npm install -D eslint @santi020k/eslint-config-basic
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Create `eslint.config.mjs`:
|
|
25
|
+
|
|
26
|
+
```js
|
|
27
|
+
import { defineConfig } from '@santi020k/eslint-config-basic'
|
|
28
|
+
|
|
29
|
+
export default defineConfig()
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
That is the complete zero-config setup. It detects JavaScript, TypeScript,
|
|
33
|
+
runtime, and installed optional features relative to the config file, even when
|
|
34
|
+
an editor starts ESLint from another working directory.
|
|
35
|
+
|
|
36
|
+
For a framework, add its config package to the same install:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-react
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
For optional behavior, add only the corresponding feature packs:
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
npm install -D @santi020k/eslint-config-testing @santi020k/eslint-config-tools
|
|
46
|
+
npm install -D @santi020k/eslint-config-libraries
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
If install size is not a concern, the batteries-included package keeps the same
|
|
50
|
+
one-line config:
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
npm install -D eslint @santi020k/eslint-config-full
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```js
|
|
57
|
+
export { default } from '@santi020k/eslint-config-full/recommended'
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Why v3 changed dependency ownership
|
|
61
|
+
|
|
62
|
+
`@santi020k/eslint-config-basic` no longer installs every supported framework
|
|
63
|
+
and integration. Its production boundary is limited to the composer, core rules,
|
|
64
|
+
TypeScript support, and a small runtime utility. Frameworks and integrations are
|
|
65
|
+
optional peers loaded only when detected or selected.
|
|
66
|
+
|
|
67
|
+
This gives projects:
|
|
68
|
+
|
|
69
|
+
- fewer transitive dependencies and audit paths by default;
|
|
70
|
+
- no Angular, Expo, Storybook, GraphQL, Cypress, or Tailwind packages unless used;
|
|
71
|
+
- actionable errors naming an optional config package when it is missing;
|
|
72
|
+
- a full-package escape hatch for teams that prefer one dependency.
|
|
73
|
+
|
|
74
|
+
The lean security boundary is checked during release and has direct-dependency
|
|
75
|
+
budgets to prevent accidental growth.
|
|
76
|
+
|
|
77
|
+
## Custom configuration
|
|
78
|
+
|
|
79
|
+
Use the named factory when auto-detection needs an override:
|
|
80
|
+
|
|
81
|
+
```js
|
|
82
|
+
import { defineConfig } from '@santi020k/eslint-config-basic'
|
|
83
|
+
|
|
84
|
+
export default await defineConfig({
|
|
85
|
+
root: import.meta.dirname,
|
|
86
|
+
frameworks: { react: true },
|
|
87
|
+
strict: 'ci',
|
|
88
|
+
typescript: 'strict'
|
|
89
|
+
})
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Optional features require their granular category package:
|
|
93
|
+
|
|
94
|
+
```js
|
|
95
|
+
import { defineConfig } from '@santi020k/eslint-config-basic'
|
|
96
|
+
|
|
97
|
+
export default await defineConfig({
|
|
98
|
+
features: {
|
|
99
|
+
playwright: true,
|
|
100
|
+
prettier: true,
|
|
101
|
+
tailwind: true
|
|
102
|
+
}
|
|
103
|
+
})
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
The factory also accepts local flat-config overrides after the options object:
|
|
107
|
+
|
|
108
|
+
```js
|
|
109
|
+
import { defineConfig } from '@santi020k/eslint-config-basic'
|
|
110
|
+
|
|
111
|
+
export default await defineConfig({}, {
|
|
112
|
+
files: ['scripts/**/*.js'],
|
|
113
|
+
rules: { 'no-console': 'off' }
|
|
114
|
+
})
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Pass overrides that reference optional plugin rules directly to `defineConfig()`
|
|
118
|
+
whenever possible. The composer attaches each already-loaded plugin to the rule
|
|
119
|
+
block that needs it. An entry appended after `defineConfig()` has returned is
|
|
120
|
+
outside that attachment pass; wrap a dynamically assembled final array with
|
|
121
|
+
`attachReferencedPlugins()`:
|
|
122
|
+
|
|
123
|
+
```js
|
|
124
|
+
import {
|
|
125
|
+
attachReferencedPlugins,
|
|
126
|
+
defineConfig
|
|
127
|
+
} from '@santi020k/eslint-config-basic'
|
|
128
|
+
|
|
129
|
+
const generated = await defineConfig()
|
|
130
|
+
const lateOverrides = await loadProjectOverrides()
|
|
131
|
+
|
|
132
|
+
export default attachReferencedPlugins([...generated, ...lateOverrides])
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Direct calls from `eslint.config.*` automatically anchor dependency detection,
|
|
136
|
+
TypeScript, Tailwind, workspace packages, and `.gitignore` to that file. Set
|
|
137
|
+
`root` only when the intended project root differs from the config directory.
|
|
138
|
+
|
|
139
|
+
Type-aware projects can keep generated, template, or other out-of-project files
|
|
140
|
+
on syntax-only linting without importing `typescript-eslint`:
|
|
141
|
+
|
|
142
|
+
```js
|
|
143
|
+
export default await defineConfig({
|
|
144
|
+
root: import.meta.dirname,
|
|
145
|
+
typescript: {
|
|
146
|
+
untypedFiles: ['templates/**/*.ts']
|
|
147
|
+
}
|
|
148
|
+
})
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
TypeScript config files (`**/*.config.{ts,mts,cts}`) use this syntax fallback
|
|
152
|
+
automatically. Set `untypedFiles: false` to require type information everywhere.
|
|
153
|
+
|
|
154
|
+
## Package choice
|
|
155
|
+
|
|
156
|
+
| Package | Use it when | Dependency model |
|
|
157
|
+
| --- | --- | --- |
|
|
158
|
+
| `@santi020k/eslint-config-basic` | Default for applications and libraries | Lean core; frameworks and integrations are optional |
|
|
159
|
+
| `@santi020k/eslint-config-full` | Install simplicity matters more than footprint | Every supported framework and integration |
|
|
160
|
+
| `@santi020k/eslint-config-lite` | Existing v2 lite users | Deprecated v3 compatibility path; removed in v4 |
|
|
161
|
+
| `@santi020k/eslint-config-integrations` | Existing aggregate-package users | Deprecated v3 compatibility path; removed in v4 |
|
|
162
|
+
| Individual framework packages | Custom composition | One framework and its plugin set |
|
|
163
|
+
|
|
164
|
+
## CLI
|
|
165
|
+
|
|
166
|
+
```sh
|
|
167
|
+
npx @santi020k/eslint-config-basic init
|
|
168
|
+
npx @santi020k/eslint-config-basic explain no-console --file src/index.ts
|
|
169
|
+
npx @santi020k/eslint-config-basic doctor --fix
|
|
170
|
+
npx @santi020k/eslint-config-basic compatibility
|
|
171
|
+
npx @santi020k/eslint-config-basic config-types
|
|
172
|
+
npx @santi020k/eslint-config-basic migrate --to v3
|
|
173
|
+
npx @santi020k/eslint-config-basic baseline --preset pedantic
|
|
174
|
+
npx @santi020k/eslint-config-basic profile --max-warnings 0
|
|
175
|
+
npx @santi020k/eslint-config-basic snapshot
|
|
176
|
+
npx @santi020k/eslint-config-basic diff
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
`init` creates the zero-argument config. `explain` shows detection or traces an
|
|
180
|
+
effective rule, `doctor --fix` repairs safe setup issues with backups, and
|
|
181
|
+
`compatibility` validates runtime and peer ranges, while `config-types` checks
|
|
182
|
+
that editor-facing ESLint config declarations stay portable. The remaining
|
|
183
|
+
commands automate v3 migration, incremental strict-mode adoption, budgeted
|
|
184
|
+
performance profiling, and effective-rule change review.
|
|
185
|
+
|
|
186
|
+
## Compatibility
|
|
187
|
+
|
|
188
|
+
- Node.js: `>=22.19.0`
|
|
189
|
+
- ESLint: `^10.0.0`
|
|
190
|
+
- TypeScript: `>=5.0.0` when enabled
|
|
191
|
+
- Package managers: npm, pnpm, Yarn, and Bun
|
|
192
|
+
|
|
193
|
+
Packages in the `@santi020k/eslint-config-*` family use independent minor and
|
|
194
|
+
patch versions. Packages with the same major version are designed to work
|
|
195
|
+
together; use the latest release of each package within that major. Internal
|
|
196
|
+
dependency and peer ranges provide the exact machine-readable compatibility
|
|
197
|
+
requirements.
|
|
198
|
+
|
|
199
|
+
See the [v2 → v3 migration guide](https://eslint.santi020k.com/guide/migration-v2-to-v3/)
|
|
200
|
+
for package moves and copy-paste commands. The
|
|
201
|
+
[planned v4 removals](https://eslint.santi020k.com/guide/v4-removals/) page
|
|
202
|
+
tracks compatibility APIs that are deprecated during v3.
|
|
203
|
+
|
|
204
|
+
## License
|
|
205
|
+
|
|
206
|
+
MIT © [santi020k](https://santi020k.com). See [LICENSE](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@santi020k/eslint-config-basic",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.4",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"provenance": true
|
|
@@ -39,64 +39,64 @@
|
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@typescript-eslint/utils": "^8.70.1",
|
|
41
41
|
"semver": "^7.8.5",
|
|
42
|
-
"@santi020k/eslint-config-core": "^3.1.
|
|
43
|
-
"@santi020k/eslint-config-typescript": "^3.1.
|
|
42
|
+
"@santi020k/eslint-config-core": "^3.1.3",
|
|
43
|
+
"@santi020k/eslint-config-typescript": "^3.1.5"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/node": "^26.6.2",
|
|
47
47
|
"publint": "^0.3.24",
|
|
48
48
|
"tsup": "^8.5.1",
|
|
49
49
|
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
50
|
-
"@santi020k/eslint-config-angular": "^3.1.
|
|
51
|
-
"@santi020k/eslint-config-astro": "^3.1.
|
|
52
|
-
"@santi020k/eslint-config-
|
|
53
|
-
"@santi020k/eslint-config-
|
|
54
|
-
"@santi020k/eslint-config-formats": "^3.1.
|
|
55
|
-
"@santi020k/eslint-config-
|
|
56
|
-
"@santi020k/eslint-config-
|
|
57
|
-
"@santi020k/eslint-config-libraries": "^3.1.
|
|
58
|
-
"@santi020k/eslint-config-nest": "^3.1.
|
|
59
|
-
"@santi020k/eslint-config-next": "^3.1.
|
|
60
|
-
"@santi020k/eslint-config-nuxt": "^3.1.
|
|
61
|
-
"@santi020k/eslint-config-
|
|
62
|
-
"@santi020k/eslint-config-
|
|
63
|
-
"@santi020k/eslint-config-
|
|
64
|
-
"@santi020k/eslint-config-
|
|
65
|
-
"@santi020k/eslint-config-
|
|
66
|
-
"@santi020k/eslint-config-
|
|
67
|
-
"@santi020k/eslint-config-
|
|
68
|
-
"@santi020k/eslint-config-
|
|
69
|
-
"@santi020k/eslint-config-
|
|
70
|
-
"@santi020k/eslint-config-tools": "^3.1.
|
|
71
|
-
"@santi020k/eslint-config-
|
|
72
|
-
"@santi020k/eslint-config-
|
|
50
|
+
"@santi020k/eslint-config-angular": "^3.1.2",
|
|
51
|
+
"@santi020k/eslint-config-astro": "^3.1.4",
|
|
52
|
+
"@santi020k/eslint-config-expo": "^3.1.2",
|
|
53
|
+
"@santi020k/eslint-config-extensions": "^3.1.3",
|
|
54
|
+
"@santi020k/eslint-config-formats": "^3.1.3",
|
|
55
|
+
"@santi020k/eslint-config-hono": "^3.1.2",
|
|
56
|
+
"@santi020k/eslint-config-lit": "^3.1.2",
|
|
57
|
+
"@santi020k/eslint-config-libraries": "^3.1.3",
|
|
58
|
+
"@santi020k/eslint-config-nest": "^3.1.2",
|
|
59
|
+
"@santi020k/eslint-config-next": "^3.1.2",
|
|
60
|
+
"@santi020k/eslint-config-nuxt": "^3.1.2",
|
|
61
|
+
"@santi020k/eslint-config-preact": "^3.1.2",
|
|
62
|
+
"@santi020k/eslint-config-qwik": "^3.1.2",
|
|
63
|
+
"@santi020k/eslint-config-slidev": "^3.1.2",
|
|
64
|
+
"@santi020k/eslint-config-svelte": "^3.1.2",
|
|
65
|
+
"@santi020k/eslint-config-tanstack-start": "^3.1.2",
|
|
66
|
+
"@santi020k/eslint-config-testing": "^3.1.3",
|
|
67
|
+
"@santi020k/eslint-config-solid": "^3.1.2",
|
|
68
|
+
"@santi020k/eslint-config-vite": "^3.1.2",
|
|
69
|
+
"@santi020k/eslint-config-vue": "^3.1.2",
|
|
70
|
+
"@santi020k/eslint-config-tools": "^3.1.3",
|
|
71
|
+
"@santi020k/eslint-config-react-router": "^3.1.2",
|
|
72
|
+
"@santi020k/eslint-config-react": "^3.1.2"
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
75
|
"eslint": "^10.0.0",
|
|
76
76
|
"typescript": ">=5.0.0 <7.0.0",
|
|
77
|
-
"@santi020k/eslint-config-angular": "^3.1.
|
|
78
|
-
"@santi020k/eslint-config-astro": "^3.1.
|
|
79
|
-
"@santi020k/eslint-config-expo": "^3.1.
|
|
80
|
-
"@santi020k/eslint-config-
|
|
81
|
-
"@santi020k/eslint-config-
|
|
82
|
-
"@santi020k/eslint-config-hono": "^3.1.
|
|
83
|
-
"@santi020k/eslint-config-lit": "^3.1.
|
|
84
|
-
"@santi020k/eslint-config-libraries": "^3.1.
|
|
85
|
-
"@santi020k/eslint-config-nest": "^3.1.
|
|
86
|
-
"@santi020k/eslint-config-next": "^3.1.
|
|
87
|
-
"@santi020k/eslint-config-nuxt": "^3.1.
|
|
88
|
-
"@santi020k/eslint-config-preact": "^3.1.
|
|
89
|
-
"@santi020k/eslint-config-qwik": "^3.1.
|
|
90
|
-
"@santi020k/eslint-config-react": "^3.1.
|
|
91
|
-
"@santi020k/eslint-config-react-router": "^3.1.
|
|
92
|
-
"@santi020k/eslint-config-slidev": "^3.1.
|
|
93
|
-
"@santi020k/eslint-config-solid": "^3.1.
|
|
94
|
-
"@santi020k/eslint-config-
|
|
95
|
-
"@santi020k/eslint-config-
|
|
96
|
-
"@santi020k/eslint-config-testing": "^3.1.
|
|
97
|
-
"@santi020k/eslint-config-tools": "^3.1.
|
|
98
|
-
"@santi020k/eslint-config-vite": "^3.1.
|
|
99
|
-
"@santi020k/eslint-config-vue": "^3.1.
|
|
77
|
+
"@santi020k/eslint-config-angular": "^3.1.2",
|
|
78
|
+
"@santi020k/eslint-config-astro": "^3.1.4",
|
|
79
|
+
"@santi020k/eslint-config-expo": "^3.1.2",
|
|
80
|
+
"@santi020k/eslint-config-extensions": "^3.1.3",
|
|
81
|
+
"@santi020k/eslint-config-formats": "^3.1.3",
|
|
82
|
+
"@santi020k/eslint-config-hono": "^3.1.2",
|
|
83
|
+
"@santi020k/eslint-config-lit": "^3.1.2",
|
|
84
|
+
"@santi020k/eslint-config-libraries": "^3.1.3",
|
|
85
|
+
"@santi020k/eslint-config-nest": "^3.1.2",
|
|
86
|
+
"@santi020k/eslint-config-next": "^3.1.2",
|
|
87
|
+
"@santi020k/eslint-config-nuxt": "^3.1.2",
|
|
88
|
+
"@santi020k/eslint-config-preact": "^3.1.2",
|
|
89
|
+
"@santi020k/eslint-config-qwik": "^3.1.2",
|
|
90
|
+
"@santi020k/eslint-config-react": "^3.1.2",
|
|
91
|
+
"@santi020k/eslint-config-react-router": "^3.1.2",
|
|
92
|
+
"@santi020k/eslint-config-slidev": "^3.1.2",
|
|
93
|
+
"@santi020k/eslint-config-solid": "^3.1.2",
|
|
94
|
+
"@santi020k/eslint-config-svelte": "^3.1.2",
|
|
95
|
+
"@santi020k/eslint-config-tanstack-start": "^3.1.2",
|
|
96
|
+
"@santi020k/eslint-config-testing": "^3.1.3",
|
|
97
|
+
"@santi020k/eslint-config-tools": "^3.1.3",
|
|
98
|
+
"@santi020k/eslint-config-vite": "^3.1.2",
|
|
99
|
+
"@santi020k/eslint-config-vue": "^3.1.2"
|
|
100
100
|
},
|
|
101
101
|
"peerDependenciesMeta": {
|
|
102
102
|
"@santi020k/eslint-config-angular": {
|