实现obsidian
语法向vuepress
的平滑过渡,灵感来源于[windily-cloud/vuepress-plugin-obsidian](https://github.com/windily-cloud/vuepress-plugin-obsidian)
实现将obsidian
中插件Admonition
语法转换为vuepress
中的语法,如将
```ad-tip
//something
```
转换为
:::tip
//something
:::
主要支持的有以下几种容器类型:
- tip
- warning
- note
- info
- danger
同时支持Admonition
容器中的title
和collapse
属性
众所周知,obsidian
中标签很好用,本插件提供了将其转换为vuepress
内置组件<badage>
在obsidian
插件Admonition
中新增Admonition type
,新增right
和center
类型,然后在obsidian
的外观
设置中的mycss.css
中配置自定义样式,建议样式如下:
.admonition-right .admonition-center {
margin: 0;
padding: 0;
}
.admonition-right>div:nth-child(2) {
float: right;
}
.admonition-center>div:nth-child(2) {
display: flex;
justify-content: center;
}
注意:添加上述CSS
样式,只是为了在obsidian
中生效,显得不那么违和!
然后本插件就会自动将
```ad-right
居中
```
转换为
:::right
居中
:::
ad-center
同理
主要是解决这个问题
- 在
vuepress
工程.vuepress
目录下,新建vuepress-plugin-obsidian
文件夹 - 将本项目的
dist
文件夹移动至该文件夹内 - 按照如下方式在
config.js
中引用插件
import obsidianPlugin from "./vuepress-plugin-obsidian/dist";
export default defineUserConfig({
//...
plugins: [
obsidianPlugin()
],
//...
})
支持了tabs
增强语法,在obsidian
对应的插件是obsidian-code-tab,为了语法上的统一,这里本人将其源码进行了小小的修改,其原本的语法是tab
,修改为tabs
,然后本插件就会在编译时将对应的语法转换为vuepress
中的语法,需要注意的是,若在tabs
中嵌套其他的容器(例如代码块这种包括反引号的块级内容),此时tabs
需要使用四个反引号,平时可以直接使用三个反引号
ob
中的效果
- 转换后的效果
对于vuepress
中的card
语法请参考卡片,在obsidian
中实现对应语法的插件是obsidian-auto-card-link,此处给出的仓库是本人fork
之后做了一些修改的版本,主要是为了兼容vuepress
中card
的语法,致敬原作者nekoshita/obsidian-auto-card-link
在vuepress
中,卡片数据支持 title、desc、logo、link 和 color 属性。
在obsidian
中,开启插件后,支持的属性有
link: string;
title: string;
desc?: string;
host?: string;
favicon?: string;
logo?: string;
其中相同部分为两者兼容,其余部分则为各自的属性,只会在一方有效果
将本项目clone
到本地,移到对应的.vuepress
目录下,引用方式改为
// confis.js
import obsidianPlugin from "./vuepress-plugin-obsidian/src/index.ts";
export default defineUserConfig({
//...
plugins: [
obsidianPlugin()
],
//...
})