Skip to content

Commit be6d7c5

Browse files
authored
Merge pull request #13 from hqwlkj/feature/eslint
fix(config): 添加 ESLint 配置和编辑器配置文件
2 parents 43f24de + c5d8c22 commit be6d7c5

41 files changed

Lines changed: 6043 additions & 963 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
indent_style = space
6+
indent_size = 2
7+
end_of_line = lf
8+
insert_final_newline = true
9+
trim_trailing_whitespace = true
10+
11+
[*.md]
12+
trim_trailing_whitespace = false

.github/workflows/lint.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Lint & Format Check
2+
3+
on:
4+
push:
5+
branches: [main, master]
6+
pull_request:
7+
branches: [main, master]
8+
9+
jobs:
10+
lint:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
15+
- uses: actions/setup-node@v4
16+
with:
17+
node-version: 20
18+
cache: npm
19+
20+
- run: npm ci
21+
22+
- name: Check formatting
23+
run: npm run format:check
24+
25+
- name: Check code quality
26+
run: npm run lint
27+
28+
- name: Type check
29+
run: npm run typecheck
30+
31+
- name: Run tests
32+
run: npm test

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
node_modules/
22
out/
3-
.vscode/
43
.DS_Store
54
*.vsix
65
.idea

.husky/pre-commit

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
npx --no -- lint-staged

.prettierignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
node_modules/
2+
out/
3+
dist/
4+
*.vsix
5+
package-lock.json
6+
.vscode-test/

.vscode/extensions.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"recommendations": [
3+
"dbaeumer.vscode-eslint",
4+
"esbenp.prettier-vscode",
5+
"editorconfig.editorconfig"
6+
]
7+
}

.vscode/settings.json

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"editor.formatOnSave": true,
3+
"editor.codeActionsOnSave": {
4+
"source.fixAll.eslint": "explicit"
5+
},
6+
"editor.defaultFormatter": "esbenp.prettier-vscode",
7+
8+
"[typescript]": {
9+
"editor.defaultFormatter": "esbenp.prettier-vscode"
10+
},
11+
"[javascript]": {
12+
"editor.defaultFormatter": "esbenp.prettier-vscode"
13+
},
14+
"[json]": {
15+
"editor.defaultFormatter": "esbenp.prettier-vscode"
16+
},
17+
"[jsonc]": {
18+
"editor.defaultFormatter": "esbenp.prettier-vscode"
19+
},
20+
"[markdown]": {
21+
"editor.defaultFormatter": "esbenp.prettier-vscode"
22+
},
23+
24+
"eslint.validate": ["typescript", "javascript"],
25+
26+
"files.eol": "\n",
27+
"files.trimTrailingWhitespace": true,
28+
"files.insertFinalNewline": true
29+
}

eslint.config.mjs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import eslint from "@eslint/js";
2+
import tseslint from "typescript-eslint";
3+
4+
export default tseslint.config(
5+
{
6+
ignores: ["node_modules/", "out/", "dist/", "*.vsix", ".vscode-test/"]
7+
},
8+
9+
eslint.configs.recommended,
10+
11+
...tseslint.configs.recommended,
12+
13+
{
14+
files: ["src/**/*.ts"],
15+
rules: {
16+
"@typescript-eslint/no-unused-vars": [
17+
"warn",
18+
{
19+
argsIgnorePattern: "^_",
20+
varsIgnorePattern: "^_",
21+
caughtErrorsIgnorePattern: "^_"
22+
}
23+
],
24+
"@typescript-eslint/no-explicit-any": "warn",
25+
"@typescript-eslint/explicit-function-return-type": "off",
26+
"@typescript-eslint/no-non-null-assertion": "warn",
27+
"@typescript-eslint/consistent-type-imports": "warn",
28+
29+
"no-console": "off",
30+
"no-debugger": "error",
31+
"prefer-const": "warn",
32+
"no-var": "error",
33+
eqeqeq: ["error", "always"],
34+
"no-return-await": "error",
35+
"require-await": "warn"
36+
}
37+
},
38+
39+
{
40+
files: ["src/tests/*.test.ts"],
41+
rules: {
42+
"@typescript-eslint/no-explicit-any": "off",
43+
"@typescript-eslint/no-non-null-assertion": "off"
44+
}
45+
}
46+
);

0 commit comments

Comments
 (0)