Skip to content

Commit 4e4f44b

Browse files
authored
refactor: better typescript integration (#26)
* fix: disable `no-unused-vars` rule in typescript config The `no-unused-vars` rule was causing false positives for variables in type declarations. * style: add no-multi-spaces rule * refactor: update module paths for eslint-config-vuetify fix: explicitly define exports refactor: reorganize type declarations and exports build: add tsconfig.json for TypeScript project configuration build: add missing type declaration files to package.json build: add tsconfig.json to package.json chore: remove tsconfig for distribution * chore: lockfile * style: add maxBOF option to no-multiple-empty-lines rule * chore: add global ignore for dist folder in eslint config
1 parent deb8178 commit 4e4f44b

7 files changed

+49
-11
lines changed

Diff for: index.js.mjs

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ import eslint from '@eslint/js'
44
import stylistic from '@stylistic/eslint-plugin'
55
import { defu } from 'defu'
66
import { loadAutoImports } from './utils/autoimports.mjs'
7+
import { globalIgnores } from 'eslint/config'
78

89
const autoImports = loadAutoImports()
910

1011
export default [
12+
globalIgnores(['dist/**'], 'ignore dist folder'),
1113
eslint.configs.recommended,
1214
...pluginVue.configs['flat/recommended'],
1315
{
@@ -57,7 +59,8 @@ export default [
5759
'@stylistic/eol-last': ['error', 'always'],
5860
'@stylistic/multiline-ternary': 'off',
5961
'@stylistic/no-extra-semi': 'error',
60-
'@stylistic/no-multiple-empty-lines': ['error', { 'max': 2, 'maxEOF': 0 }],
62+
'@stylistic/no-multiple-empty-lines': ['error', { 'max': 2, 'maxEOF': 0, 'maxBOF': 0 }],
63+
'@stylistic/no-multi-spaces': 'error',
6164
'@stylistic/no-trailing-spaces': 'error',
6265
'@stylistic/object-curly-spacing': ['error', 'always'],
6366
'@stylistic/quotes': ['error', 'single', {

Diff for: index.js.mjs.d.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import type { Linter } from 'eslint';
2+
declare const config: Linter.Config[];
3+
export default config;

Diff for: index.ts.mjs

+6
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,10 @@ import {
77
export default defineConfigWithVueTs([
88
vueTsConfigs.recommended,
99
...config,
10+
{
11+
// False positive for variables in type declarations
12+
rules: {
13+
'no-unused-vars': 'off',
14+
},
15+
},
1016
])

Diff for: index.ts.mjs.d.ts

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import type { Linter } from 'eslint';
2+
declare const config: Linter.Config[];
3+
export default config;

Diff for: package.json

+16
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,23 @@
66
"module": "index.ts.mjs",
77
"types": "types.d.ts",
88
"type": "module",
9+
"exports": {
10+
".": {
11+
"types": "./types.d.ts",
12+
"import": "./index.js.mjs"
13+
},
14+
"./index.js.mjs": {
15+
"types": "./types.d.ts",
16+
"import": "./index.js.mjs"
17+
},
18+
"./index.ts.mjs": {
19+
"types": "./types.d.ts",
20+
"import": "./index.ts.mjs"
21+
}
22+
},
923
"files": [
24+
"index.js.mjs.d.ts",
25+
"index.ts.mjs.d.ts",
1026
"index.js.mjs",
1127
"index.ts.mjs",
1228
"types.d.ts",

Diff for: tsconfig.json

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"compilerOptions": {
3+
"target": "ESNext",
4+
"module": "Node16",
5+
"moduleResolution": "Node16",
6+
"strict": true,
7+
"esModuleInterop": true,
8+
"skipLibCheck": true,
9+
"forceConsistentCasingInFileNames": true,
10+
"baseUrl": "./",
11+
"paths": {
12+
"*": ["types.d.ts", "index.js.mjs", "index.ts.mjs"]
13+
}
14+
},
15+
"include": ["**/*.ts", "**/*.d.ts"]
16+
}

Diff for: types.d.ts

+1-10
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
1-
import type { Linter } from 'eslint';
2-
31
declare module 'eslint-config-vuetify' {
2+
import type { Linter } from 'eslint';
43
const config: Linter.Config[];
54
export default config;
65
}
7-
8-
declare module './index.js.mjs' {
9-
const config: Linter.Config[];
10-
}
11-
12-
declare module './index.ts.mjs' {
13-
const config: Linter.Config[];
14-
}

0 commit comments

Comments
 (0)