🌊

OceanPress_js

非常快速的从思源笔记本生成一个静态站点,直接访问 oceanpress.heartstack.space 即可使用
源码仓库: https://github.com/2234839/oceanPress_js
可以兼容 hexo : hexo-oceanpress (这里内容是基于旧版 OceanPress 生成的,但新版也可以)
logo

为什么开发OceanPress

我是一个理想化的人,我相信开发这个软件能够促进人们在「真正的互联网」分享自己笔记的文章,我相信这能够让中文互联网变得更美好
我经历过中国互联网最好的那个时代,我不希望那种互助精神就此消亡。
查看支持的特性 OceanPress插件

使用说明

web站点在线生成

直接访问 oceanpress.heartstack.space

配置项

详细配置见源码:https://github.com/siyuan-note/oceanpress/blob/main/apps/frontend/src/core/config.ts

配置s3

s3配置示例图

使用 cli 程序

安装与更新

需要提前准备好 node 运行环境 : 各种系统安装node
md
# 下载源码 git clone --depth=1 https://github.com/siyuan-note/oceanpress.git # 安装依赖 cd oceanpress/apps/frontend/ npm i -g pnpm pnpm install # 更新 git pull pnpm install # 查看命令提示,例如: pnpm cli server --help ----- Options: -c, --config 指定配置文件的位置 -h, --host web服务绑定到的地址 (default: "127.0.0.1") -p, --port web服务绑定到的端口 (default: "80") --cache 配置为 true 时开启缓存,默认为 false 不开启缓存 (default: "false")

生成静态站点

bash
# 运行cli程序 ,config 为配置文件地址,output为输出地址 # 配置文件可从在线网站生成 https://oceanpress.heartstack.space pnpm cli build --config "./store/configs" --output "./store/output"
生成静态站点的命令效果图

运行代理站点

在不开启缓存的情况下,用户每次刷新页面都是由OceanPress调用思源内核api即时生成的最新文档(速度会比较慢)
开启缓存后,每次请求所涉及的文档都会被缓存,不重启的情况下无法看到最新修改
md
pnpm cli server --config "./store/configs" ### 你应当能看到类似如下的输出 > [email protected] cli D:\code\oceanPress_js\apps\frontend > tsx ./src/cli.ts "server" "--config" "./store/configs" [ 'C:\\Program Files\\nodejs\\node.exe', 'D:\\code\\oceanPress_js\\apps\\frontend\\src\\cli.ts', 'server', '--config', './store/configs' ] Listening on :{"address":"127.0.0.1","family":"IPv4","port":80}
代理站点的效果图

11项关键特性

绿色表示完全可用 黄色表示部分可用 无色 ==​ 大饼
兼容思源绝大部分效果 🎉
全平台随用随走
基于node.js 的全平台运行能力
基于浏览器网页的适配、随用随走
基于 OceanPress插件的思源内运行
支持挂件
通过 OceanPress插件 对挂件生成快照,至少能看见预览效果(需要安装插件,只是能看...)
适配OceanPress的挂件支持,让一些挂件能够运行在静态网站上
一键部署
网页上传到自定义接(目前支持 s3)
基于 node.js 命令行自动编译、部署
生成chm单体文件,便于类似分发帮助文档这种需求
支持添加搜索引擎
SEO 友好,可以放心修改文章名称,移动块,不用担心分享的链接无法访问到内容(在笔记中删掉了那我没办法
通过 preload 来实现
基于块id的永久链接
仅支持文档块和标题块,否则体积过大
可读路径的302重写(不完全覆盖文档,在 head 中添加延时跳转,js弹窗提醒该文档已移动,浏览者可以选择不跳转继续阅读。)
上面方法无法定位的情况下通过文档名智能推荐
自动生成 sitemap.xml
更易于复制粘贴分享
许多网站的编辑器都是能够拉取图片的,但有一些的实现是网站后端进行 拉取(避免前端跨域无法拉取),所以部署到公网的文章可以直接选中片段粘贴图片,而内网的则不行
语义化的html结构
小、快、省
通过对输出html结构优化,能够输出体积更小,解析更快的源文件
可选通过cdn加载公共资源文件更节省服务器流量,更快的js、css加载速度
支持增量编译,编译速度很快
可选的图片优化、压缩、生成预览
支持生成 RSS,例如: 崮生精选.rss.xml
只需要在文档名后面加上.rss.xml 就会对文章内通过块引用和嵌入块查询到的块生成 rss.xml指向
配置功能
开放的 json 配置文件,便于自定义编译细节
插件功能
简洁的插件机制,可以轻松扩展想要的其他功能

架构设想

待办-准备进行的更新

浮窗功能
顶端导航链接
为嵌入块导航链接
memo显示
反链功能
空文档的子文档列表
数据库渲染(等稳定了再说)
优化html结构:修改li、ul 等的渲染实现,使其复制到其他编辑器依然能够正常解析
为标题块提供可复制的链接指向
github 工作流代码
这将总和 OceanPressSiYuan serverless ,在一个工作流中,可以非常简单的将 sy 源文档部署为 github 静态站点

开发相关-依赖治理

更新日志

v0.0.10

支持预览功能,依赖于 hono 优秀的多平台运行能力,我将 OceanPress cli程序的 运行代理站点 功能移植到了 web ui界面,
现在 web ui 可以在编译之前点击相关文档预览编译之后的效果了。
web ui 预览列表界面 运行效果
下一步我将开始完善 OceanPress 思源插件,将web ui内置到插件之中。
诸位新年快乐🎉

v0.0.9

支持 meilisearch issues/5

v0.0.8

添加自动暗黑模式 18 以后 6点以前 055a20de
修复代码块未高亮的问题 5afe5053
配置添加版本号,运行时将自动对比版本决定是否进行全量编译 972442d0
曾经实现了的功能,现在终于又回来了

preview.10

💥重磅更新为挂件生成快照
图片延迟加载功能
img 标签添加属性 loading="lazy"
更完善的增量编译功能
在文档 a 引用文档 b 的情况下
b发生变化也会触发a文档的编译
通过 OceanPress插件 对挂件生成快照,至少能看见预览效果(需要安装插件,只是能看...)
渲染嵌入块中的标题块后面的非标题块
fix 任意元素上悬停都显示文档标题

历史日志

2023 年更新日志