Skip to content

Commit e8b1e2f

Browse files
committed
Update eslint-config and eslint-plugin
1 parent 7ee9bf5 commit e8b1e2f

13 files changed

Lines changed: 1769 additions & 419 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
.DS_Store
12
node_modules
23
.turbo

.vscode/settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

packages/eslint-config/README.md

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,50 @@
11
# @byscripts/eslint-config
22

3-
Shared ESLint flat config for Vue 3 + TypeScript projects.
3+
Shared ESLint flat config for JavaScript, TypeScript, and Vue 3 projects.
44

55
## Install
66

7+
### Vue 3 + TypeScript (full config)
8+
79
```bash
8-
pnpm add -D @byscripts/eslint-config eslint
10+
pnpm add -D @byscripts/eslint-config eslint eslint-plugin-vue @vue/eslint-config-typescript @byscripts/eslint-plugin
911
```
1012

11-
The config references rules from `eslint-plugin-vue`, `typescript-eslint`, and `vue-eslint-parser`. These must be available at runtime. In a typical Vue + TypeScript project, they are already installed (via `@vue/eslint-config-typescript`, `eslint-plugin-vue`, etc.). If not, install them explicitly:
13+
```js
14+
// eslint.config.js
15+
import { vue } from "@byscripts/eslint-config/vue";
1216

13-
```bash
14-
pnpm add -D eslint-plugin-vue typescript-eslint vue-eslint-parser
17+
export default vue;
1518
```
1619

17-
## Usage
20+
### TypeScript only
21+
22+
```bash
23+
pnpm add -D @byscripts/eslint-config eslint
24+
```
1825

1926
```js
2027
// eslint.config.js
21-
import byscriptsConfig from "@byscripts/eslint-config";
28+
import { typescript } from "@byscripts/eslint-config/typescript";
2229

