-
Notifications
You must be signed in to change notification settings - Fork 1
/
esbuild.config.js
72 lines (62 loc) · 1.36 KB
/
esbuild.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
const { arge } = require('arge')
const chokidar = require('chokidar')
const esbuild = require('esbuild')
const liveServer = require('live-server')
const root = './public'
const { build = false, dev = false, watch = false } = arge(process.argv)
const common = {
bundle: true,
jsx: 'automatic',
sourcemap: false,
}
if (build) {
const options = {
...common,
entryPoints: ['./src/index.ts'],
external: Object.keys(require('./package.json').dependencies || {}),
logLevel: 'info',
minify: true,
target: ['esnext'],
}
esbuild.build({
...options,
format: 'esm',
outfile: './dist/index.esm.js',
})
esbuild.build({
...options,
format: 'cjs',
outfile: './dist/index.js',
})
}
if (dev) {
;(async () => {
const builder = await esbuild.build({
...common,
define: {
'process.env.NODE_ENV': JSON.stringify(
process.env.NODE_ENV || 'development'
),
},
entryPoints: ['./src/example/index.tsx'],
incremental: true,
minify: !watch,
outfile: `./${root}/script.js`,
})
if (!watch) {
process.exit(0)
}
chokidar
.watch('./src/**/*.{ts,tsx}', {
interval: 0,
})
.on('all', () => {
builder.rebuild()
})
liveServer.start({
open: true,
port: +process.env.PORT || 8080,
root,
})
})()
}