1- import { blogPlugin } from '@vuepress/plugin-blog'
21import { defaultTheme } from '@vuepress/theme-default'
3- import { defineUserConfig } from 'vuepress'
2+ import { defineUserConfig } from 'vuepress/cli '
43import { viteBundler } from '@vuepress/bundler-vite'
54
65export default defineUserConfig ( {
@@ -12,130 +11,8 @@ export default defineUserConfig({
1211 theme : defaultTheme ( {
1312 logo : 'https://vuejs.press/images/hero.png' ,
1413
15- navbar : [
16- '/' ,
17- {
18- text : 'Article' ,
19- link : '/article/' ,
20- } ,
21- {
22- text : 'Category' ,
23- link : '/category/' ,
24- } ,
25- {
26- text : 'Tag' ,
27- link : '/tag/' ,
28- } ,
29- {
30- text : 'Timeline' ,
31- link : '/timeline/' ,
32- } ,
33- ] ,
14+ navbar : [ '/' , '/get-started' ] ,
3415 } ) ,
3516
36- plugins : [
37- blogPlugin ( {
38- // Only files under posts are articles
39- filter : ( { filePathRelative } ) =>
40- filePathRelative ? filePathRelative . startsWith ( 'posts/' ) : false ,
41-
42- // Getting article info
43- getInfo : ( { frontmatter, title, data } ) => ( {
44- title,
45- author : frontmatter . author || '' ,
46- date : frontmatter . date || null ,
47- category : frontmatter . category || [ ] ,
48- tag : frontmatter . tag || [ ] ,
49- excerpt :
50- // Support manually set excerpt through frontmatter
51- typeof frontmatter . excerpt === 'string'
52- ? frontmatter . excerpt
53- : data ?. excerpt || '' ,
54- } ) ,
55-
56- // Generate excerpt for all pages excerpt those users choose to disable
57- excerptFilter : ( { frontmatter } ) =>
58- ! frontmatter . home &&
59- frontmatter . excerpt !== false &&
60- typeof frontmatter . excerpt !== 'string' ,
61-
62- category : [
63- {
64- key : 'category' ,
65- getter : ( page ) => page . frontmatter . category || [ ] ,
66- layout : 'Category' ,
67- itemLayout : 'Category' ,
68- frontmatter : ( ) => ( {
69- title : 'Categories' ,
70- sidebar : false ,
71- } ) ,
72- itemFrontmatter : ( name ) => ( {
73- title : `Category ${ name } ` ,
74- sidebar : false ,
75- } ) ,
76- } ,
77- {
78- key : 'tag' ,
79- getter : ( page ) => page . frontmatter . tag || [ ] ,
80- layout : 'Tag' ,
81- itemLayout : 'Tag' ,
82- frontmatter : ( ) => ( {
83- title : 'Tags' ,
84- sidebar : false ,
85- } ) ,
86- itemFrontmatter : ( name ) => ( {
87- title : `Tag ${ name } ` ,
88- sidebar : false ,
89- } ) ,
90- } ,
91- ] ,
92-
93- type : [
94- {
95- key : 'article' ,
96- // Remove archive articles
97- filter : ( page ) => ! page . frontmatter . archive ,
98- layout : 'Article' ,
99- frontmatter : ( ) => ( {
100- title : 'Articles' ,
101- sidebar : false ,
102- } ) ,
103- // Sort pages with time and sticky
104- sorter : ( pageA , pageB ) => {
105- if ( pageA . frontmatter . sticky && pageB . frontmatter . sticky )
106- return pageB . frontmatter . sticky - pageA . frontmatter . sticky
107-
108- if ( pageA . frontmatter . sticky && ! pageB . frontmatter . sticky ) return - 1
109-
110- if ( ! pageA . frontmatter . sticky && pageB . frontmatter . sticky ) return 1
111-
112- if ( ! pageB . frontmatter . date ) return 1
113- if ( ! pageA . frontmatter . date ) return - 1
114-
115- return (
116- new Date ( pageB . frontmatter . date ) . getTime ( ) -
117- new Date ( pageA . frontmatter . date ) . getTime ( )
118- )
119- } ,
120- } ,
121- {
122- key : 'timeline' ,
123- // Only article with date should be added to timeline
124- filter : ( page ) => page . frontmatter . date instanceof Date ,
125- // Sort pages with time
126- sorter : ( pageA , pageB ) =>
127- new Date ( pageB . frontmatter . date ) . getTime ( ) -
128- new Date ( pageA . frontmatter . date ) . getTime ( ) ,
129- layout : 'Timeline' ,
130- frontmatter : ( ) => ( {
131- title : 'Timeline' ,
132- sidebar : false ,
133- } ) ,
134- } ,
135- ] ,
136- hotReload : true ,
137- } ) ,
138- ] ,
139-
14017 bundler : viteBundler ( ) ,
14118} )
0 commit comments