File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -201,15 +201,4 @@ npx eslint --cache "path/to/file.jsx" || true
201201
202202- 如果需要把所有文件问题导出并在本地用编辑器跳转,优先使用 JSON 输出并在 VS Code 中安装 ESLint 扩展加载 ` eslint-report.json ` 。
203203
204- ---
205-
206- ## 我在本次修复会话中记录的部分示例结果
207- (仅为会话快照,具体数字会随代码修改波动)
208-
209- - ` src/components/KeepAlive/index.jsx ` — 11 problems(曾为最高)
210- - ` src/components/stateless/ReMarkdown/index.jsx ` — 5 problems
211- - ` src/pages/chatgpt/index.jsx ` — 最初 5 problems,已在会话中修复多数
212-
213- ---
214-
215- 如需我把当前仓库的完整按文件问题统计(` eslint-by-file.txt ` )生成并提交到仓库根目录,回复“是”,我会立刻运行并把文件写入。
204+ ---
Original file line number Diff line number Diff line change 5050注意
5151- ` SENTRY_DSN ` 是前端运行时用来发送事件的 DSN;` SENTRY_AUTH_TOKEN ` 是 CI 用来上传 artifacts(source maps / releases)的私密 token,两者用途不同,不要混淆。
5252- 我们的 ` src/utils/sentry/index.js ` 会优先使用 ` process.env.SENTRY_DSN ` ,并允许在运行时代码中通过环境变量或构建时间注入替换。
53-
54- 如需我:
55- - 可以把这段内容合并到 ` README.md ` 的“部署”或“CI”节;或创建更详细的 ` docs/ ` 页面并添加示例 workflow(我可以代为修改)。
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 7575- 路径形态:一般为根路径 ` / ` 。
7676- 受影响点:
7777 - 如果 Vercel 使用 Webpack 构建,需要确保它执行的是 ` npm run build:production `
78- - 若 Vercel 构建阶段运行音视频压缩:会增加构建耗时;并且 Vercel 的缓存策略可能导致压缩收益不稳定
79-
80- ## 建议继续推进(未必已在当前仓库落地)
81-
82- > 下面是“包体/首包”治理的常见下一步方向,是否落地请以当前代码为准。
83-
84- ### A) CI 默认跳过音视频压缩(推荐)
85-
86- 动机:GitHub Actions/Vercel 的构建通常更希望“快且可重复”,而压缩属于离线资产加工,更适合:
87-
88- - 本地开发/专门的 asset pipeline 运行
89- - 或者只在需要更新素材时才运行(通过手动触发/环境变量强制)
90-
91- 建议策略:
92-
93- - CI 环境检测到 ` CI=true ` / ` GITHUB_ACTIONS=true ` / ` VERCEL=1 ` 时,跳过 ` optimize:media `
94- - 通过 ` OPTIMIZE_MEDIA=1 ` 强制开启
95-
96- ### B) 首包(app chunk)大依赖拆分
97-
98- 常见大头:
99-
100- - ` antd ` / ` @ant-design/icons ` (barrel import 容易把聚合入口带进首包)
101- - ` lucide-react ` (从包入口导入多个图标时,容易把图标集合带进首包)
102- - ` html2canvas ` (截图/PDF 导出这类能力不应进入首屏)
103- - ` react-markdown ` + ` remark/rehype ` + ` katex/highlight ` (仅 markdown 页面需要)
104-
105- 建议手段:
106-
107- - 图标改为“单文件导入”或“按图标模块导入”
108- - 将 ` html2canvas ` 、markdown/katex runtime 改为动态 import(按页面或按功能触发加载)
109- - 收敛路由 preload(避免重页面被预取进首包)
110-
111- ## 如何验证优化是否生效
112-
113- - 资源体积:对比 ` dist/ ` 目录中图片/音视频体积(尤其是 ` dist/static/js ` 与 ` dist/images ` 、` dist/audio ` )。
114- - Webpack performance:观察生产构建输出的 performance hints。
115- - 包体归因:使用 ` npm run analyze:build ` / ` npm run analyze:stats ` 生成 stats,再按 entrypoint/app chunk 追踪主要模块来源。
78+ - 若 Vercel 构建阶段运行音视频压缩:会增加构建耗时;并且 Vercel 的缓存策略可能导致压缩收益不稳定
Original file line number Diff line number Diff line change 62622 . (可选)若你同时维护了 ` src/components/index.ts ` :` npm run check:components-index ` 通过(避免漏加/写错导出路径)
63633 . ` npm run build:lib ` 成功(产物 + d.ts)
64644 . 如果该组件有样式(` .module.less/.css ` ),在消费侧能正常引入
65- 5 . 如果该组件依赖路由/i18n 等上下文,在 Storybook 里可正常预览(可选,但建议)
66-
67- ## 常见问题
68-
69- ### Q1: 为什么我新增了组件但打出来的 lib 里没有?
70-
71- 因为 ` vite.config.lib.ts ` 的入口是 ` src/lib/index.ts ` :
72-
73- - 你没在这里 export → Rollup 不会把它当作库 API 打包
74- - dts 插件也不会把它作为入口类型导出到 ` dist-lib/index.d.ts `
75-
76- ### Q2: 新增组件放在 ` src/components/OneTimePasscode/ ` 里,为何还要从 ` stateless/OneTimePasscode ` export?
77-
78- ` src/components/OneTimePasscode/ ` 这种目录在当前项目里主要是 ** Storybook 文档/演示(mdx/stories)** 。
79- 真正组件实现位于 ` src/components/stateless/OneTimePasscode/ ` ,所以库入口应该导出实现目录,而不是导出 docs。
80-
81- ### Q3: 以后这个文件会越来越大,怎么维护更舒服?
82-
83- 建议遵循两条简单规则:
84-
85- 1 . ** 只导出“要发布的公共 API”** (组件/类型/hooks),避免把 demo、页面级组件、内部路由壳导出。
86- 2 . ** 新增组件就顺手加一行 export + 跑 build: lib ** ,用构建作为“验收”。
87-
88- 如果后续你希望进一步自动化,可以新增一个脚本(可选):
89-
90- - 扫描 ` src/components/stateless/* ` 和 ` src/components/stateful/* `
91- - 生成(或校验)` src/components/index.ts `
92-
93- 但因为当前存在少量特殊导出(例如非 default 导出、注释掉的 export),完全自动生成需要先统一约定;否则更推荐“半自动校验”而不是强制重写文件。
65+ 5 . 如果该组件依赖路由/i18n 等上下文,在 Storybook 里可正常预览(可选,但建议)
You can’t perform that action at this time.
0 commit comments