LetTTGACO / elog

Markdown 批量导出工具、开放式跨平台博客解决方案,随意组合写作平台(语雀/Notion/FlowUs/飞书/我来Wolai)和博客平台(Hexo/Vitepress/Halo/Confluence/WordPress等)
https://elog.1874.cool
MIT License
1.39k stars 71 forks source link

语雀账号密码模式手写frontMatter同步异常 #52

Closed Ymriri closed 9 months ago

Ymriri commented 9 months ago

你当前使用的Elog版本

0.12.4

Elog配置文件

module.exports = {
  write: {
    platform: 'yuque-pwd',
    // Token 模式(需要语雀超级会员)
    yuque: {
      token: process.env.YUQUE_TOKEN,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
      onlyPublic: true,
      onlyPublished: true,
    },
    // 账号密码模式
    "yuque-pwd": {
      username: process.env.YUQUE_USERNAME,
      password: process.env.YUQUE_PASSWORD,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
    }
  },
  deploy: {
    platform: 'local',
    local: {
      outputDir: './docs/',
      filename: 'title',
      format: 'markdown',
      catalog: true,
      formatExt: './elog.format.js',
      frontMatter: {
        enable: true,
        include: [], // 只输出include包含的属性
        exclude: [], // 不输出exclude包含的属性
      }
    }
  },
  image: {
    enable: true,
    platform: 'local',
    local: {
      outputDir: './docs/images',
      pathFollowDoc: true,
    }
  }
}

发生了什么?

使用语雀账号密码模式同步frontMatter出现问题,

Elog错误日志

front-matter解析失败,将返回预定义属性incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line at line 1, column 40:
                                            ... Blogging with Elog<br />classify: 关于Elog<br />description:xxx ...
预定义属性:https://elog.1874.cool/notion/raqyleng501h23p1#预定义属性

附加信息

No response

Ymriri commented 9 months ago

修改配置文件如下后出现新的问题 "yuque-pwd": { username: process.env.YUQUE_USERNAME, password: process.env.YUQUE_PASSWORD, login: process.env.YUQUE_LOGIN, repo: process.env.YUQUE_REPO, linebreak: false } 1.在内容最前面多了一个NULL的非法字符

image image
  1. 貌似elog自动把frontMatter的内容过滤了,目前我使用的主题需要根据frontMatter进行配置,如果同步后frontMatter失效,只能手动配置 原文语雀如下
image

同步后如下

image
LetTTGACO commented 9 months ago

问题1:语雀账号密码模式同步frontMatter出现问题,命令行报错

解决办法:在yuque-pwd配置中增加linebreak: false配置,该配置表示,从语雀下载md文档时,是否需要保持语雀的换行,这里设置为 false 不需要,否则会导致 front-matter 中会携带<br>字符,导致在解析 front-matter 时报错

问题 2:文档正文出现非法字符

在你网页版语雀文档的 url 后面 手动加一个/markdown,会看到语雀原文的 md 字符。类似这样:https://www.yuque.com/1874w/elog-docs/introduce/markdown

先检查下是否原本就存在类似非法字符。可删除出现非法字符前后的文字重新书写进行尝试。否则请先自行在自定义文档处理器 elog.format.js中找到相关非法字符进行过滤

问题 3:手动指定的 front-matter 被 elog 过滤

是因为当前配置文件使用了自定义文档处理器,会导致配置文件中关于 front-matter 相关配置失效。可以在elog.format.js中手动引入 front-matter 相关的处理函数进行手动处理,将 doc.body 进行处理 image

Ymriri commented 9 months ago

问题1、2都按照上面回答搞定了。

Ymriri commented 9 months ago

问题3如何不考虑代码块中的高亮,可以通过把elog.config.js中的// formatExt: './elog.format.js', 注释来支持frontMatter,感谢LetTTGACO的帮助。

Ymriri commented 9 months ago

如果需要保持自定义的frontMatter,也需要自己在include 添加,如下图

image