-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvite.config.js
59 lines (55 loc) · 1.51 KB
/
vite.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import fs from 'fs';
import { resolve } from 'path';
import { helpers } from './src/helpers';
import WindiCSS from 'vite-plugin-windicss';
import handlebars from './vite-plugin-handlebars';
const loadResume = (path = null) => {
return JSON.parse(fs.readFileSync(`./${path ? path + '/' : ''}resume.json`, 'utf-8'))
}
const pageDirs = fs.readdirSync("./", { withFileTypes: true })
.filter(dir => {
return dir.isDirectory()
&& (dir.name !== 'src'
&& dir.name !== 'vite-plugin-handlebars'
&& dir.name !== '.netlify'
&& dir.name !== 'dist'
&& dir.name !== 'node_modules'
&& dir.name !== '.git')
}).map(dir => dir.name)
const pages = {
'/index.html': {
...loadResume(),
...JSON.parse(fs.readFileSync(`./data.json`))
},
...Object.fromEntries(pageDirs.map(dir => [`/${dir}/index.html`, {
...loadResume(dir),
...JSON.parse(fs.readFileSync(`${dir}/data.json`))
}]))
}
export default {
plugins: [
handlebars({
partialDirectory: resolve(__dirname, 'src'),
context(path) {
return pages[path];
},
registerHelpers: helpers
}),
WindiCSS({
safelist: 'hover:text-fuchsia-700 hover:text-cyan-700 bg-cyan-500'
})
],
build: {
rollupOptions: {
input: {
main: resolve(__dirname, 'index.html'),
...(pageDirs.length) && {
...pageDirs.map(page => resolve(__dirname, `${page}/index.html`))
}
},
output: {
assetFileNames: `assets/[name].[ext]`
}
}
}
};