Skip to content

Commit 7a6dce2

Browse files
committed
feat: copy markdown files in buildEnd hook
1 parent 562ac58 commit 7a6dce2

File tree

1 file changed

+37
-0
lines changed
  • packages/nimiq-vitepress-theme/src

1 file changed

+37
-0
lines changed

packages/nimiq-vitepress-theme/src/index.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import type { NimiqVitepressThemeConfig } from 'nimiq-vitepress-theme/types.js'
22
import type { UserConfig } from 'vitepress'
3+
import { copyFileSync, mkdirSync, readdirSync } from 'node:fs'
4+
import { join, relative } from 'node:path'
5+
import consola from 'consola'
36
import { defineConfig } from 'vitepress'
47
import inlineActionsPlugin from './vite/inline-actions-plugin'
58

@@ -21,6 +24,7 @@ export function defineNimiqVitepressConfig<T = NimiqVitepressThemeConfig>(config
2124
// Merge user's preConfig with default if provided
2225
const userMarkdown = config.markdown || {}
2326
const userPreConfig = userMarkdown.preConfig
27+
const userBuildEnd = config.buildEnd
2428

2529
return defineConfig<T>({
2630
extends: defaultConfig,
@@ -37,5 +41,38 @@ export function defineNimiqVitepressConfig<T = NimiqVitepressThemeConfig>(config
3741
}
3842
},
3943
},
44+
buildEnd(siteConfig) {
45+
const srcDir = siteConfig.srcDir
46+
const outDir = siteConfig.outDir
47+
48+
function copyMarkdownFiles(dir: string) {
49+
const entries = readdirSync(dir, { withFileTypes: true })
50+
51+
for (const entry of entries) {
52+
const fullPath = join(dir, entry.name)
53+
54+
if (entry.isDirectory()) {
55+
copyMarkdownFiles(fullPath)
56+
}
57+
else if (entry.isFile() && entry.name.endsWith('.md')) {
58+
const relativePath = relative(srcDir, fullPath)
59+
const destPath = join(outDir, relativePath)
60+
const destDir = join(destPath, '..')
61+
62+
mkdirSync(destDir, { recursive: true })
63+
copyFileSync(fullPath, destPath)
64+
}
65+
}
66+
}
67+
68+
consola.info('Copying markdown files to build output...')
69+
copyMarkdownFiles(srcDir)
70+
consola.success('Markdown files copied successfully')
71+
72+
// Call user's buildEnd if provided
73+
if (userBuildEnd) {
74+
userBuildEnd(siteConfig)
75+
}
76+
},
4077
})
4178
}

0 commit comments

Comments
 (0)