Skip to content

Commit 7c2b74f

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

8 files changed

Lines changed: 65 additions & 24 deletions

File tree

packages/eslint-config/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Shared ESLint flat config for JavaScript, TypeScript, and Vue 3 projects.
77
### Vue 3 + TypeScript (full config)
88

99
```bash
10-
pnpm add -D @byscripts/eslint-config eslint eslint-plugin-vue @vue/eslint-config-typescript @byscripts/eslint-plugin
10+
pnpm add -D @byscripts/eslint-config jiti eslint eslint-plugin-vue @vue/eslint-config-typescript
1111
```
1212

1313
```js
@@ -20,7 +20,7 @@ export default vue;
2020
### TypeScript only
2121

2222
```bash
23-
pnpm add -D @byscripts/eslint-config eslint
23+
pnpm add -D @byscripts/eslint-config jiti eslint
2424
```
2525

2626
```js

packages/eslint-config/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@byscripts/eslint-config",
3-
"version": "0.5.0",
3+
"version": "0.6.0",
44
"repository": {
55
"url": "https://github.com/ByScripts/toolbox"
66
},

packages/eslint-config/src/vue.ts

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,8 @@ export default defineConfigWithVueTs(
1414
typescriptConfig,
1515
pluginVue.configs["flat/recommended-error"],
1616
vueTsConfigs.recommended,
17+
vueBlockAttributeOrder,
1718
{
18-
plugins: {
19-
byscripts: {
20-
rules: {
21-
"vue-block-attribute-order": vueBlockAttributeOrder,
22-
},
23-
},
24-
},
2519
rules: {
2620
"vue/block-order": ["error", { order: ["script", "template", "style"] }],
2721
"vue/block-lang": [
@@ -61,6 +55,10 @@ export default defineConfigWithVueTs(
6155
},
6256
],
6357
"vue/define-props-declaration": ["error", "type-based"],
58+
"vue/define-props-destructuring": [
59+
"error",
60+
{ destructure: "only-when-assigned" },
61+
],
6462
"vue/enforce-style-attribute": ["error", { allow: ["scoped", "module"] }],
6563
"vue/html-button-has-type": "error",
6664
"vue/html-comment-content-newline": [
@@ -71,17 +69,29 @@ export default defineConfigWithVueTs(
7169
},
7270
],
7371
"vue/html-comment-content-spacing": ["error", "always"],
72+
"vue/html-comment-indent": ["error", 2],
73+
"vue/max-props": ["error", { maxProps: 5 }],
74+
"vue/max-template-depth": ["error", { maxDepth: 7 }],
75+
"vue/next-tick-style": ["error", "promise"],
76+
// Enable if using I18n
77+
// "vue/no-bare-strings-in-template": "error",
7478
"vue/no-duplicate-attr-inheritance": "error",
79+
"vue/no-duplicate-class-names": "error",
7580
"vue/no-empty-component-block": "error",
81+
"vue/no-import-compiler-macros": "error",
82+
"vue/no-literals-in-template": "error",
7683
"vue/no-multiple-objects-in-class": "error",
84+
"vue/no-negated-v-if-condition": "error",
7785
"vue/no-ref-object-reactivity-loss": "error",
7886
"vue/no-static-inline-styles": "error",
7987
"vue/no-template-target-blank": "error",
8088
"vue/no-undef-components": [
8189
"error",
8290
{ ignorePatterns: ["RouterLink", "RouterView", "I18nT"] },
8391
],
92+
"vue/no-undef-directives": "error",
8493
"vue/no-undef-properties": "error",
94+
"vue/no-unused-emit-declarations": "error",
8595
"vue/no-unused-refs": "error",
8696
"vue/no-use-v-else-with-v-for": "error",
8797
"vue/no-useless-mustaches": "error",
@@ -91,9 +101,15 @@ export default defineConfigWithVueTs(
91101
"vue/prefer-define-options": "error",
92102
"vue/prefer-separate-static-class": "error",
93103
"vue/prefer-true-attribute-shorthand": "error",
104+
"vue/prefer-use-template-ref": "error",
105+
"vue/require-explicit-slots": "error",
94106
"vue/require-macro-variable-name": "error",
95-
"vue/valid-define-options": "error",
96-
"byscripts/vue-block-attribute-order": "error",
107+
"vue/require-typed-object-prop": "error",
108+
"vue/require-typed-ref": "error",
109+
"vue/slot-name-casing": ["error", "kebab-case"],
110+
"vue/static-class-names-order": "error",
111+
"vue/v-for-delimiter-style": ["error", "of"],
112+
"vue/v-on-handler-style": ["error", ["method", "inline-function"]],
97113
},
98114
},
99115
);
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
{
2-
"extends": "@tsconfig/node22/tsconfig.json"
2+
"extends": "@tsconfig/node22/tsconfig.json",
3+
"compilerOptions": {
4+
"declaration": true,
5+
"declarationMap": true
6+
}
37
}

packages/eslint-plugin/README.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,20 @@ Custom order via rule options:
2424
}]
2525
```
2626

27-
## Dev
27+
## Install
2828

2929
```bash
30-
pnpm build # compile src/ -> dist/index.mjs + dist/index.d.mts
31-
pnpm publish --access public # publish to npm
30+
pnpm add -D @byscripts/eslint-plugin eslint
31+
```
32+
33+
```js
34+
// eslint.config.js
35+
import vueBlockAttributeOrder from "@byscripts/eslint-plugin/vue-block-attribute-order";
36+
37+
export default [...yourOtherRules, vueBlockAttributeOrder];
3238
```
3339

3440
## Notes
3541

36-
- Built with `tsdown --dts`
37-
- Peer dependency: `eslint ^9.22.0`
42+
- Peer dependency: `eslint ^9.22.0 || ^10.0.0`
3843
- Requires `vue-eslint-parser` in the consumer project (for `parserServices.getDocumentFragment()`)

packages/eslint-plugin/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@byscripts/eslint-plugin",
3-
"version": "0.5.0",
3+
"version": "0.6.0",
44
"repository": {
55
"url": "https://github.com/ByScripts/toolbox"
66
},

packages/eslint-plugin/src/vue-block-attribute-order.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// eslint/block-attribute-order.ts
2-
import type { Rule } from "eslint";
1+
import type { Linter, Rule } from "eslint";
32

43
type AttributeOrder = Record<string, string[]>;
54

@@ -8,7 +7,7 @@ const DEFAULT_ORDER: AttributeOrder = {
87
style: ["lang", "scoped"],
98
};
109

11-
export default {
10+
const rule: Rule.RuleModule = {
1211
meta: {
1312
type: "layout",
1413
fixable: "code",
@@ -117,4 +116,17 @@ export default {
117116
},
118117
};
119118
},
120-
} satisfies Rule.RuleModule;
119+
};
120+
121+
export default {
122+
plugins: {
123+
byscripts: {
124+
rules: {
125+
"vue-block-attribute-order": rule,
126+
},
127+
},
128+
},
129+
rules: {
130+
"byscripts/vue-block-attribute-order": "error",
131+
},
132+
} satisfies Linter.Config;
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
{
2-
"extends": "@tsconfig/node22/tsconfig.json"
2+
"extends": "@tsconfig/node22/tsconfig.json",
3+
"compilerOptions": {
4+
"declaration": true,
5+
"declarationMap": true
6+
}
37
}

0 commit comments

Comments
 (0)