Initial rearrangment of vuetom site source
This commit is contained in:
7
packages/blog/.vitepress/conf/path.ts
Normal file
7
packages/blog/.vitepress/conf/path.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import path from 'path'
|
||||
|
||||
export const vpRoot = path.resolve(__dirname, '..')
|
||||
export const blogRoot = path.resolve(vpRoot, '..')
|
||||
export const pageRoot = path.resolve(blogRoot, 'posts')
|
||||
export const pkgsRoot = path.resolve(blogRoot, '..')
|
||||
export const projRoot = path.resolve(pkgsRoot, '..')
|
||||
26
packages/blog/.vitepress/conf/posts.ts
Normal file
26
packages/blog/.vitepress/conf/posts.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import fs from 'fs'
|
||||
import { pageRoot } from './path'
|
||||
|
||||
const readDir = (dir) => {
|
||||
const res = []
|
||||
const files = fs.readdirSync(dir)
|
||||
files.forEach(item => {
|
||||
const filepath = `${dir}/${item}`
|
||||
const stat = fs.statSync(filepath)
|
||||
if (stat.isFile()) {
|
||||
const name = item.replace('.md', '')
|
||||
res.push({
|
||||
text: name,
|
||||
link: `/${name}`
|
||||
})
|
||||
}
|
||||
})
|
||||
return res
|
||||
}
|
||||
|
||||
const getDefaultPage = () => ({
|
||||
text: '',
|
||||
link: ''
|
||||
})
|
||||
|
||||
export default () => readDir(pageRoot)
|
||||
70
packages/blog/.vitepress/config.ts
Normal file
70
packages/blog/.vitepress/config.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
import { defineConfigWithTheme } from 'vitepress'
|
||||
import { VuetomThemeConfig } from 'vitepress-theme-vuetom'
|
||||
import pages from './conf/posts'
|
||||
|
||||
export default defineConfigWithTheme<VuetomThemeConfig>({
|
||||
lang: 'en-US',
|
||||
title: 'Vuetom Blog',
|
||||
titleTemplate: 'My Blog',
|
||||
description: 'Just a blog',
|
||||
base: '/myblog',
|
||||
ignoreDeadLinks: true,
|
||||
lastUpdated: true,
|
||||
themeConfig: {
|
||||
nav: [
|
||||
{ text: '首页', link: '/' },
|
||||
{ text: '指导', link: '/pages/guide' },
|
||||
{
|
||||
text: '更多',
|
||||
items: [
|
||||
{ text: '分类', link: '/categories/index' },
|
||||
{ text: '标签', link: '/tags/index' }
|
||||
]
|
||||
}
|
||||
],
|
||||
sidebar: [
|
||||
{
|
||||
text: '首页',
|
||||
link: '/'
|
||||
},
|
||||
{
|
||||
text: '指导',
|
||||
link: '/pages/guide'
|
||||
},
|
||||
{
|
||||
text: '更多',
|
||||
items: []
|
||||
}
|
||||
],
|
||||
pages: pages(),
|
||||
outlineTitle: 'In hac pagina',
|
||||
socialLinks: [
|
||||
{
|
||||
icon: 'github',
|
||||
link: 'https://github.com/lauset/vitepress-theme-vuetom'
|
||||
}
|
||||
],
|
||||
footer: {
|
||||
message: 'Released under the MIT License.',
|
||||
copyright: 'Copyright © 2021-present Vuetom'
|
||||
},
|
||||
lastUpdatedText: 'Updated Date',
|
||||
docFooter: {
|
||||
prev: 'Pagina prior',
|
||||
next: 'Proxima pagina'
|
||||
},
|
||||
bgImg: '/imgs/blog-bg.png',
|
||||
avatar: '/imgs/avatar.jpg',
|
||||
author: 'Vuetom',
|
||||
parallaxEnable: true,
|
||||
},
|
||||
markdown: {
|
||||
theme: 'material-palenight',
|
||||
lineNumbers: false
|
||||
},
|
||||
vite: {
|
||||
ssr: {
|
||||
noExternal: ["vitepress-theme-vuetom"]
|
||||
}
|
||||
}
|
||||
})
|
||||
0
packages/blog/.vitepress/theme/custom.scss
Normal file
0
packages/blog/.vitepress/theme/custom.scss
Normal file
18
packages/blog/.vitepress/theme/index.ts
Normal file
18
packages/blog/.vitepress/theme/index.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
// .vitepress/theme/index.js
|
||||
|
||||
// for prod
|
||||
import BlogTheme from 'vitepress-theme-vuetom/blog'
|
||||
|
||||
// old
|
||||
// import { BlogTheme } from 'vitepress-theme-vuetom'
|
||||
|
||||
import './custom.scss'
|
||||
|
||||
export default {
|
||||
...BlogTheme,
|
||||
enhanceApp({ app, router, siteData }) {
|
||||
// globals.forEach(([name, Comp]) => {
|
||||
// app.component(name, Comp)
|
||||
// })
|
||||
}
|
||||
}
|
||||
6
packages/blog/.vitepress/utils/paths.ts
Normal file
6
packages/blog/.vitepress/utils/paths.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import path from 'path'
|
||||
|
||||
export const vpRoot = path.resolve(__dirname, '..')
|
||||
export const docRoot = path.resolve(vpRoot, '..')
|
||||
export const pkgsRoot = path.resolve(docRoot, '..')
|
||||
export const projRoot = path.resolve(pkgsRoot, '..')
|
||||
2
packages/blog/README.md
Normal file
2
packages/blog/README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
<h1 align="center">Vuetom Theme Blog</h1>
|
||||
15
packages/blog/api/proxy.js
Normal file
15
packages/blog/api/proxy.js
Normal file
@@ -0,0 +1,15 @@
|
||||
const { createProxyMiddleware } = require('http-proxy-middleware')
|
||||
|
||||
module.exports = (req, res) => {
|
||||
let target = ''
|
||||
if (req.url.startsWith('/myblog')) {
|
||||
target = 'https://vitepress-theme-vuetom-blog.vercel.app'
|
||||
}
|
||||
createProxyMiddleware({
|
||||
target,
|
||||
changeOrigin: true,
|
||||
pathRewrite: {
|
||||
'^/myblog/': '/'
|
||||
}
|
||||
})(req, res)
|
||||
}
|
||||
2
packages/blog/categories/index.md
Normal file
2
packages/blog/categories/index.md
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
Categories Index Page
|
||||
14
packages/blog/index.md
Normal file
14
packages/blog/index.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: 欢迎
|
||||
layout: home
|
||||
---
|
||||
|
||||
# {{ $frontmatter.title }}
|
||||
|
||||
<script setup>
|
||||
|
||||
import { useData } from 'vitepress'
|
||||
const d = useData()
|
||||
console.log(d)
|
||||
|
||||
</script>
|
||||
17
packages/blog/package.json
Normal file
17
packages/blog/package.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "@lauset/vuetom-blog",
|
||||
"version": "2.2.1",
|
||||
"scripts": {
|
||||
"dev": "vitepress dev .",
|
||||
"build": "vitepress build .",
|
||||
"preview": "vitepress preview .",
|
||||
"serve": "vitepress serve .",
|
||||
"clean": "rimraf .vitepress/dist"
|
||||
},
|
||||
"devDependencies": {
|
||||
"sass": "^1.56.1",
|
||||
"vite": "^3.2.5",
|
||||
"vitepress": "^1.0.0-alpha.30",
|
||||
"vitepress-theme-vuetom": "workspace:*"
|
||||
}
|
||||
}
|
||||
2
packages/blog/pages/guide.md
Normal file
2
packages/blog/pages/guide.md
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
**Guide Page**: `/blog/pages/guide.md`
|
||||
180
packages/blog/posts/HelloWorld.md
Normal file
180
packages/blog/posts/HelloWorld.md
Normal file
@@ -0,0 +1,180 @@
|
||||
---
|
||||
title: HelloWorld
|
||||
tags: ui,front
|
||||
categories: vue
|
||||
time: 2022-08-31 16:21:11
|
||||
layout: doc
|
||||
---
|
||||
|
||||
|
||||
# {{ $frontmatter.title }}
|
||||
|
||||
主题的配置在 `.vitepress/config.ts` 文件中的 themeConfig 属性中配置
|
||||
|
||||
下面是一些简要的配置项一览:
|
||||
|
||||
其中 head、sidebar、nav 对应的分别是 head脚本、侧边栏菜单、头部导航栏都可以默认为 []
|
||||
|
||||
<br>
|
||||
|
||||
以下是版本号满足 `vitepress >= 1.x.x` `vuetom-theme >= 2.x.x` 的配置
|
||||
|
||||
```js
|
||||
// .vitepress/config.ts
|
||||
export default defineConfigWithTheme<VuetomThemeConfig>({
|
||||
lang: 'en-US',
|
||||
base: '/vt',
|
||||
title: 'Vuetom Theme',
|
||||
description: 'Theme For Vitepress',
|
||||
// head,
|
||||
themeConfig: {
|
||||
nav: nav(),
|
||||
sidebar: {
|
||||
'zh-CN/guide/': sidebarGuide(),
|
||||
'zh-CN/mdshow/': sidebarMdShow()
|
||||
},
|
||||
socialLinks: [
|
||||
{ icon: 'github', link: pkg.repository }
|
||||
],
|
||||
footer: {
|
||||
message: 'Released under the MIT License.',
|
||||
copyright: 'Copyright © 2021-present Lauset'
|
||||
},
|
||||
logoImg: '/logo/vuetom-logo-m.png',
|
||||
bgImg: '/imgs/homg-bg01.jpg',
|
||||
bgColor: '0,0,0',
|
||||
bgOpacity: 0.6,
|
||||
flashEnable: true,
|
||||
flashColor: ['238,17,17', '0,98,255'],
|
||||
parallaxEnable: true,
|
||||
pageBgEnable: true,
|
||||
pageBgOpacity: 0.8,
|
||||
featuresColor: ['#06cdff30', 'rgba(223,7,107,.3)']
|
||||
|
||||
},
|
||||
markdown: {
|
||||
lineNumbers: false,
|
||||
config: (md) => mdPlugin(md)
|
||||
},
|
||||
lastUpdated: false
|
||||
})
|
||||
```
|
||||
|
||||
<br>
|
||||
|
||||
以下是版本号满足 `vitepress = 0.x.x` `vuetom-theme = 1.x.x` 的配置
|
||||
|
||||
```js light
|
||||
import { defineConfigWithTheme } from 'vitepress'
|
||||
import type { VuetomThemeConfig } from 'vitepress-theme-vuetom'
|
||||
|
||||
// .vitepress/config.ts
|
||||
// 部分配置项
|
||||
export default defineConfigWithTheme<VuetomThemeConfig>({
|
||||
title: 'Vuetom',
|
||||
base: '/',
|
||||
head,
|
||||
themeConfig: {
|
||||
repo: 'GIT地址',
|
||||
docsDir: 'docs',
|
||||
sidebar,
|
||||
nav,
|
||||
bgImg: '/imgs/homg-bg01.jpg',
|
||||
bgColor: '0,0,0',
|
||||
bgOpacity: 0.6,
|
||||
flashEnable: true,
|
||||
flashColor: ['238,17,17', '0,98,255'],
|
||||
pageBgEnable: true,
|
||||
pageBgOpacity: 0.8,
|
||||
featuresColor: ['#06cdff30', 'rgba(223,7,107,.3)']
|
||||
},
|
||||
|
||||
// ...
|
||||
})
|
||||
```
|
||||
|
||||
以下是对配置项的简要说明
|
||||
|
||||
## 首页LOGO
|
||||
|
||||
**logoImg**
|
||||
|
||||
- 类型:`string`
|
||||
- 默认值:`''`
|
||||
|
||||
首页上方LOGO,路径中的首个 `/` 表示 `public` 目录
|
||||
|
||||
例如:`'/logo/homg-logo.jpg'`
|
||||
|
||||
## 首页背景图
|
||||
|
||||
**bgImg**
|
||||
|
||||
- 类型:`string`
|
||||
- 默认值:`undefined`
|
||||
|
||||
首页全屏背景图,路径中的首个 `/` 表示 `public` 目录
|
||||
|
||||
例如:`'/imgs/homg-bg01.jpg'` 等同于 `/public/imgs/home-bg01.jpg`
|
||||
|
||||
**bgColor**
|
||||
|
||||
- 类型:`string`
|
||||
- 默认值:`'0,0,0'`
|
||||
|
||||
背景图边缘的覆盖颜色,值是 `rgb` 的颜色值 `rgb(0,0,0)` 则写为 `'0,0,0'`,默认为黑色
|
||||
|
||||
**bgOpacity**
|
||||
|
||||
- 类型:`0 - 1`
|
||||
- 默认值:`0.6`
|
||||
|
||||
覆盖颜色的透明度,搭配上面的覆盖颜色使用,图片中间透明度要比图片边缘透明度要小
|
||||
|
||||
图片中间透明度为 `当前bgOpacity - 0.3`,也就是说默认为 `0.3`
|
||||
|
||||
## 文章页背景图
|
||||
|
||||
注意:文章页背景图片与首页一致
|
||||
|
||||
**pageBgEnable**
|
||||
|
||||
- 类型:`boolean`
|
||||
- 默认值:`true`
|
||||
|
||||
文章页面背景图是否开启,默认开启
|
||||
|
||||
**pageBgOpacity**
|
||||
|
||||
- 类型:`0 - 1`
|
||||
- 默认值:`0.8`
|
||||
|
||||
文章页背景图透明度,1将看不到背景图,0能清晰看到背景图
|
||||
|
||||
**featuresColor**
|
||||
|
||||
- 类型:`string | Array`
|
||||
- 默认值:`rgba(255,255,255,0.8)`
|
||||
|
||||
首页功能面板背景色,可以是单个颜色字符串,也可以是两个字符串组成的数组
|
||||
|
||||
**flashEnable**
|
||||
|
||||
- 类型:`boolean`
|
||||
- 默认值:`false`
|
||||
|
||||
是否开启首页背景图闪烁功能,效果类似于朋克风故障
|
||||
|
||||
**flashColor**
|
||||
|
||||
- 类型:`string | Array`
|
||||
- 默认值:`['0,0,0','0,0,0']`
|
||||
|
||||
首页背景闪烁时附加的色彩,0: Top位置的颜色,1: Right位置的颜色,默认都是黑色
|
||||
|
||||
**parallaxEnable**
|
||||
|
||||
- 类型:`boolean`
|
||||
- 默认值:`false`
|
||||
|
||||
是否开启首页部分元素视觉差效果
|
||||
14
packages/blog/posts/HelloWorld2.md
Normal file
14
packages/blog/posts/HelloWorld2.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: HelloWorld2
|
||||
tags: java,spring
|
||||
categories: java
|
||||
time: 2022-08-31 16:21:22
|
||||
layout: doc
|
||||
---
|
||||
|
||||
# {{ $frontmatter.title }}
|
||||
|
||||
This is a word in posts/HelloWorld2.md
|
||||
|
||||
<script setup>
|
||||
</script>
|
||||
99
packages/blog/posts/codeblock.md
Normal file
99
packages/blog/posts/codeblock.md
Normal file
@@ -0,0 +1,99 @@
|
||||
---
|
||||
title: 代码块展示
|
||||
tags: example
|
||||
categories: md
|
||||
time: 2022-10-31 20:21:11
|
||||
layout: doc
|
||||
---
|
||||
|
||||
# {{ $frontmatter.title }}
|
||||
|
||||
## MD语法展示
|
||||
|
||||
使用三个 ` 符号将代码包裹其中便是展示代码块
|
||||
|
||||
<br/>
|
||||
|
||||
**亮/暗主题切换**
|
||||
|
||||
根据文档主题模式切换
|
||||
|
||||
**代码块主题 macos**
|
||||
|
||||
可以在 language_key(语言标识) 后加入 `macos`
|
||||
|
||||
输入内容:
|
||||
|
||||
<div>
|
||||
```java macos
|
||||
</div>
|
||||
String language = "Java";
|
||||
<div>
|
||||
```
|
||||
</div>
|
||||
|
||||
展示效果:
|
||||
|
||||
```java macos
|
||||
String language = "Java";
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
**默认主题**
|
||||
|
||||
默认主题是以暗色系为主的
|
||||
|
||||
输入内容:
|
||||
|
||||
<div>
|
||||
```js
|
||||
</div>
|
||||
String language = "JS";
|
||||
<div>
|
||||
```
|
||||
</div>
|
||||
|
||||
输出内容:
|
||||
|
||||
```java
|
||||
String language = "JS";
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
**示例展示**
|
||||
|
||||
- javascript ( js macos )
|
||||
|
||||
```js macos
|
||||
function fun(){
|
||||
echo "Hello, World!";
|
||||
}
|
||||
fun();
|
||||
```
|
||||
|
||||
- Java ( java )
|
||||
|
||||
```java
|
||||
System.out.print(1);
|
||||
```
|
||||
|
||||
- Python ( py macos )
|
||||
|
||||
```py macos
|
||||
#!/usr/bin/env python3
|
||||
print("Hello, World!");
|
||||
```
|
||||
|
||||
- SQL ( sql )
|
||||
|
||||
```sql
|
||||
select user_name from user_info
|
||||
```
|
||||
|
||||
- Shell ( bash, shell )
|
||||
|
||||
```bash
|
||||
echo '1'
|
||||
```
|
||||
2
packages/blog/tags/index.md
Normal file
2
packages/blog/tags/index.md
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
Tags Index Page
|
||||
8
packages/blog/vercel.json
Normal file
8
packages/blog/vercel.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"rewrites": [
|
||||
{
|
||||
"source": "/myblog/(.*)",
|
||||
"destination": "/api/proxy"
|
||||
}
|
||||
]
|
||||
}
|
||||
32
packages/blog/vite.config.ts
Normal file
32
packages/blog/vite.config.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import path from 'path'
|
||||
import { defineConfig } from 'vite'
|
||||
import type { Alias } from 'vite'
|
||||
import { projRoot } from './.vitepress/utils/paths'
|
||||
|
||||
const alias: Alias[] = []
|
||||
|
||||
if (process.env.DOC_ENV !== 'production') {
|
||||
alias.push(
|
||||
{
|
||||
find: /^vitepress-theme-vuetom\/docs$/,
|
||||
replacement: path.resolve(projRoot, 'packages/vuetom/doc'),
|
||||
},
|
||||
{
|
||||
find: /^vitepress-theme-vuetom\/blog$/,
|
||||
replacement: path.resolve(projRoot, 'packages/vuetom/blog'),
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
export default defineConfig({
|
||||
server: {
|
||||
host: true,
|
||||
fs: {
|
||||
strict: true,
|
||||
allow: ['../../']
|
||||
}
|
||||
},
|
||||
resolve: {
|
||||
alias,
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user