23-
export default [
24-
...byscriptsConfig,
25-
// your overrides here
26-
];
30+
export default typescript;
2731
```
2832

29-
## Dev
33+
### JavaScript only
3034

3135
```bash
32-
pnpm build # compile src/index.ts -> dist/index.mjs + dist/index.d.mts
33-
pnpm publish --access public # publish to npm (pnpm replaces workspace:* automatically)
36+
pnpm add -D @byscripts/eslint-config eslint
37+
```
38+
39+
```js
40+
// eslint.config.js
41+
import { javascript } from "@byscripts/eslint-config/javascript";
42+
43+
export default javascript;
3444
```
3545

3646
## Notes
3747

38-
- Built with `tsdown --dts`
3948
- Uses ESLint flat config (`defineConfig` from `eslint/config`, available since ESLint 9.22)
4049
- Peer dependency: `eslint ^9.22.0`
41-
- `@byscripts/eslint-plugin` is a regular dependency (installed automatically)
42-
- `eslint-plugin-vue`, `typescript-eslint`, and `vue-eslint-parser` must be available at runtime (usually already present in Vue + TS projects)
50+
- Vue-related dependencies (`eslint-plugin-vue`, `@vue/eslint-config-typescript`, `@byscripts/eslint-plugin`) are optional peer dependencies, only needed when using the Vue config
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { defineBuildConfig } from "obuild/config";
2+
3+
export default defineBuildConfig({
4+
entries: [
5+
{ type: "bundle", input: "src/javascript.ts" },
6+
{ type: "bundle", input: "src/typescript.ts" },
7+
{ type: "bundle", input: "src/vue.ts" },
8+
],
9+
});
Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@byscripts/eslint-config",
3-
"version": "0.4.0",
3+
"version": "0.5.0",
44
"repository": {
55
"url": "https://github.com/ByScripts/toolbox"
66
},
@@ -9,23 +9,47 @@
99
"dist"
1010
],
1111
"exports": {
12-
".": {
13-
"types": "./dist/index.d.mts",
14-
"default": "./dist/index.mjs"
12+
"./javascript": {
13+
"types": "./dist/javascript.d.mts",
14+
"default": "./dist/javascript.mjs"
15+
},
16+
"./typescript": {
17+
"types": "./dist/typescript.d.mts",
18+
"default": "./dist/typescript.mjs"
19+
},
20+
"./vue": {
21+
"types": "./dist/vue.d.mts",
22+
"default": "./dist/vue.mjs"
1523
}
1624
},
1725
"scripts": {
18-
"build": "tsdown --dts"
26+
"build": "obuild"
1927
},
2028
"dependencies": {
21-
"@byscripts/eslint-plugin": "workspace:*"
29+
"@eslint/js": "^10.0.1",
30+
"@typescript-eslint/utils": "^8.56.1",
31+
"typescript-eslint": "^8.56.1"
2232
},
2333
"peerDependencies": {
24-
"eslint": "^9.22.0"
34+
"eslint": "^9.22.0 || ^10.0.0",
35+
"@byscripts/eslint-plugin": "workspace:*",
36+
"@vue/eslint-config-typescript": "^14.7.0",
37+
"eslint-plugin-vue": "^10.8.0"
38+
},
39+
"peerDependenciesMeta": {
40+
"@byscripts/eslint-plugin": {
41+
"optional": true
42+
},
43+
"@vue/eslint-config-typescript": {
44+
"optional": true
45+
},
46+
"eslint-plugin-vue": {
47+
"optional": true
48+
}
2549
},
2650
"devDependencies": {
2751
"@tsconfig/node22": "^22.0.5",
28-
"tsdown": "^0.20.3"
52+
"obuild": "^0.4.31"
2953
},
3054
"license": "MIT"
3155
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { defineConfig } from "eslint/config";
2+
import js from "@eslint/js";
3+
4+
import { globalIgnores } from "eslint/config";
5+
6+
export default defineConfig(
7+
globalIgnores(["**/dist/**", "**/dist-ssr/**", "**/coverage/**"]),
8+
js.configs.recommended,
9+
);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { defineConfig } from "eslint/config";
2+
import tsEslint from "typescript-eslint";
3+
import javascriptConfig from "./javascript.js";
4+
5+
export default defineConfig(
6+
javascriptConfig,
7+
tsEslint.configs.strictTypeChecked,
8+
tsEslint.configs.stylisticTypeChecked,
9+
);
Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
1-
import { defineConfig } from "eslint/config";
2-
import byscriptsPlugins from "@byscripts/eslint-plugin";
1+
import vueBlockAttributeOrder from "@byscripts/eslint-plugin/vue-block-attribute-order";
2+
import typescriptConfig from "./typescript.js";
3+
import pluginVue from "eslint-plugin-vue";
4+
import {
5+
defineConfigWithVueTs,
6+
vueTsConfigs,
7+
} from "@vue/eslint-config-typescript";
38

4-
export default defineConfig([
9+
export default defineConfigWithVueTs(
10+
{
11+
name: "app/files-to-lint",
12+
files: ["**/*.{vue,ts,mts,tsx}"],
13+
},
14+
typescriptConfig,
15+
pluginVue.configs["flat/recommended-error"],
16+
vueTsConfigs.recommended,
517
{
618
plugins: {
719
byscripts: {
820
rules: {
9-
"vue-block-attribute-order": byscriptsPlugins.blockAttributeOrder,
21+
"vue-block-attribute-order": vueBlockAttributeOrder,
1022
},
1123
},
1224
},
@@ -84,4 +96,4 @@ export default defineConfig([
8496
"byscripts/vue-block-attribute-order": "error",
8597
},
8698
},
87-
]);
99+
);
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { defineBuildConfig } from "obuild/config";
2+
3+
export default defineBuildConfig({
4+
entries: [
5+
{
6+
type: "bundle",
7+
input: "src/vue-block-attribute-order.ts",
8+
},
9+
],
10+
});
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@byscripts/eslint-plugin",
3-
"version": "0.4.0",
3+
"version": "0.5.0",
44
"repository": {
55
"url": "https://github.com/ByScripts/toolbox"
66
},
@@ -9,20 +9,20 @@
99
"dist"
1010
],
1111
"exports": {
12-
".": {
13-
"types": "./dist/index.d.mts",
14-
"default": "./dist/index.mjs"
12+
"./vue-block-attribute-order": {
13+
"types": "./dist/vue-block-attribute-order.d.mts",
14+
"default": "./dist/vue-block-attribute-order.mjs"
1515
}
1616
},
1717
"scripts": {
18-
"build": "tsdown --dts"
18+
"build": "obuild"
1919
},
2020
"devDependencies": {
2121
"@tsconfig/node22": "^22.0.5",
22-
"tsdown": "^0.20.3"
22+
"obuild": "^0.4.31"
2323
},
2424
"peerDependencies": {
25-
"eslint": "^9.22.0"
25+
"eslint": "^9.22.0 || ^10.0.0"
2626
},
2727
"license": "MIT"
2828
}

0 commit comments

Comments
 (0)