Affine 二开、构建指南
affine 是一款很不错的笔记软件,奈何 web 版加载速度实在慢的离谱,首屏有 70 多次请求,我是部署在家里的树莓派,内网穿透到美国,延迟比较大,我已经将静态文件放在美国的机器,避免回源,但依然很慢。
移除遥测和 sentry
修改 packages/frontend/track/src/mixpanel.ts 文件里的 createMixpanel 函数,原始文件如下:
|
|
直接删除第一个 if 即可,修改后代码如下:
修改 packages/frontend/core/src/components/telemetry/index.tsx 文件,原始代码如下:
仅保留 if 里面的逻辑即可,修改后如下:
以上修改,均是基于 v0.21.6 版本。
移除下载 app 的按钮
这个修改是最简单的,相关代码在:packages/frontend/core/src/modules/app-sidebar/views/app-download-button/index.tsx 这里,我们直接改为默认不展示即可,举个例子:
const [show, setShow] = useState(false);
这里,原始的值为 true;
字体使用 cdn 加载
修改 packages/frontend/core/src/blocksuite/extensions/font-config.ts 文件,原始内容如下:
将 environment.publicPath 改为你需要的 cdn 地址。
修改 packages/frontend/component/src/theme/fonts.css 将相对路径改为具体的 cdn 地址,举个例子:
将这里的第 4 行改为:
src: url(https://cdn.xxx.xxx/xxx/assets/Inter-VariableFont_slnt_wght.ttf);
自行构建 affine
这部分我目前还在探索,仅能构建 web,方法如下:
node js 的版本为:v20.19.0
js、css 使用 cdn 加载
首先,构建好 web,然后修改 selfhost.html,路径为:packages/frontend/apps/web/dist/selfhost.html
考虑将最后两行的引入的 js 放在 cdn
这两个 js 文件太大了,放在 cdn 可大幅提高访问速度。
nginx 静态资源不回源
这块在 Docker 安装 AFFiNE 里也有提到,这里再简单补充下,nginx 配置如下:
|
|
修改后,6s 内就可以加载完毕,而修改前,需要 30s 左右,修改后的代码:https://github.com/ijustyce/AFFiNE