@howells/lint 0.1.8 → 0.2.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/CONTEXT.md +8 -0
- package/MIGRATIONS.md +52 -10
- package/README.md +57 -17
- package/bin/run-manypkg-command.mjs +0 -0
- package/docs/adr/0001-stack-ultracite-and-react-doctor-on-oxlint-lane.md +34 -0
- package/oxlint/next.mjs +9 -1
- package/oxlint/react-doctor-rules.d.mts +8 -0
- package/oxlint/react-doctor-rules.mjs +14 -0
- package/oxlint/react.mjs +12 -1
- package/package.json +85 -61
package/CONTEXT.md
ADDED
package/MIGRATIONS.md
CHANGED
|
@@ -1,35 +1,51 @@
|
|
|
1
1
|
# Adoption Notes
|
|
2
2
|
|
|
3
|
-
Use these notes when replacing an existing ESLint, Prettier,
|
|
3
|
+
Use these notes when replacing an existing ESLint, Prettier, Oxlint/Oxfmt, or ad hoc Biome setup with `@howells/lint`.
|
|
4
4
|
|
|
5
5
|
## Primary rule
|
|
6
6
|
|
|
7
|
-
Do not migrate an old local lint philosophy into a new local
|
|
7
|
+
Do not migrate an old local lint philosophy into a new local override.
|
|
8
8
|
|
|
9
9
|
Pick the closest shared preset first. Only add local config after you can explain why the repo is a real exception.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Lane and preset selection
|
|
12
|
+
|
|
13
|
+
Choose one lane first, then choose the closest preset in that lane.
|
|
14
|
+
|
|
15
|
+
Biome lane:
|
|
12
16
|
|
|
13
17
|
- Node or non-React TypeScript: `@howells/lint/biome/core`
|
|
14
18
|
- React package or app without Next.js specifics: `@howells/lint/biome/react`
|
|
15
19
|
- Next.js app: `@howells/lint/biome/next`
|
|
16
20
|
|
|
21
|
+
Oxlint/Oxfmt lane:
|
|
22
|
+
|
|
23
|
+
- Node or non-React TypeScript: `@howells/lint/oxlint/core`
|
|
24
|
+
- React package or app without Next.js specifics: `@howells/lint/oxlint/react`
|
|
25
|
+
- Next.js app: `@howells/lint/oxlint/next`
|
|
26
|
+
|
|
17
27
|
If none of these fit cleanly, the likely answer is a new shared preset here, not a repo-specific fork.
|
|
18
28
|
|
|
19
29
|
## Migration steps
|
|
20
30
|
|
|
21
31
|
1. Add `@howells/lint` as a dev dependency.
|
|
22
32
|
2. Pin Node with `.node-version` set to `22.18.0` and `engines.node` set to `>=22.18.0`.
|
|
23
|
-
3. Replace `eslint`, `next lint`, `prettier`,
|
|
24
|
-
4. Replace
|
|
25
|
-
5. Remove direct `eslint`, `eslint-config-*`, `eslint-plugin-*`, `prettier`, `@biomejs/biome`, `oxlint`, `oxfmt`, `oxlint-tsgolint`, and `
|
|
33
|
+
3. Replace `eslint`, `next lint`, `prettier`, direct `biome`, or direct Oxlint/Oxfmt scripts with the chosen lane's package binaries.
|
|
34
|
+
4. Replace local lint config with a minimal config that only extends one shared preset from the chosen lane.
|
|
35
|
+
5. Remove direct `eslint`, `eslint-config-*`, `eslint-plugin-*`, `prettier`, `@biomejs/biome`, `oxlint`, `oxfmt`, `oxlint-tsgolint`, `ultracite`, `oxlint-plugin-react-doctor`, and `oxc-parser` dependencies once the project is green.
|
|
26
36
|
|
|
27
37
|
## Oxlint/Oxfmt opt-in
|
|
28
38
|
|
|
29
|
-
Biome remains the default migration target. Use Oxlint/Oxfmt only for projects that deliberately choose the
|
|
39
|
+
Biome remains the default migration target. Use Oxlint/Oxfmt only for projects that deliberately choose the Oxlint/Oxfmt lane. React and Next.js projects with real state, effects, architecture, or framework-boundary concerns are good candidates for that lane.
|
|
30
40
|
|
|
31
41
|
For an Oxlint/Oxfmt project, add `oxlint.config.ts` and `oxfmt.config.ts` using the exports from `@howells/lint`, then use:
|
|
32
42
|
|
|
43
|
+
- `@howells/lint/oxlint/core` for Node or non-React TypeScript
|
|
44
|
+
- `@howells/lint/oxlint/react` for React (Ultracite React + React Doctor)
|
|
45
|
+
- `@howells/lint/oxlint/next` for Next.js (react preset + Next.js rules)
|
|
46
|
+
|
|
47
|
+
Each React or Next preset is self-contained. Extend only the closest preset — do not stack `core`, `react`, and `next` together.
|
|
48
|
+
|
|
33
49
|
```json
|
|
34
50
|
{
|
|
35
51
|
"scripts": {
|
|
@@ -43,7 +59,9 @@ Do not run Biome and Oxlint/Oxfmt together indefinitely. If both are present dur
|
|
|
43
59
|
|
|
44
60
|
## Keep local config thin
|
|
45
61
|
|
|
46
|
-
The normal local config should
|
|
62
|
+
The normal local config should only extend the chosen lane's closest preset.
|
|
63
|
+
|
|
64
|
+
Biome lane:
|
|
47
65
|
|
|
48
66
|
```json
|
|
49
67
|
{
|
|
@@ -51,6 +69,17 @@ The normal local config should look like this:
|
|
|
51
69
|
}
|
|
52
70
|
```
|
|
53
71
|
|
|
72
|
+
Oxlint/Oxfmt lane:
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
import { defineConfig } from "oxlint";
|
|
76
|
+
import next from "@howells/lint/oxlint/next";
|
|
77
|
+
|
|
78
|
+
export default defineConfig({
|
|
79
|
+
extends: [next],
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
54
83
|
Acceptable local additions:
|
|
55
84
|
|
|
56
85
|
- repo-specific file includes or force-ignores for generated files that are unique to one project
|
|
@@ -59,7 +88,7 @@ Acceptable local additions:
|
|
|
59
88
|
|
|
60
89
|
Avoid:
|
|
61
90
|
|
|
62
|
-
- copying old ESLint rule customizations into
|
|
91
|
+
- copying old ESLint rule customizations into the new lane
|
|
63
92
|
- broad `linter.rules` sections to preserve team habit
|
|
64
93
|
- local wrapper configs like `base.json` or `library.json`
|
|
65
94
|
- repeating the same override across multiple repos
|
|
@@ -77,7 +106,9 @@ Do not normalize repeated local exceptions.
|
|
|
77
106
|
|
|
78
107
|
## Prefer scope in scripts
|
|
79
108
|
|
|
80
|
-
If one repo only needs a narrower target, prefer script-level scope
|
|
109
|
+
If one repo only needs a narrower target, prefer script-level scope.
|
|
110
|
+
|
|
111
|
+
Biome lane:
|
|
81
112
|
|
|
82
113
|
```json
|
|
83
114
|
{
|
|
@@ -88,4 +119,15 @@ If one repo only needs a narrower target, prefer script-level scope:
|
|
|
88
119
|
}
|
|
89
120
|
```
|
|
90
121
|
|
|
122
|
+
Oxlint/Oxfmt lane:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"scripts": {
|
|
127
|
+
"lint": "howells-ox-check apps/web packages/ui",
|
|
128
|
+
"lint:fix": "howells-ox-fix apps/web packages/ui"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
91
133
|
That is usually better than teaching the config about the repo layout.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# `@howells/lint`
|
|
2
2
|
|
|
3
|
-
Pinned Biome, Oxlint/Oxfmt, and
|
|
3
|
+
Pinned Biome, Oxlint/Oxfmt, Ultracite, and React Doctor presets for Howells projects.
|
|
4
4
|
|
|
5
5
|
The goal is not to invent a second lint philosophy. The goal is to:
|
|
6
6
|
|
|
@@ -8,6 +8,7 @@ The goal is not to invent a second lint philosophy. The goal is to:
|
|
|
8
8
|
- pin a single `oxlint` version
|
|
9
9
|
- pin a single `oxfmt` version
|
|
10
10
|
- pin a single `ultracite` version
|
|
11
|
+
- pin React Doctor's Oxlint plugin for React and Next.js projects on the Oxlint/Oxfmt lane
|
|
11
12
|
- pin a single `@manypkg/cli` version for monorepo consistency checks
|
|
12
13
|
- give every consumer the same small preset matrix
|
|
13
14
|
- discourage repo-local overrides unless the project has a genuinely unique constraint
|
|
@@ -50,7 +51,7 @@ Install the shared tooling:
|
|
|
50
51
|
pnpm add -D @howells/lint
|
|
51
52
|
```
|
|
52
53
|
|
|
53
|
-
Do not add `@biomejs/biome`, `oxlint`, `oxfmt`, `oxlint-tsgolint`, `ultracite`, or `@manypkg/cli` directly unless you are developing this package itself. They are pinned transitively here.
|
|
54
|
+
Do not add `@biomejs/biome`, `oxlint`, `oxfmt`, `oxlint-tsgolint`, `ultracite`, `oxlint-plugin-react-doctor`, `oxc-parser`, or `@manypkg/cli` directly unless you are developing this package itself. They are pinned transitively here.
|
|
54
55
|
|
|
55
56
|
## Biome Presets
|
|
56
57
|
|
|
@@ -100,9 +101,16 @@ Next.js app:
|
|
|
100
101
|
|
|
101
102
|
## Oxlint/Oxfmt Presets
|
|
102
103
|
|
|
103
|
-
Use this lane
|
|
104
|
+
Use this lane when a project wants Oxlint and Oxfmt instead of Biome. React and Next presets stack the relevant Ultracite Ox rules with [React Doctor](https://react.doctor) rules in one config.
|
|
104
105
|
|
|
105
|
-
|
|
106
|
+
Choose the closest preset:
|
|
107
|
+
|
|
108
|
+
- `@howells/lint/oxlint/core` for Node or non-React TypeScript
|
|
109
|
+
- `@howells/lint/oxlint/react` for React (Ultracite React + React Doctor recommended rules)
|
|
110
|
+
- `@howells/lint/oxlint/next` for Next.js (react preset + Next.js rules)
|
|
111
|
+
- `@howells/lint/oxlint/react-doctor-rules` for composing or disabling React Doctor rules in mixed workspaces
|
|
112
|
+
|
|
113
|
+
Node or non-React TypeScript:
|
|
106
114
|
|
|
107
115
|
```ts
|
|
108
116
|
import { defineConfig } from "oxlint";
|
|
@@ -113,16 +121,43 @@ export default defineConfig({
|
|
|
113
121
|
});
|
|
114
122
|
```
|
|
115
123
|
|
|
116
|
-
|
|
124
|
+
React package:
|
|
117
125
|
|
|
118
126
|
```ts
|
|
119
127
|
import { defineConfig } from "oxlint";
|
|
120
|
-
import core from "@howells/lint/oxlint/core";
|
|
121
128
|
import react from "@howells/lint/oxlint/react";
|
|
129
|
+
|
|
130
|
+
export default defineConfig({
|
|
131
|
+
extends: [react],
|
|
132
|
+
});
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Next.js app:
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
import { defineConfig } from "oxlint";
|
|
122
139
|
import next from "@howells/lint/oxlint/next";
|
|
123
140
|
|
|
124
141
|
export default defineConfig({
|
|
125
|
-
extends: [
|
|
142
|
+
extends: [next],
|
|
143
|
+
});
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Mixed monorepo with a Next.js app and Node-only packages:
|
|
147
|
+
|
|
148
|
+
```ts
|
|
149
|
+
import { defineConfig } from "oxlint";
|
|
150
|
+
import next from "@howells/lint/oxlint/next";
|
|
151
|
+
import { disabledReactDoctorRules } from "@howells/lint/oxlint/react-doctor-rules";
|
|
152
|
+
|
|
153
|
+
export default defineConfig({
|
|
154
|
+
extends: [next],
|
|
155
|
+
overrides: [
|
|
156
|
+
{
|
|
157
|
+
files: ["packages/**/*.ts"],
|
|
158
|
+
rules: disabledReactDoctorRules,
|
|
159
|
+
},
|
|
160
|
+
],
|
|
126
161
|
});
|
|
127
162
|
```
|
|
128
163
|
|
|
@@ -150,7 +185,9 @@ export default defineConfig({
|
|
|
150
185
|
|
|
151
186
|
## Package Scripts
|
|
152
187
|
|
|
153
|
-
|
|
188
|
+
Use scripts that match the lane the project has chosen.
|
|
189
|
+
|
|
190
|
+
Biome lane:
|
|
154
191
|
|
|
155
192
|
```json
|
|
156
193
|
{
|
|
@@ -162,26 +199,28 @@ Every package or single-package app should use this shape:
|
|
|
162
199
|
}
|
|
163
200
|
```
|
|
164
201
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
Prefer `howells-lint .` over raw `biome check` or long target lists. Use explicit script targets only when the package has a real scope constraint:
|
|
202
|
+
Oxlint/Oxfmt lane:
|
|
168
203
|
|
|
169
204
|
```json
|
|
170
205
|
{
|
|
171
206
|
"scripts": {
|
|
172
|
-
"lint": "howells-
|
|
173
|
-
"lint:fix": "howells-
|
|
207
|
+
"lint": "howells-ox-check .",
|
|
208
|
+
"lint:fix": "howells-ox-fix ."
|
|
174
209
|
}
|
|
175
210
|
}
|
|
176
211
|
```
|
|
177
212
|
|
|
178
|
-
|
|
213
|
+
The Oxlint/Oxfmt lane does not currently define a separate `lint:strict`; React Doctor's recommended rules are part of the normal Ox check.
|
|
214
|
+
|
|
215
|
+
Keep `lint` non-mutating. Put all write behavior in `lint:fix` or `format` so CI and local checks have the same semantics.
|
|
216
|
+
|
|
217
|
+
Prefer the package binaries over raw tool commands or long target lists. Use explicit script targets only when the package has a real scope constraint:
|
|
179
218
|
|
|
180
219
|
```json
|
|
181
220
|
{
|
|
182
221
|
"scripts": {
|
|
183
|
-
"lint": "howells-
|
|
184
|
-
"lint:fix": "howells-
|
|
222
|
+
"lint": "howells-lint apps/web packages/ui",
|
|
223
|
+
"lint:fix": "howells-format apps/web packages/ui"
|
|
185
224
|
}
|
|
186
225
|
}
|
|
187
226
|
```
|
|
@@ -207,7 +246,7 @@ A monorepo root should have:
|
|
|
207
246
|
"check": "pnpm lint && pnpm typecheck && pnpm test"
|
|
208
247
|
},
|
|
209
248
|
"devDependencies": {
|
|
210
|
-
"@howells/lint": "^0.
|
|
249
|
+
"@howells/lint": "^0.2.0"
|
|
211
250
|
}
|
|
212
251
|
}
|
|
213
252
|
```
|
|
@@ -283,3 +322,4 @@ This package wraps:
|
|
|
283
322
|
- [Oxlint configuration docs](https://oxc.rs/docs/guide/usage/linter/config-file-reference.html)
|
|
284
323
|
- [Oxfmt configuration docs](https://oxc.rs/docs/guide/usage/formatter/config-file-reference)
|
|
285
324
|
- [Ultracite configuration docs](https://www.ultracite.ai/configuration)
|
|
325
|
+
- [React Doctor docs](https://react.doctor/docs)
|
|
File without changes
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 0001. Stack Ultracite and React Doctor on the Oxlint/Oxfmt Lane
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Accepted
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
`@howells/lint` offers separate linting lanes. Projects choose the Biome lane or the Oxlint/Oxfmt lane; they do not run both indefinitely.
|
|
10
|
+
|
|
11
|
+
For React and Next.js projects on the Oxlint/Oxfmt lane, there are two useful rule sources:
|
|
12
|
+
|
|
13
|
+
- Ultracite's Oxlint presets, which provide broad JavaScript, TypeScript, React, accessibility, and framework rules.
|
|
14
|
+
- React Doctor's Oxlint plugin, which adds deeper React-specific rules for state, effects, architecture, performance, server boundaries, and framework behavior.
|
|
15
|
+
|
|
16
|
+
Some React Doctor rules overlap with Ultracite's React and accessibility rules. Filtering duplicates would reduce repeated diagnostics, but it would also require `@howells/lint` to maintain a reconciliation layer that could drift as either upstream package changes.
|
|
17
|
+
|
|
18
|
+
## Decision
|
|
19
|
+
|
|
20
|
+
For React and Next.js projects on the Oxlint/Oxfmt lane, stack the relevant Ultracite Oxlint presets with React Doctor rules in one preset:
|
|
21
|
+
|
|
22
|
+
- `@howells/lint/oxlint/react` extends `ultracite/oxlint/core` and `ultracite/oxlint/react`, then adds React Doctor's recommended rules through `oxlint-plugin-react-doctor`.
|
|
23
|
+
- `@howells/lint/oxlint/next` extends the React preset and `ultracite/oxlint/next`, then adds React Doctor's Next.js rules.
|
|
24
|
+
|
|
25
|
+
Do not filter overlapping rules by default.
|
|
26
|
+
|
|
27
|
+
## Consequences
|
|
28
|
+
|
|
29
|
+
Consumers get one Oxlint/Oxfmt lane preset for React and Next.js projects, with both Ultracite coverage and React Doctor coverage.
|
|
30
|
+
|
|
31
|
+
Some findings may be duplicate or near-duplicate when upstream rule sets overlap. This is acceptable because coverage is preferred over maintaining a local rule reconciliation matrix.
|
|
32
|
+
|
|
33
|
+
`@howells/lint` owns the pinned React Doctor Oxlint plugin and its parser compatibility dependency so consumer projects do not install them directly.
|
|
34
|
+
|
package/oxlint/next.mjs
CHANGED
|
@@ -1 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import { defineConfig } from "oxlint";
|
|
2
|
+
import { NEXTJS_RULES } from "oxlint-plugin-react-doctor";
|
|
3
|
+
import ultraciteNext from "ultracite/oxlint/next";
|
|
4
|
+
import react from "./react.mjs";
|
|
5
|
+
|
|
6
|
+
export default defineConfig({
|
|
7
|
+
extends: [react, ultraciteNext],
|
|
8
|
+
rules: NEXTJS_RULES,
|
|
9
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { OxlintConfig } from "oxlint";
|
|
2
|
+
|
|
3
|
+
type OxlintRules = NonNullable<OxlintConfig["rules"]>;
|
|
4
|
+
|
|
5
|
+
export const reactDoctorRecommendedRules: OxlintRules;
|
|
6
|
+
export const reactDoctorNextRules: OxlintRules;
|
|
7
|
+
export const reactDoctorRules: OxlintRules;
|
|
8
|
+
export const disabledReactDoctorRules: OxlintRules;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NEXTJS_RULES,
|
|
3
|
+
RECOMMENDED_RULES,
|
|
4
|
+
} from "oxlint-plugin-react-doctor";
|
|
5
|
+
|
|
6
|
+
export const reactDoctorRecommendedRules = RECOMMENDED_RULES;
|
|
7
|
+
export const reactDoctorNextRules = NEXTJS_RULES;
|
|
8
|
+
export const reactDoctorRules = {
|
|
9
|
+
...RECOMMENDED_RULES,
|
|
10
|
+
...NEXTJS_RULES,
|
|
11
|
+
};
|
|
12
|
+
export const disabledReactDoctorRules = Object.fromEntries(
|
|
13
|
+
Object.keys(reactDoctorRules).map((ruleName) => [ruleName, "allow"])
|
|
14
|
+
);
|
package/oxlint/react.mjs
CHANGED
|
@@ -1 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import { defineConfig } from "oxlint";
|
|
2
|
+
import { RECOMMENDED_RULES } from "oxlint-plugin-react-doctor";
|
|
3
|
+
import core from "ultracite/oxlint/core";
|
|
4
|
+
import ultraciteReact from "ultracite/oxlint/react";
|
|
5
|
+
|
|
6
|
+
export default defineConfig({
|
|
7
|
+
extends: [core, ultraciteReact],
|
|
8
|
+
jsPlugins: [
|
|
9
|
+
{ name: "react-doctor", specifier: "oxlint-plugin-react-doctor" },
|
|
10
|
+
],
|
|
11
|
+
rules: RECOMMENDED_RULES,
|
|
12
|
+
});
|
package/package.json
CHANGED
|
@@ -1,62 +1,86 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
2
|
+
"name": "@howells/lint",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Pinned Biome, Oxlint/Oxfmt, Ultracite, and React Doctor presets for Howells projects.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"packageManager": "pnpm@10.23.0",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=22.18.0"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"biome/*.json",
|
|
12
|
+
"oxfmt/*.d.mts",
|
|
13
|
+
"oxfmt/*.mjs",
|
|
14
|
+
"oxlint/*.d.mts",
|
|
15
|
+
"oxlint/*.mjs",
|
|
16
|
+
"bin/*.mjs",
|
|
17
|
+
"docs/**/*.md",
|
|
18
|
+
"CONTEXT.md",
|
|
19
|
+
"README.md",
|
|
20
|
+
"MIGRATIONS.md"
|
|
21
|
+
],
|
|
22
|
+
"bin": {
|
|
23
|
+
"howells-biome": "bin/howells-biome.mjs",
|
|
24
|
+
"howells-lint": "bin/howells-lint.mjs",
|
|
25
|
+
"howells-lint-strict": "bin/howells-lint-strict.mjs",
|
|
26
|
+
"howells-format": "bin/howells-format.mjs",
|
|
27
|
+
"howells-ox-check": "bin/howells-ox-check.mjs",
|
|
28
|
+
"howells-ox-fix": "bin/howells-ox-fix.mjs",
|
|
29
|
+
"howells-oxfmt": "bin/howells-oxfmt.mjs",
|
|
30
|
+
"howells-oxlint": "bin/howells-oxlint.mjs",
|
|
31
|
+
"howells-ultracite": "bin/howells-ultracite.mjs",
|
|
32
|
+
"howells-workspace-check": "bin/howells-workspace-check.mjs",
|
|
33
|
+
"howells-workspace-fix": "bin/howells-workspace-fix.mjs"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@biomejs/biome": "2.4.15",
|
|
37
|
+
"@manypkg/cli": "^0.25.1",
|
|
38
|
+
"oxc-parser": "0.133.0",
|
|
39
|
+
"oxfmt": "0.51.0",
|
|
40
|
+
"oxlint": "1.66.0",
|
|
41
|
+
"oxlint-plugin-react-doctor": "0.2.14",
|
|
42
|
+
"oxlint-tsgolint": "0.23.0",
|
|
43
|
+
"ultracite": "7.7.0"
|
|
44
|
+
},
|
|
45
|
+
"exports": {
|
|
46
|
+
"./package.json": "./package.json",
|
|
47
|
+
"./biome/core": "./biome/core.json",
|
|
48
|
+
"./biome/react": "./biome/react.json",
|
|
49
|
+
"./biome/next": "./biome/next.json",
|
|
50
|
+
"./oxfmt": {
|
|
51
|
+
"types": "./oxfmt/index.d.mts",
|
|
52
|
+
"default": "./oxfmt/index.mjs"
|
|
53
|
+
},
|
|
54
|
+
"./oxlint/core": {
|
|
55
|
+
"types": "./oxlint/core.d.mts",
|
|
56
|
+
"default": "./oxlint/core.mjs"
|
|
57
|
+
},
|
|
58
|
+
"./oxlint/react": {
|
|
59
|
+
"types": "./oxlint/react.d.mts",
|
|
60
|
+
"default": "./oxlint/react.mjs"
|
|
61
|
+
},
|
|
62
|
+
"./oxlint/next": {
|
|
63
|
+
"types": "./oxlint/next.d.mts",
|
|
64
|
+
"default": "./oxlint/next.mjs"
|
|
65
|
+
},
|
|
66
|
+
"./oxlint/react-doctor-rules": {
|
|
67
|
+
"types": "./oxlint/react-doctor-rules.d.mts",
|
|
68
|
+
"default": "./oxlint/react-doctor-rules.mjs"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"main": "index.js",
|
|
72
|
+
"scripts": {
|
|
73
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
74
|
+
},
|
|
75
|
+
"repository": {
|
|
76
|
+
"type": "git",
|
|
77
|
+
"url": "git+https://github.com/howells/lint.git"
|
|
78
|
+
},
|
|
79
|
+
"keywords": [],
|
|
80
|
+
"author": "",
|
|
81
|
+
"type": "commonjs",
|
|
82
|
+
"bugs": {
|
|
83
|
+
"url": "https://github.com/howells/lint/issues"
|
|
84
|
+
},
|
|
85
|
+
"homepage": "https://github.com/howells/lint#readme"
|
|
86
|
+
}
|