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/manager/view.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);
默认值修改
packages/frontend/core/src/desktop/dialogs/setting/general-setting/about/index.tsx 修改 113-114 行为:
packages/frontend/core/src/modules/editor-setting/schema.ts 修改第 23 行,改为:
fullWidthLayout: z.boolean().default(true),
packages/frontend/core/src/modules/i18n/entities/i18n.ts
第 23 行修改为:
function mapLanguageInfo(language: Language = 'zh-Hans'): LanguageInfo
init 方法修改为:
packages/common/infra/src/atom/settings.ts 33-35 行改为:
字体样式和大小
blocksuite/affine/blocks/code/src/styles.ts
删除 .affine-code-block-container 样式下的:font-size: var(–affine-font-xs);
并新增:tab-size: 2;
修改:.affine-code-block-container .inline-editor,font-family 改为: ‘Cascadia Code’,‘LXGW WenKai Screen’,‘Source Code Pro Semibold’,‘Microsoft YaHei’;
删除 .affine-code-block-container .line-number 中的 font-size: var(–affine-font-xs);
修改:packages/frontend/component/src/theme/global.css 在 :root 下新增:
|
|
修改:packages/frontend/apps/electron-renderer/src/app/global.css 新增:
|
|
自行构建 affine
我使用的 node js 的版本为:v20.19.0
构建 web:
构建 electron
需要先安装 rust,具体参考官网:https://www.rust-lang.org/tools/install,后续可通过如下脚本构建:
|
|
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