/
vite.config.js
90 lines (85 loc) · 2.17 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
const path = require('node:path')
const { normalizePath } = require('vite')
const virtualFile = '@virtual-file'
const virtualId = '\0' + virtualFile
const customVirtualFile = '@custom-virtual-file'
const { a } = require('./config-dep')
const generatedContentVirtualFile = '@generated-content-virtual-file'
const generatedContentImports = [
{
specifier: normalizePath(
path.resolve(__dirname, './drive-relative.js').replace(/^[a-zA-Z]:/, '')
),
elementQuery: '.drive-relative'
},
{
specifier: normalizePath(path.resolve(__dirname, './absolute.js')),
elementQuery: '.absolute'
}
]
module.exports = {
resolve: {
extensions: ['.mjs', '.js', '.es', '.ts'],
mainFields: ['custom', 'module'],
conditions: ['custom']
},
define: {
VITE_CONFIG_DEP_TEST: a
},
plugins: [
{
name: 'virtual-module',
resolveId(id) {
if (id === virtualFile) {
return virtualId
}
},
load(id) {
if (id === virtualId) {
return `export const msg = "[success] from conventional virtual file"`
}
}
},
{
name: 'custom-resolve',
resolveId(id) {
if (id === customVirtualFile) {
return id
}
},
load(id) {
if (id === customVirtualFile) {
return `export const msg = "[success] from custom virtual file"`
}
}
},
{
name: 'generated-content',
resolveId(id) {
if (id === generatedContentVirtualFile) {
return id
}
},
load(id) {
if (id === generatedContentVirtualFile) {
const tests = generatedContentImports
.map(
({ specifier, elementQuery }, i) =>
`import content${i} from ${JSON.stringify(specifier)}\n` +
`text(${JSON.stringify(elementQuery)}, content${i})`
)
.join('\n')
return (
'function text(selector, text) {\n' +
' document.querySelector(selector).textContent = text\n' +
'}\n\n' +
tests
)
}
}
}
],
optimizeDeps: {
include: ['require-pkg-with-module-field']
}
}