feat(eslint): 新增缓存策略规则禁止直接调用 revalidatePath/revalidateTag
This commit is contained in:
@@ -63,6 +63,67 @@ const eslintConfig = defineConfig([
|
||||
"design-tokens/no-hardcoded-fonts": "error",
|
||||
},
|
||||
},
|
||||
// 缓存策略规则:禁止在 actions / route.ts 中直接调用 revalidatePath/revalidateTag
|
||||
{
|
||||
files: ["src/modules/**/actions*.ts", "src/app/api/**/route.ts", "src/i18n/actions*.ts"],
|
||||
rules: {
|
||||
"no-restricted-syntax": [
|
||||
"error",
|
||||
{
|
||||
selector: "CallExpression[callee.name='revalidatePath']",
|
||||
message:
|
||||
"使用 invalidateFor() 替代直接 revalidatePath(),参见 docs/architecture/004 缓存章节",
|
||||
},
|
||||
{
|
||||
selector: "CallExpression[callee.name='revalidateTag']",
|
||||
message:
|
||||
"使用 invalidateFor() 替代直接 revalidateTag(),参见 docs/architecture/004 缓存章节",
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
// 临时豁免:未迁移模块(下期逐模块移除)
|
||||
{
|
||||
files: [
|
||||
"src/i18n/actions*.ts",
|
||||
"src/modules/adaptive-practice/actions*.ts",
|
||||
"src/modules/announcements/actions*.ts",
|
||||
"src/modules/attendance/actions*.ts",
|
||||
"src/modules/audit/actions*.ts",
|
||||
"src/modules/course-plans/actions*.ts",
|
||||
"src/modules/diagnostic/actions*.ts",
|
||||
"src/modules/elective/actions*.ts",
|
||||
"src/modules/error-book/actions*.ts",
|
||||
"src/modules/exams/actions*.ts",
|
||||
"src/modules/grades/actions*.ts",
|
||||
"src/modules/homework/actions*.ts",
|
||||
"src/modules/invitation-codes/actions*.ts",
|
||||
"src/modules/leave-requests/actions*.ts",
|
||||
"src/modules/lesson-preparation/actions*.ts",
|
||||
"src/modules/messaging/actions*.ts",
|
||||
"src/modules/notifications/actions*.ts",
|
||||
"src/modules/onboarding/actions*.ts",
|
||||
"src/modules/proctoring/actions*.ts",
|
||||
"src/modules/questions/actions*.ts",
|
||||
"src/modules/rbac/actions*.ts",
|
||||
"src/modules/scheduling/actions*.ts",
|
||||
"src/modules/school/actions*.ts",
|
||||
"src/modules/settings/actions*.ts",
|
||||
"src/modules/standards/actions*.ts",
|
||||
"src/modules/textbooks/actions*.ts",
|
||||
"src/modules/users/actions*.ts",
|
||||
],
|
||||
rules: {
|
||||
"no-restricted-syntax": "off",
|
||||
},
|
||||
},
|
||||
// 豁免:shared/lib/cache/ 内部允许调用 revalidatePath/revalidateTag(invalidate.ts 内部实现)
|
||||
{
|
||||
files: ["src/shared/lib/cache/**/*.ts"],
|
||||
rules: {
|
||||
"no-restricted-syntax": "off",
|
||||
},
|
||||
},
|
||||
// Override default ignores of eslint-config-next.
|
||||
globalIgnores([
|
||||
// Default ignores of eslint-config-next:
|
||||
|
||||
Reference in New Issue
Block a user