forked from metaplex-foundation/js-examples
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.js
88 lines (81 loc) · 2.12 KB
/
build.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
const esbuild = require('esbuild');
const plugin = require('node-stdlib-browser/helpers/esbuild/plugin');
const stdLibBrowser = require('node-stdlib-browser');
const fs = require('fs');
const path = require('path');
const servor = require('servor');
const outdirectory = 'public';
//clear out any old JS or CSS
fs.readdir(outdirectory, (err, files) => {
if (err) throw err;
for (const file of files) {
if (
file.endsWith('.js') ||
file.endsWith('.css') ||
file.endsWith('.js.map')
) {
fs.unlink(path.join(outdirectory, file), (err) => {
if (err) throw err;
});
}
}
});
async function dev() {
console.log('Building development bundle ⏳');
await esbuild.build({
entryPoints: ['src/index.js'],
outdir: outdirectory,
bundle: true,
define: {
'process.env.NODE_ENV': '"development"',
global: 'global',
process: 'process',
Buffer: 'Buffer',
},
minify: false,
watch: true,
inject: [require.resolve('node-stdlib-browser/helpers/esbuild/shim')],
plugins: [plugin(stdLibBrowser)],
loader: {
'.js': 'jsx',
},
});
console.log('Development bundle built ✅');
console.log('Running server from: http://localhost:8000');
await servor({
browser: true,
root: outdirectory,
port: 8000,
});
}
async function prod() {
console.log('Build started ⏳');
await esbuild.build({
entryPoints: ['src/index.js'],
outdir: outdirectory,
bundle: true,
define: {
'process.env.NODE_ENV': '"production"',
global: 'global',
process: 'process',
Buffer: 'Buffer',
},
minify: true,
inject: [require.resolve('node-stdlib-browser/helpers/esbuild/shim')],
plugins: [plugin(stdLibBrowser)],
loader: {
'.js': 'jsx',
},
});
console.log('Build completed ✅');
}
//defaults to build
let config = '-build';
if (process.argv.length > 2) {
config = process.argv[2];
}
// Builds the bundle for dvelopment and runs a local web server
// with livereload when -watch is set
config === '-watch' && dev();
// Builds optimized bundle for production
config === '-build' && prod();