-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathesbuild.js
59 lines (54 loc) · 1.36 KB
/
esbuild.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
const esbuild = require('esbuild');
const vue = require('esbuild-plugin-vue').default;
const pkgName = 'my-plugin';
/** @type {import('esbuild').BuildOptions} */
const commonOptions = {
entryPoints: ['./src/index.ts'],
bundle: true,
sourcemap: true,
external: [
'vue',
// Add libraries to exclude from bundling for browser builds
],
target: 'es6', // Change to the targets you want
plugins: [vue()],
};
// ESM Bundler
esbuild.build({
...commonOptions,
outfile: `dist/${pkgName}.esm-bundler.js`,
format: 'esm',
platform: 'node',
external: [
// Mark all dependencies as external
...Object.keys(require('./package.json').dependencies),
...Object.keys(require('./package.json').peerDependencies),
],
});
// Browser dev
esbuild.build({
...commonOptions,
outfile: `dist/${pkgName}.browser.js`,
format: 'iife',
platform: 'browser',
define: {
'process.env.NODE_ENV': JSON.stringify('development'),
__VUE_PROD_DEVTOOLS__: JSON.stringify(
process.env.__VUE_PROD_DEVTOOLS__ || false
),
},
});
// Browser prod
esbuild.build({
...commonOptions,
outfile: `dist/${pkgName}.browser.min.js`,
format: 'iife',
platform: 'browser',
define: {
'process.env.NODE_ENV': JSON.stringify('production'),
__VUE_PROD_DEVTOOLS__: JSON.stringify(
process.env.__VUE_PROD_DEVTOOLS__ || false
),
},
minify: true,
});