-
-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy path.esbuild.js
More file actions
53 lines (47 loc) · 2.64 KB
/
.esbuild.js
File metadata and controls
53 lines (47 loc) · 2.64 KB
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
import esbuild from "esbuild";
import { umdWrapper } from "esbuild-plugin-umd-wrapper"
import pkg from './package.json' with { type: 'json' };
const common = {
bundle: true,
minify: true,
target: 'es2020',
define: { '__VERSION__': JSON.stringify(pkg.version), 'globalThis.__PROFILE__': 'false' },
sourcemap: 'external'
}
const umd = (libraryName) => ({
...common,
format: "umd",
plugins: [umdWrapper({ libraryName })]
})
const umdAutoinit = `var cur = document.currentScript;
var prefix = cur.getAttribute("prefix") ?? cur.dataset.prefix ?? cur.dataset.spraePrefix;
var start = cur.getAttribute("start") ?? cur.dataset.start ?? cur.dataset.spraeStart;
cur.removeAttribute("prefix"); cur.removeAttribute("start"); delete cur.dataset.prefix; delete cur.dataset.start; delete cur.dataset.spraePrefix; delete cur.dataset.spraeStart;
if (prefix) sprae.use({ prefix });
if (start != null && start !== 'false') (start && start !== 'true' ? document.querySelectorAll(start) : [document.body || document.documentElement]).forEach(el => sprae.start(el))`
await Promise.all([
// default: built-in signals + new Function compiler
esbuild.build({ entryPoints: ["sprae.js"], outfile: "dist/sprae.js", format: "esm", ...common }),
esbuild.build({
stdin: { contents: `var sprae = require("./sprae.js").default; module.exports = sprae; ${umdAutoinit}`, resolveDir: '.' },
outfile: "dist/sprae.umd.js", ...umd("sprae")
}),
// csp: built-in signals + jessie compiler (no eval)
esbuild.build({
stdin: { contents: `import sprae from "./sprae.js"; import jessie from "subscript/jessie"; sprae.use({ compile: jessie }); export * from "./sprae.js"; export default sprae`, resolveDir: '.' },
outfile: "dist/sprae-csp.js", format: "esm", ...common
}),
esbuild.build({
stdin: { contents: `var sprae = require("./sprae.js").default; var jessie = require("subscript/jessie"); sprae.use({ compile: jessie }); module.exports = sprae; ${umdAutoinit}`, resolveDir: '.' },
outfile: "dist/sprae-csp.umd.js", ...umd("sprae")
}),
// preact: preact signals + new Function compiler
esbuild.build({
stdin: { contents: `import sprae, { use } from "./sprae.js"; import * as signals from "@preact/signals-core"; use(signals); export * from "./sprae.js"; export default sprae`, resolveDir: '.' },
outfile: "dist/sprae-preact.js", format: "esm", ...common
}),
esbuild.build({
stdin: { contents: `var sprae = require("./sprae.js").default; var signals = require("@preact/signals-core"); var use = require("./core.js").use; use(signals); module.exports = sprae; ${umdAutoinit}`, resolveDir: '.' },
outfile: "dist/sprae-preact.umd.js", ...umd("sprae")
}),
])