v0.17.4 (2026-06-20)
-
多语言(站点配置)
- 渲染前对
everkm.yaml的config整棵树做深度处理:模板全局变量__config与config(key=…)读到的均为当前语言下的最终值(含嵌套对象与数组)。 - 第一类
@i18n:<key>:继续引用语言包(__everkm/i18n/、主题与 extend 内 i18n 文件);无语言包时保留原引用并记录警告。 - 第二类翻译对象:配置内标量可写与语言包同构的结构(
_default+ 语言码字段),用于 Algoliaindex_name、外链url等不宜进语言包的字段。 - 移除 扁平兄弟 key 写法(如
index_name.en、url.zh);请改为翻译对象。 folders.breadcrumbs的title/url与config采用同一套解析规则。
- 渲染前对
-
默认排除
private- 正文渲染默认剔除
#privateTag 标记的内容块;posts()等列表默认排除 frontmatter 带private标签的文章。 - 预览时可设
EVERKM_PRIVATE=1临时查看 private 内容;导出始终排除。
- 正文渲染默认剔除
v0.17.3 (2026-06-17)
-
多语言
LangBundle扫描范围扩展:extend/templates、extend/dcard内的*.i18n.md/*.i18n.yaml与主题、__everkm/i18n合并(低 → 高:主题 → extend/templates → extend/dcard →__everkm/i18n)。
-
目录配置
everkm.yaml#folders新增url_id_suffix(默认true):设为false时非 index 文章 URL 为{slug}.html,不再追加-{id};与hash_scatter正交。
-
dCard
- 卡片支持更简洁的写法:在正文中单独占一行写
`dcard/卡片名`即可插入对应卡片,无需再写代码块或填写配置。例如`dcard/download`可直接展示下载块。
- 卡片支持更简洁的写法:在正文中单独占一行写
v0.17.2 (2026-06-15)
-
站点扩展目录(Breaking)
- 站点级模板、静态资源、dCard 卡片、用于覆盖生成结果的 HTML 页面,统一放在
__everkm/extend/下(子目录分别为templates、assets、dcard、pages)。 everkm-publish init <站点根目录>会在该目录下自动创建extend目录结构。- 以下旧路径不再支持,请一次性迁移到
extend对应子目录:__everkm/__theme→extend/templates(及extend/assets)__everkm/__assets、内容目录下的__assets→extend/assets__everkm/__public、内容目录下的__public→extend/pages- 内容目录下的
__dcard→extend/dcard
- 预览时,放在
extend/assets中的文件会优先于主题自带资源;导出完成后,extend/pages中的 HTML 会覆盖同路径的生成页面。
- 站点级模板、静态资源、dCard 卡片、用于覆盖生成结果的 HTML 页面,统一放在
-
CLI(Breaking)
everkm-publish init:改为在已存在的站点根目录中初始化,不再根据站点名称自动新建子目录。- 用法由
init <站点名> [--work-dir 父目录]调整为init <站点根目录>;需先自行创建该目录,例如mkdir my-site && everkm-publish init my-site。 - 初始化时会同时创建空的
__everkm/everkm.yaml,供后续填写站点配置。
- 用法由
everkm-publish web:静态预览目录由--work-dir改为位置参数,用法为web <目录>,例如everkm-publish web ./dist。- 执行
serve、export、init等命令时,启动日志会输出当前 everkm-publish 版本号,便于确认是否已升级或排查问题。
v0.17.1 (2026-06-14)
-
多语言
- 站点配置与面包屑文案支持
@i18n:<key>引用,按当前语言自动替换为对应译文。 - 本地预览可通过 URL 参数
?_lang或 cookie__lang切换语言,即时查看不同语言下的配置文案。 - 可在项目
__everkm/i18n/下放置*.i18n.yaml语言包,覆盖主题自带译文;预览时修改语言包会自动生效,无需重启。
- 站点配置与面包屑文案支持
-
页面渲染
- 预览与导出行为更一致:主题若未提供 Tera 模板(如部分主题的
index.html),会自动改用主题自带的 JS 渲染,文章页与首页均可正常显示。
- 预览与导出行为更一致:主题若未提供 Tera 模板(如部分主题的
-
导出与预览
- 修复部分站点在默认导出并发下长时间无进展、无法完成静态导出的问题;多见于正文或宏引用中使用了由 JS 渲染的 dCard 卡片(例如列表类
dcard/items)。 - 默认并发即可正常完成导出,一般无需再将
EVERKM_EXPORT_WORKERS调小作为变通。
- 修复部分站点在默认导出并发下长时间无进展、无法完成静态导出的问题;多见于正文或宏引用中使用了由 JS 渲染的 dCard 卡片(例如列表类
-
导航与内链(
[[...]])- 导航函数
nav_indicator/nav_path/nav_tree的from_file参数,若用[[...]]包裹,则与正文内链采用相同规则解析目标文章(标题、slug、路径等);普通字符串写法不变。 - 内链在预览与导出时会直接解析为站点 URL;链接指向不存在或存在歧义(如同名标题对应多篇文档)时,会立即报错并指出问题链接,不再等到导出末尾才出现难以理解的提示。
- 按标题或 slug 匹配内链时忽略大小写(如
[[faq]]可匹配标题「FAQ」);若 slug 重复则会提示歧义。 - 若标题可能在不同目录重复,建议改用显式路径,例如
[[./faq/]]或[[/section/doc/file]]。 - 新增
everkm-publish lint可扫描全文内链,按行号列出无法解析或存在歧义的链接,适合发布前自检。 - aNote 发布场景下,内链解析规则与命令行工具一致。
- 导航函数
-
错误提示
- 因链接问题导致页面无法发布时,错误信息会标明页面 URL、源 Markdown 文件、具体链接地址及修改建议,便于快速定位。
v0.17.0 (2026-06-13)
-
导出与预览
- 大型站点静态导出与本地预览明显更快;列表筛选、标签/分类查询在大库下也更稳。
- 预览默认启用图片懒加载(
lazy_img);本地图片处理与缓存优化,重复预览同一媒体时更省 IO。 - 导出并发由
--export-workers(别名--export-jobs)统一控制,默认按 CPU 核数取值。
-
索引与启动
- 内容索引缓存于
{work_dir}/__everkm/cache/everkm-publish.db,启动时自动迁移,无需再手动执行db-migrate。 - 版本升级后若索引结构不兼容会自动重建(首次启动可能稍慢,属正常现象)。
- 目录配置
folders与旧版DirConfig行为对齐;路径/slug/标题查找延续 v0.16.15 的大小写不敏感语义。
- 内容索引缓存于
-
主题安装
- 远程安装对齐 ekmp-themes 官方目录;主源失败时尝试 CDN 备用地址。
- 支持
{作者}/{主题名}@版本表达式与本地.zip包安装。 - 脚手架默认主题目录由
youlog调整为everkm/youlog(仅影响init新站点)。
-
Markdown 与页面表现
- 破坏性变更:
{{everkm::include(...)}}、{{everkm::toc(...)}}等花括号宏已移除,请改用```macro/include```、```macro/toc```等 fenced 块。 - 预览与发布时,若正文首个 h1 与页面标题重复会自动隐藏,避免标题出现两次。
- dCard 卡片渲染与 v0.16.15 对齐;扩展属性、
exclude_tags等在 scraper 升级后行为更一致。 - 书籍/导航模板中
nav_tree等间接拉取列表时,上下文传递更完整,减少二次渲染告警。
- 破坏性变更:
-
模板与 CLI
- 破坏性变更:Tera 模板中文章日期字段由
post.date更名为post.created_at(秒级时间戳)。 - CLI 子命令
create已改名为init。 - 预览服务新增
/__everkm/导航页,便于浏览内置 API 与调试接口。
- 破坏性变更:Tera 模板中文章日期字段由
-
aNote 资源
- 通过 aNote 导出静态站时,
anote://assets/...链接会物化到dist/assets/media。 - Markdown 内链与 HTML 中
img/a两条路径处理一致。
- 通过 aNote 导出静态站时,
v0.16.15 (2026-04-11)
- 路径与引用解析:按内容虚拟路径、
slug、文章标题定位页面时忽略大小写,与仓库里文件名实际大小写不必一致。 - 目录 URL:以
/结尾的路径(含站点根/)统一按「目录默认页」解析,覆盖常见约定:index.md、slug为index,以及「文件夹名与 md 主名相同」的foo/foo.md等。 - Markdown 内链:内链里若写出带末尾
/的目录地址,会按目录页解析并生成正确链接;相对路径、补.md、附件等非正文资源的处理在若干边界情况下也更一致、可预期。
v0.16.14 (2026-04-08)
修复
- 目录配置合并时,子目录
index.yaml未写breadcrumbs时不再覆盖并清空祖先(如根目录)已合并的面包屑;与template等字段行为一致 - 目录配置合并时,各层
index.yaml中非空的breadcrumbs按深度追加到祖先链(继承根目录与各上级),不再被下一层整段替换导致丢失根配置 find_by_path("/")正确解析内容根目录首页;目录级查找除slug=index外,文件名为index的页面亦视为目录 index 页
新增 / 优化
PostItem增加is_index_filename()、is_dir_index_post(),供面包屑与路径查找复用- 页面面包屑:链首不再自动插入「Home」,中间层全部由各级
index.yaml与目录 index post(dir_index,resolve_breadcrumbs_middle)生成——有 index post 的层级必有条目(YAML 非空优先,否则该级 index post 一条);链尾为当前页;若需首页入口请在 posts 根目录index.yaml的breadcrumbs中声明 - 对
.../index目录 index 页可指定不同的 slug 作为内部引用,不影响最后生成的文件名为index.html
v0.16.13 (2026-04-08)
- 脚注定义的开始处添加分隔线
- 修复:站点根
index.yaml不再错误生成 URL 路径段 - 文件名为
index的页面,slug 强制为index
v0.16.12 (2026-03-18)
- 增加 CLI 参数
--lazy-img,导出时为正文图片启用懒加载 - 脚注统一在正文末尾渲染
v0.16.11 (2026-03-13)
- 修复
index.html的 url_path 计算问题。去除as_channel,统一由slug=index来决定 url_path - 增强 Breadcrumbs 解析能力
- 增加
/__everkm/posts接口概览所有页面 - 过滤
__打头的 md 文件解析 DirConfig支持变量$THIS_DIR
v0.16.10 (2026-03-12)
- 优化 assets public fallback 优先级
- 优化 MIME 类型检测
- 为
everkm-publish web添加请求日志输出
v0.16.9 (2026-03-11)
- 目录配置里
hash_storage可写作hash_scatter(别名) - 各目录下的 index 页会生成
index.html,链接按所在目录;未在index.yaml里单独配置时,index 页会自动按频道页处理 - 未在
index.yaml配置面包屑时,会按当前页的 URL 路径自动生成:每一级目录对应的 index 页会出现在面包屑中 - 当根据 URL 找不到 post 记录时,不再直接返回 404,改为用请求路径交给模板引擎尝试渲染
- 目录配置增加
query配置项,在渲染时传递给query_string - 增加
nav_tree函数 - 增加
lang函数
v0.16.8 (2025-12-09)
- 修复对
blockquote、codeblock块的扩展属性支持
v0.16.7 (2025-11-23)
- 重命名
uno为permalink posts列表增加order_by、order_direction参数
v0.16.6 (2025-11-20)
- 优化 dcard 的 assets 注入方式
- 新增 dcard 通过 JS 渲染
v0.16.5 (2025-11-14)
- 修复 nginx redirect map 参数转换错误
- 修复 vercel redirect 参数转换错误
v0.16.4 (2025-11-11)
修复
- 模板传递对象 undefined 属性被转为 null 问题
- 模板按后缀搜索时,必须是完整的文件名问题
优化
posts列表默认排除当前文档everkm::include()的as参数可省略,已从扩展名推断
v0.16.3 (2025-11-08)
- 修复 breadcrumbs 无链接时去重问题
v0.16.2 (2025-11-03)
- 修复 Vercel 配置导出问题
- 修复查询参数 (Query String) 转换问题
v0.16.1 (2025-11-02)
新增
- 内容自动 lint 与修复功能(
--auto-fix-on-update) - dCard 强制渲染开关(
--ignore-dcard-errors) - JS 模板渲染 (SSR) 支持
- 文章列表返回
prev/nextID - 支持按 ID 获取文章详情(
post_detail) - 外部资源引用自动添加时间戳
修复
- 修复渲染死锁问题
- 修复 dcard 参数传递
- 修复 dcard 调用
变更
- 废弃从正文一级标题获取 title 的行为
- 默认关闭
hash_storage - 切换元数据字段
date为updated_at
v0.16.0 (2025-10-24)
新增
- 目录级配置
DirConfig(index.yaml),支持多级合并继承 - 面包屑导航自动注入
- URL 重定向导出(支持 nginx 和 Vercel)
hash_storage路径 fallback:长 slug 自动映射为短路径- 目录配置支持
query查询参数 --title-selector参数:自定义文章标题选取方式--with-extend-md-meta参数:导出扩展 Markdown 元信息
优化
- 目录配置合并:子目录继承并覆盖父目录配置
- 页面元数据解析:使用内置 metadata 解析器
v0.15.1 (2025-09-06)
- 模板中增加
__theme_name全局变量,表示当前主题名称
v0.15.0 (2025-09-06)
新增
__everkm/pages目录支持独立于模板的补充页面--with-url-map参数导出 URL 映射文件--with-publish-map参数导出发布页面日志- 导出 nginx 可用的
url_map文件 file_meta子命令,读取单个文件的元信息--template-path参数导出模板路径- 支持导出
publish_map输出 - 增加模板注入 assets 功能
优化
- 统一接口定义
- 修正前端目录 fallback
v0.14.2 (2025-07-12)
- 再次梳理
theme_dir获取逻辑 - 修改 theme-dev 模式下的 assets 复制与 fallback 规则
v0.14.1 (2025-06-25)
新增
--config参数指定配置文件路径--theme-dev参数启用主题开发模式- 全局变量
__everkm_publish_version(当前工具版本号) - 全局变量
__theme_version(当前主题版本号) - 导出时支持相对 URL 计算
asset_base_url()函数
优化
- 导出时可使用软链接
- 错误后直接退出,不再继续
v0.14.0 (2025-06-20)
新增
posts函数增加exclude_tags参数,支持按标签排除文章- 标题降级策略:Meta 中未定义标题时,自动使用正文第一个 h1 作为标题
- 内部链接优先按
slug搜索 __env_is_preview全局变量,标识当前是否为预览环境- 支持监听多个目录
- assets 目录自动 fallback
修复
- 修复内部链接解析问题
- 修复排序问题
- 修复 theme 缺失版本号
- 避免标题提升(从正文 h1 获取标题时的边界情况)
v0.13.7 (2025-04-30)
- 修复判断相对链接时忽略锚点问题
v0.13.6 (2025-04-30)
变更
- 移除 OpenSSL 依赖
- Sitemap 配置规则变更:多条规则选择其中一个匹配,而不是合并
- glob 匹配规则调整:
*仅匹配一段路径,**表示多级目录
新增
theme install --force选项,强制覆盖安装主题- 显示安装的版本号
修复
- 映射模板不允许使用相对路径
- 修复测试用例以适应新的配置优先级
v0.13.5 (2025-04-26)
新增
nav_tree函数,生成导航树dir_tree目录配置项LinkItem数据结构
修复
- 修复面包屑检测
- 修复 alias 路径查找
- 修复路径查找问题
- 修复
base_url问题 - 修复 TOC 标题关键词重复
- 修复导航解析时忽略锚点
- 修复复制 assets 目录不存在的情况
优化
base_url增加url参数,自动转换~/打头的地址为base_prefix- 优化链接比较方式
- 增加目录排除功能
- 增加链接抓取来源日志输出
v0.13.4 (2025-04-12)
- 修复导出页面时样式丢失问题
v0.13.3 (2025-04-08)
- 修复 dcard 数据与脚本优先从
__dcard中读取 - 修复 dcard 解析错误
- 优化日志输出
v0.13.2 (2025-04-03)
- 修复复制文件删除错误
v0.13.1 (2025-04-02)
- 修复目录问题
- 修复变量重命名
- 调整打印输出
v0.13.0 (2025-04-02)
重大变更
以内容目录为一级目录,所有 everkm-publish 的相关配置统一放置到 __everkm 目录下。
重命名函数
post_exist->has_postmedia_local->media_remotesrc->medialocal_cfg->configlocal_cfg_exist->has_configget_random->randomget_env->envassets->assetds->datamd_html->md_to_htmlmarkdown_html->markdown_to_html
目录结构变更
- 将
content目录下内容放到一级目录,post提升一级,扁平化 - 所有 everkm 相关的都放到
__everkm目录下
新增
regex_replace过滤器- 全局变量
__host