-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathesbuild.config.js
50 lines (43 loc) · 1.35 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
import esbuild from 'esbuild';
import {readFile, writeFile} from 'node:fs/promises';
const OptimizePlugin = {
name: 'OptimizePlugin',
setup: build => {
build.onLoad({filter: /.ts/}, async args => {
const content = await readFile(args.path, 'utf8');
return {
contents: content.replace(/\s\s+/g, ''),
loader: 'ts'
}
});
build.onEnd(async () => {
let content = await readFile(build.initialOptions.outfile, 'utf8');
if (build.initialOptions.format === 'iife') {
content = content.replace(
new RegExp(`([^.]+\\.${build.initialOptions.globalName.split('.').pop()}=)(.+);`),
`$1Object.assign(${build.initialOptions.globalName}??{},$2);`
);
}
await writeFile(build.initialOptions.outfile, content);
});
}
};
await esbuild.build({
entryPoints: ['src/index.ts'],
format: 'esm',
logLevel: 'info',
metafile: true,
minify: true,
outfile: 'dist/index.mjs',
plugins: [OptimizePlugin],
});
await esbuild.build({
entryPoints: ['src/index.ts'],
format: 'iife',
globalName: 'js4y.components',
logLevel: 'info',
metafile: true,
minify: true,
outfile: 'dist/index.js',
plugins: [OptimizePlugin],
});