分享一篇《搭建本地知识库》的姿势
说起知识库这个东西,很多读者第一时间就会想到语雀或notion这种公有云平台。
当然,如果只是为了图省事,亦或需要在任何地方都能编辑或访问,那公有云方案确实是比较合适的选择。
但是,如果仅仅是为了记录自己的日常、并且有较高的私密性要求,那本地知识库搭建你绝对有必要了解一下。
先说结论吧:
- 优势:
- 绝对私密且没有账户密码管理负担(因为压根就没有管理后台一说);
- 不用担心平台跑路或者不维护了(实际上很多公有云平台都不保险,特别是国内的互联网环境下);
- 自由创作,写啥都可以,不用担心说了不恰当的话被封号;
- 自由定制(需要一些技术能力),需要啥功能自己自足,不需要办卡充会员;
- 劣势
- 只能自己电脑或私服访问,是否需要Everywhere取决你自己;
- 有一定技术门槛,但非常有限;
缘起
大概10年前吧,我第一次接触Markdonw
这种玩意,然后瞬间被以这种形式记录工作、日常的姿势深深吸引。包括后来搭建独立站,内容的载体都是一个个.md
文件,乃至你现在看到的这篇文章,原始内容仍然是…后来由于工作和生活需要,我基于 vuepress 1.x 在本地搭建了一个知识库,通过Github
托管内容。
这期间,由于 Vue3
的发布,很多基于V2版本的类库都出现了问题,比如当nodejs
升级了,就发现原来本地的服务就跪了。再后来,官方搞了个 vitepress ,然后就没有然后了(vuepress被正式晾在了一边,尽管现在有社区维护,但已经不好再作为第一选择了)!
由于本人技术出身,所以对于这类问题基本上都能处理,然而对于框架的新特性或者想要扩展一些额外的功能,就略显尴尬了…特别是到了今年,问题尤为明显。直到前两天,因为 tailwindcss
库导致和vuepress
某个依赖发生冲突然后直接启动不了了,所以就怒换了:Docusaurus
因为实在不想再继续为这老古董消耗时间和精力去折腾了,docusaurus 提供知识库基础能力的同时,还额外提供了比其他方案更多的优势
知识库套件
在换docusaurus之前,我想过升级成vitepress,因为在这种事情上,越少折腾越好。但后来发现:把vuepress迁移到vitepress并不容易
同样是体力活,索性一把换到位。于是最终选择了React
解决方案
关于docusaurus的使用方法,请读者移步到他们的 官方文档,毕竟人家已经写的很详细了,这里确实没必要再做搬运工…
1、通过create-docusaurus生成目标站点
nlx create-docusaurus@latest MarsNotes classic --typescript
注意:这里的nlx
是全局ni的命令,没有装ni的可以根据自己需要换其他的,比如:yarn create xxx
效果是一样的。当然这一步官方有详细的指北
额外的依赖,建议都安装一下:
ni @docusaurus/plugin-ideal-image @easyops-cn/docusaurus-search-local docusaurus-plugin-image-zoom
插件的配置和作用,对应到github的readme都有,请自行取用…
2、配置说明
把vuepress迁移到docusaurus比我想像中要容易的多,因为原来的知识库目录层级较多,有好几个大的分类。在vuepress托管时,愣是写了一大托node-fs
操作代码,用来生成目录树结构。但发现docusaurus对动态目录树是原生支持的,它的sidebars.ts
里有一段注释:”By default, Docusaurus generates a sidebar from the docs folder structure”
这就不要太爽好吧,所以在docusaurus配置知识库的目录树就异常简单了
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
const sidebars: SidebarsConfig = {
cate1Sidebar: [{type: 'autogenerated', dirName: 'cate1'}],
cate2Sidebar: [{type: 'autogenerated', dirName: 'cate2'}],
cate3Sidebar: [{type: 'autogenerated', dirName: 'cate3'}],
};
export default sidebars;
其中,cate1、cate2…这些,对应docs目录中的其他大类目录名称
3、一点优化
如果你打算通过以上方式构建本地知识库,通常情况下你应该并不希望一直开个黑窗口。所以此时可以再做些小优化:
- 后台运行:通过
pm2
把docusaurus start
放在后台; - 反向代理:选个你喜欢的域名,改本地hosts,使其支持通过这个域名访问到docusaurus服务,这一步可以通过
nginx
搞定
pm2的应用启动配置
{
"name": "my-wiki",
"script": "pnpm run build && pnpm run serve",
"cwd":"./my-wiki"
}
注意这里启动命令是run serve
而非run start
。是因为通过构建后运行,docusaurus会做服务端渲染。不过有个问题就是当你再新建或改动旧MD文件后,站点并不会更新,当然这个很好理解啦。所以如果需要时时更新,主要需要通过run start
启动(docusaurus start)
上Git
这点非常重要!
原因也很简单,因为你并不希望可能某天由于电脑进水了,然后资料丢失吧~
所以,选个你喜欢的git托管服务,创建一个private
仓库,把本地知识库保存在云端就完事了。
通过git托管,还有一个好处,就是你能看到自己的创作记录,当然这个实际效果取决于自己的commit
习惯。
对于技术人来说,这简直不要太滋润。如果是企业内部服务,也是可以考虑这么搞,正真的降本增效…
以上内容引用自个人独立站 托码特人 折腾笔记,如果觉得OK,欢迎点赞转发。
本作品采用《CC 协议》,转载必须注明作者和本文链接
你的博客站点是什么,U一个吗
就是加个友链