::: info 提示
本项目处于早期开发阶段 (Early WIP),如有 bug 请多担待。
:::
本项目使用了 JavaScript
和 TypeScript
实现。
如果你想参与 VanBlog 开发,可以进群哦:
Vanblog 分为以下几个部分,构建后将整合到一个 docker
容器内:
website: Vanblog 默认的主题,使用了
nextjs
框架,有运行时。server: Vanblog 的后端服务,有运行时。
waline: Vanblog 内嵌的评论服务,有运行时。
admin: Vanblog 后台面板,打包后为静态页面,无运行时。
caddy: 作为对外的网关,按照规则反代上述几个服务,并提供全自动的 https。
打包后,启动关系如图:
本项目采用了 pnpm
作为包管理器,项目使用 monorepo(pnpm workspace)
组织和管理。
精简版目录结构:
bash├── docker-compose # docker-compose 编排
├── Dockerfile # Dockerfile
├── docs # 项目文档的代码
├── entrypoint.sh # 容器入口文件
├── LICENSE # 开源协议
├── package.json
├── packages # 代码主体
| ├── admin # 后台前端代码
| ├── server # 后端代码
| ├── waline # 内嵌 waline 评论系统
| └── website # 前台前端代码
├── README.md
└── pnpm-workspace.yaml # pnpm workspace 文件
只列出大体上框架级别的,一些细节就直接看代码吧。
开发之前,要有一个 mongodb
数据库。推荐用 docker
起一个:
bashdocker run --name mongodb-vanblog -d --restart unless-stopped \ -p 27017:27017 mongo
bashgit clone https://github.com/Mereithhh/vanblog.git
cd vanblog
pnpm i
在 packages/server
下,创建 config.yaml
文件,内容如下:
yamldatabase:
# 数据库连接
url: mongodb://localhost:27017/vanBlog?authSource=admin
static:
# 图床等静态文件保存的位置
path: /var/vanblog-dev/static
# 是否开启演示站模式,会限制很多权限
demo: 'false'
# waline 用的表名,会自动创建
waline:
db: waline
# 日志位置
log: /var/vanblog-dev/logs
在根目录下:
bash# 开发全部(前台、后台、server)
pnpm dev
# 前台为 3001 端口
# server 为 3000 端口
# 后台为 3002 端口
::: info VanBlog开发后台如果用到复制到剪切板相关的功能,可能需要开启 https
,请在 packages/admin/config/config.js
中的 https
改成 true
,再重启开发进程。
js devServer: { https: true, port: 3002 },
:::
必须要先启动 server:
bash# 端口 3000
pnpm dev:server
然后在启动前台后者后台
bash# 启动前台 端口 3001
pnpm dev:website
# 启动后台 端口 3002
pnpm dev:admin
根目录下:
bashpnpm docs:dev
端口号为: 8080
直接在根目录用 Dockerfile
打包就行,具体看下面第二点。
我一般会用 act 来做验证镜像,act 可以在本地运行 Github Actions
。
这个方法需要 .env
文件存放密钥,目前仅自用。
bashpnpm build:test
bash# 这个build server 是第一次打包镜像拿数据的,不写也行,那就得等启动容器后增量渲染生效了。
VAN_BLOG_BUILD_SERVER="https://some.vanblog-server.com"
docker build --build-arg VAN_BLOG_BUILD_SERVER=$VAN_BLOG_BUILD_SERVER -t mereith/van-blog:test .
已经有了对应的 github actions
,向远端推送 doc*
的 tag
会触发然后发布到项目官方。
有一键脚本可以在发版之后自动拷贝 changelog 并发布:
bashpnpm release-doc
本项目使用 standard-version 管理版本,并有了对应的 github actions
,执行下列命令会发布版本并触发流水线打包发版。
bashpnpm release pnpm release-doc
本文作者:任浪漫
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!