删除功能
怎样移除你用不到的模块。
每个可选模块都是一个垂直切片,下面每一份删除步骤都经过机器验证:
bun run verify:deletion 会在仓库的副本里逐个执行删除,并要求构建、类型检查和
单元测试全部通过。
通用步骤:
- 删除
src/features/<name>/。 - 删除它在
src/routes/下的路由。 - 从
src/core/db/schema.ts里删掉它那一行(如果它在以下文件里注册过,也一并 删掉:src/core/payment/handlers.ts/src/core/stats/handlers.ts/src/core/account/handlers.ts/src/core/jobs/handlers.ts/src/core/audit/handlers.ts/src/core/email/handlers.ts/src/core/user-detail/handlers.ts)。 - 删掉它的导航链接、仪表盘统计块和文案。
- 运行
bun run db:generate生成删表迁移,然后构建。
积分(Credits)
删除 src/features/credits/ 和 src/routes/_app/credits.tsx。从 schema 汇总文件、
payment、stats 和 user-detail 的 handlers 里各删一行,再删掉导航链接、仪表盘里的
积分统计、侧边栏底部的余额行(src/routes/_app.tsx 里 [feature: credits]
注释之间的部分),以及 src/config/plans.ts 里的 creditPacks 一节。
文件(Files)
删除 src/features/files/、src/routes/_app/files.tsx,以及两个
src/routes/api/files* 路由。删掉汇总文件里的那一行、account 和 user-detail 的
handler 行、导航链接、仪表盘统计,以及 wrangler.jsonc 里的 R2 绑定。
博客与文档
删除 src/features/content/、content/{blog,docs}/ 和
src/routes/_marketing/{blog,docs}/,再删掉博客/文档的导航链接(落地页上也有
指向文档的链接)。保留 mdx 插件、src/mdx.d.ts 和 content/legal/——服务条款和
隐私政策页面属于核心部分,要用到它们。
候补名单(Waitlist)
删除 src/features/waitlist/、src/routes/waitlist.tsx、
src/routes/_app/admin/waitlist.tsx 和 src/routes/api/v1/admin/waitlist.ts。
删掉汇总文件里的那一行、core/stats、core/user-detail 和 core/account 的
handler 行、后台导航项、src/routes/_app/admin/index.tsx 里的 waitlist.*
标签、src/config/app-config.ts 里的 waitlist 开关,以及读取这个开关的那些
行动号召分支。
通知(Notifications)
删除 src/features/notifications/。删掉汇总文件里的那一行、core/notify 和
core/account 的 handler 行,以及铃铛(src/routes/_app.tsx 里
[feature: notifications] 注释之间的部分——侧边栏顶部一行和移动端顶栏)。
src/core/notify/ 保留:没有注册任何接收端时,每一次 notify() 调用都是空操作。
分析(Analytics)
删除 src/features/analytics/、src/routes/api/ph/$.ts 和
src/config/app-config.ts 里的 analytics 块。从 core/payment、core/audit
和 core/account 的 handler 注册表里删掉它的行。它没有数据表,所以不需要迁移。
把 PostHog 的 key 留空就能关掉它,什么都不用删。
审计日志(Audit log)
删除 src/features/audit/、src/routes/_app/admin/audit.tsx 和
src/routes/api/v1/admin/audit.ts。从 schema 汇总文件以及 core/audit、
core/stats、core/user-detail、core/payment、core/account 和 core/jobs
的 handler 注册表里各删一行,再删掉后台导航链接。src/core/audit/ 保留:没有注册
任何接收端时,代码里每一次 audit() 调用都是空操作。
邮件日志(Email log)
删除 src/features/email-log/、src/routes/_app/admin/email-log.tsx 和
src/routes/api/v1/admin/emails.ts。从 schema 汇总文件以及 core/email、
core/stats、core/user-detail、core/account 和 core/jobs 的 handler
注册表里各删一行,再删掉后台导航链接。src/core/email/ 保留——发信照常工作,
只是投递事件没有接收端了。
反馈(Feedback)
删除 src/features/feedback/、src/routes/_app/admin/feedback.tsx 和
src/routes/api/v1/admin/feedback.ts。从 schema 汇总文件以及 core/stats 和
core/user-detail 的 handler 注册表里各删一行,再删掉
src/components/app-sidebar.tsx 里的后台导航项、用户菜单里的「帮助与反馈」
及其对话框(src/routes/_app.tsx 里 [feature: feedback] 注释之间的部分),
以及 src/routes/_app/admin/index.tsx 里的 feedback.* 标签。
推广分成(Affiliate)
删除 src/features/affiliate/、src/routes/_app/affiliate.tsx、
src/routes/_app/admin/affiliate.tsx 和推荐跳转路由 src/routes/r.$code.ts。
从 schema 汇总文件以及 core/payment、core/account、core/jobs、
core/stats、core/settings 和 core/authz 的 handler 注册表里各删一行。然后
剪掉以下位置的 [feature: affiliate] 块:src/components/app-sidebar.tsx
(用户侧和后台侧的导航项,外加 HandCoinsIcon 的 import)、通知铃铛的渲染器、
src/routes/_app/admin/index.tsx 里的指标标签、
src/features/auth/components/account-section.tsx 里的删除保护分支、设置页的分组
列表,以及 src/config/private-paths.ts。最后把 src/core/account/events.ts
里的保护码类型收窄回 'ACTIVE_SUBSCRIPTION'——已经没有任何地方会抛出
PENDING_PAYOUT 了。
ShipKit