@@ -9,22 +9,10 @@ export { data }
9
9
type GlobalThis = typeof globalThis & { VITEPRESS_CONFIG : SiteConfig < Theme > }
10
10
11
11
const config = ( globalThis as GlobalThis ) . VITEPRESS_CONFIG
12
- const themeConfig = config . site . themeConfig
13
- const pagination = themeConfig . pagination && toArray ( themeConfig . pagination )
14
- const postsDir = pagination ?. reduce ( ( all , item ) => {
15
- if ( Array . isArray ( item . dir ) ) {
16
- all = all . concat ( item . dir )
17
- } else if ( item . dir ) {
18
- all . push ( item . dir )
19
- }
20
- return all
21
- } , [ ] as string [ ] )
22
- const pattern = postsDir ?. length
23
- ? postsDir . map ( ( item ) => `${ item } /*.md` )
24
- : `${ config . userConfig . srcDir || '**' } /*.md`
12
+ const pattern = getPattern ( )
25
13
26
14
export default createContentLoader ( pattern , {
27
- excerpt : themeConfig . excerpt ?? true ,
15
+ excerpt : config . site . themeConfig . excerpt ?? true ,
28
16
transform ( raw ) : PostsItem [ ] {
29
17
const posts : PostsItem [ ] = [ ]
30
18
@@ -53,3 +41,26 @@ export default createContentLoader(pattern, {
53
41
return posts
54
42
} ,
55
43
} )
44
+
45
+ function getPattern ( ) {
46
+ const dirs = new Set < string > ( )
47
+
48
+ if ( config . site . themeConfig . pagination ) {
49
+ toArray ( config . site . themeConfig . pagination ) . forEach ( ( item ) => {
50
+ item . dir && toArray ( item . dir ) . forEach ( ( item ) => dirs . add ( item ) )
51
+ } )
52
+ }
53
+ if ( config . site . locales . length ) {
54
+ Object . values ( config . site . locales ) . forEach ( ( locale ) => {
55
+ if ( locale . themeConfig ?. pagination ) {
56
+ toArray ( locale . themeConfig . pagination ) . forEach ( ( item ) => {
57
+ item . dir && toArray ( item . dir ) . forEach ( ( item ) => dirs . add ( item ) )
58
+ } )
59
+ }
60
+ } )
61
+ }
62
+
63
+ return dirs . size > 0
64
+ ? [ ...dirs ] . map ( ( item ) => `${ item } /*.md` )
65
+ : `${ config . userConfig . srcDir || '**' } /*.md`
66
+ }
0 commit comments