-
Notifications
You must be signed in to change notification settings - Fork 0
/
e2edce.config.js
89 lines (87 loc) · 2.15 KB
/
e2edce.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
import minify_glsl from 'three-glsl-minifier'
import * as t from '@babel/types'
import parser from '@babel/parser'
const common = {
compress: {
passes: 2,
pure_funcs: ['console.warn', 'console.error'],
global_defs: {
__THREE_DEVTOOLS__: undefined,
'window.__THREE__': true
},
},
mangle: true,
beautify: false,
debug: false,
headless: true,
port: 8081,
/** @type import('@babel/traverse').Visitor */
visitor: {
ImportDeclaration(path) {
if (path.node.source.value === 'three') {
path.node.source.value = 'three/src/Three.js'
}
},
StringLiteral(path) {
if (path.node.leadingComments?.[0]?.value.trim() === 'glsl') {
t.removeComments(path.node)
path.node.value = minify_glsl(path.node.value)
}
},
TemplateLiteral(path) {
if (path.node.leadingComments?.[0]?.value.trim() === 'glsl') {
const src = path.getSource()
const glsl = src.substring(1, src.length - 1) // eat backticks
const minified = [
'`',
minify_glsl(glsl),
'`'
].join('')
t.removeComments(path.node)
path.replaceWith(
parser.parse(minified, {}).program.body[0].expression
)
}
}
}
}
export default {
configs: [
{
...common,
input: 'src/named-import.js',
output: 'public/named-import/index.build.js',
test: 'tests/named-import.js',
},
{
...common,
input: 'src/full-import.js',
output: 'public/full-import/index.build.js',
test: 'tests/full-import.js',
},
{
...common,
input: 'src/force-used.js',
output: 'public/force-used/index.build.js',
test: 'tests/force-used.js'
},
{
...common,
input: 'src/use-examples.js',
output: 'public/use-examples/index.build.js',
test: 'tests/use-examples.js',
},
{
...common,
input: 'src/use-cannon-es.js',
output: 'public/use-cannon-es/index.build.js',
test: 'tests/use-cannon-es.js'
},
{
...common,
input: 'src/foo.js',
output: 'public/foo/index.build.js',
test: 'tests/foo.js'
}
]
}