Skip to content

Commit e83ef33

Browse files
committed
upgrade eslint configs and add import plugin
1 parent dab5002 commit e83ef33

File tree

5 files changed

+1298
-100
lines changed

5 files changed

+1298
-100
lines changed

.vscode/settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"eslint.experimental.useFlatConfig": true,
2+
"eslint.useFlatConfig": true,
33
"editor.formatOnSave": true,
44
"[javascript][typescript]": {
55
"editor.defaultFormatter": "esbenp.prettier-vscode",

eslint.config.js

Lines changed: 55 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,63 @@
1-
import foxkit from "eslint-config-foxkit/configs/base.js";
2-
import prettier from "eslint-config-prettier";
1+
import foxkit from "eslint-config-foxkit/flat.js";
2+
import prettierCfg from "eslint-config-prettier";
3+
import * as importPlugin from "eslint-plugin-import";
4+
import tsEslint from "typescript-eslint";
35

4-
const __dirname = new URL(".", import.meta.url).pathname.slice(0, -1);
6+
/**
7+
* Patch import plugin config with custom file extensions and configure rules
8+
* @type {import("typescript-eslint").ConfigWithExtends}
9+
*/
10+
const importCfg = {
11+
name: "import/custom-config",
12+
files: ["**/*.?(m)js", "**/*.ts"],
13+
extends: [importPlugin.flatConfigs.recommended],
14+
rules: {
15+
"sort-imports": "off",
16+
"import/order": "off",
17+
"import/no-unresolved": "off",
18+
"import/first": "warn",
19+
"import/newline-after-import": "warn",
20+
"import/consistent-type-specifier-style": ["error", "prefer-top-level"],
21+
"import/no-duplicates": "off",
22+
"import/no-useless-path-segments": "error",
23+
"import/no-self-import": "error",
24+
"import/no-default-export": "error"
25+
},
26+
languageOptions: {
27+
ecmaVersion: foxkit.base.languageOptions.ecmaVersion
28+
},
29+
settings: {
30+
"import/internal-regex": "^~\\/",
31+
"import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx"] },
32+
"import/resolver": {
33+
node: {
34+
extensions: [".js", ".mjs", ".cjs", ".jsx", ".ts", ".tsx"]
35+
}
36+
}
37+
}
38+
};
39+
40+
/**
41+
* Allows config files (such as this very file) to default export again
42+
* @type {import("typescript-eslint").ConfigWithExtends}
43+
*/
44+
const importConfigsCfg = {
45+
name: "import/configs-may-default-export",
46+
files: ["**/*.config.?(m)js"],
47+
rules: {
48+
"import/no-default-export": "off"
49+
}
50+
};
551

652
/**
753
* @see https://github.com/foxkit-js/eslint-config-foxkit/ for more information
854
*/
9-
export default [
55+
export default tsEslint.config([
1056
{ ignores: ["dist/**"] },
1157
foxkit.base,
1258
foxkit.typescript,
13-
foxkit.configureTS({ tsconfigRootDir: __dirname }),
14-
prettier
15-
];
59+
foxkit.configureTS({ tsconfigRootDir: import.meta.dirname }),
60+
importCfg,
61+
importConfigsCfg,
62+
prettierCfg
63+
]);

package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,12 @@
2727
"pre-commit": "pnpm nano-staged"
2828
},
2929
"devDependencies": {
30-
"@eslint/js": "^9.17.0",
30+
"@eslint/js": "^9.18.0",
3131
"@types/node": "^22.10.5",
32-
"eslint": "^9.17.0",
33-
"eslint-config-foxkit": "4.2.0",
34-
"eslint-config-prettier": "^9.1.0",
32+
"eslint": "^9.18.0",
33+
"eslint-config-foxkit": "5.0.1",
34+
"eslint-config-prettier": "^10.0.1",
35+
"eslint-plugin-import": "^2.31.0",
3536
"nano-staged": "^0.8.0",
3637
"prettier": "^3.4.2",
3738
"simple-git-hooks": "^2.11.1",

0 commit comments

Comments
 (0)