Files
gaokao-volunteer-system/eslint.config.mjs
Frontend Developer fa7c22e8ed chore(s1): monorepo skeleton + 30-file prototype first commit
Sprint 1 G0 闸门通过 (pnpm install / typecheck / lint / build / turbo 全部 exit 0)

实际完成:
- T-A-01 monorepo 根骨架: pnpm-workspace.yaml + turbo.json + 根 package.json
- T-A-02 收编原型: apps/web/ 30 个 src/ 文件 (4948 行) 首次入库
- T-A-03 lint/format: eslint flat config (根 + apps/web) + prettier
- T-A-23 web-ci.yml: GitHub Actions 4-step CI (typecheck/lint/build/bundle)

勘误 (前置假设错误):
- 原型 4948 行 (不是 4114 行)
- 原型含 33 个 any + 16 个未用变量 (Sprint 2 修)
- 原型从未 commit, 用 cp -r + git add, 不是 git mv

推迟到 Sprint 2+:
- T-A-04/05 tsconfig packages 抽离
- T-A-06/07/08 design tokens 抽离
- T-A-09~13 5 基础组件

依赖隔离:
- .gitignore 加 11 行 monorepo 规则
- apps/web/.gitignore 补 .npm-cache/next-dev.log
- 删除 apps/web 内嵌 .git/ (cp -r 复制时携带)

验证:
- pnpm install: 1m55s, 456 packages
- typecheck: 0 errors
- lint: 0 errors, 49 warnings (any + unused)
- next build: 8 routes compiled, 9/9 static pages
- turbo run build: 1 successful, 12.9s
2026-07-03 09:22:03 +08:00

67 lines
1.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Flat config (ESLint 9)
import js from '@eslint/js'
import tseslint from 'typescript-eslint'
import reactPlugin from 'eslint-plugin-react'
import reactHooks from 'eslint-plugin-react-hooks'
import jsxA11y from 'eslint-plugin-jsx-a11y'
import nextPlugin from '@next/eslint-plugin-next'
export default [
{
ignores: [
'**/node_modules/**',
'**/.next/**',
'**/dist/**',
'**/build/**',
'**/coverage/**',
'**/playwright-report/**',
'**/test-results/**',
'**/.turbo/**',
'admin/**', // 后端 Python 项目,单独有 ruff + mypy
'data/**',
'scripts/**',
'tests/**',
'前端原型代码/**', // 兼容老路径
],
},
js.configs.recommended,
...tseslint.configs.recommended,
{
files: ['apps/web/**/*.{ts,tsx}'],
plugins: {
react: reactPlugin,
'react-hooks': reactHooks,
'jsx-a11y': jsxA11y,
'@next/next': nextPlugin,
},
languageOptions: {
ecmaVersion: 2024,
sourceType: 'module',
globals: {
React: 'readonly',
JSX: 'readonly',
},
},
settings: {
react: { version: '19.0' },
},
rules: {
...reactPlugin.configs.recommended.rules,
...reactHooks.configs.recommended.rules,
...jsxA11y.configs.recommended.rules,
...nextPlugin.configs.recommended.rules,
'react/react-in-jsx-scope': 'off', // React 19 自动 JSX runtime
'react/prop-types': 'off', // 用 TypeScript
'@typescript-eslint/no-unused-vars': [
'warn',
{ argsIgnorePattern: '^_', varsIgnorePattern: '^_' },
],
// Sprint 1 暂记为 warn原型 33 个 any 列入 Sprint 2 重构)
'@typescript-eslint/no-explicit-any': 'warn',
// React 19 + Next 16 的 setState-in-effect 警告
'react-hooks/set-state-in-effect': 'warn',
'no-console': ['warn', { allow: ['warn', 'error', 'info'] }],
},
},
]