forked from WordPress/wordpress-playground
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.js
96 lines (92 loc) · 2.36 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
89
90
91
92
93
94
95
96
const { build } = require('esbuild');
const yargs = require('yargs');
const { execSync } = require('child_process');
const argv = yargs(process.argv.slice(2))
.command('build', 'Builds the project files')
.options({
platform: {
type: 'string',
default: 'browser',
describe: 'The platform to build for.',
choices: ['browser', 'node'],
},
watch: {
type: 'boolean',
default: false,
describe: 'Should watch the files and rebuild on change?',
},
})
.help()
.alias('help', 'h').argv;
const defaults = {
logLevel: 'info',
platform: argv.platform,
bundle: true,
define: {},
watch: argv.watch,
};
let options;
if (argv.platform === 'browser') {
// Provided by esbuild – see build.js in the repo root.
const serviceWorkerOrigin =
process.env.SERVICE_WORKER_ORIGIN || 'http://127.0.0.1:8777';
const serviceWorkerUrl = `${serviceWorkerOrigin}/service-worker.js`;
const wasmWorkerBackend = process.env.WASM_WORKER_BACKEND || 'iframe';
let wasmWorkerUrl;
if (wasmWorkerBackend === 'iframe') {
const wasmWorkerOrigin =
process.env.WASM_WORKER_ORIGIN || 'http://127.0.0.1:8778';
wasmWorkerUrl = `${wasmWorkerOrigin}/iframe-worker.html`;
} else {
wasmWorkerUrl = `${serviceWorkerOrigin}/wasm-worker.js`;
}
options = {
...defaults,
entryPoints: {
app: './src/web/app.mjs',
'service-worker': './src/web/service-worker.js',
'wasm-worker': './src/web/wasm-worker.js',
},
target: ['es6', 'chrome90', 'firefox60', 'safari11'],
outdir: './dist-web',
external: ['xmlhttprequest'],
define: {
...defaults.define,
SERVICE_WORKER_URL: JSON.stringify(serviceWorkerUrl),
WASM_WORKER_URL: JSON.stringify(wasmWorkerUrl),
WASM_WORKER_BACKEND: JSON.stringify(wasmWorkerBackend),
PHP_WASM_SIZE: JSON.stringify(
Number(
execSync('cat dist-web/php-web.wasm | wc -c')
.toString()
.trim()
)
),
WP_DATA_SIZE: JSON.stringify(
Number(
execSync('cat dist-web/wp.data | wc -c').toString().trim()
)
),
},
};
} else if (argv.platform === 'node') {
options = {
...defaults,
platform: 'node',
// format: 'esm',
entryPoints: ['./src/node/index.mjs'],
outfile: './dist-node/index.js',
target: 'node14.19.0',
external: [
'express',
'yargs',
'body-parser',
'cookie-parser',
'./src/node/node-php.js',
],
};
}
build(options).catch((e) => {
console.error(e);
process.exit(1);
});