-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.js
56 lines (51 loc) · 1.45 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
import * as esbuild from "esbuild";
import fs from "fs";
import path from "path";
const JS_EXT_RE = /\.(mjs|cjs|ts|js|tsx|jsx)$/;
// Must not start with "/" or "./" or "../"
// "/test/node_modules/foo"
// "c:/node_modules/foo"
export const EXTERNAL_REGEXP = /^[^./]|^\.[^./]|^\.\.[^/]/;
await esbuild.build({
entryPoints: ["index.ts"],
outfile: "test.cjs",
format: "cjs",
platform: "node",
bundle: true,
target: "esnext",
plugins: [
// https://github.com/evanw/esbuild/issues/619#issuecomment-751995294
{
name: "make-all-packages-external",
setup(_build) {
_build.onResolve({ filter: EXTERNAL_REGEXP }, async (args) => {
let external = true;
// FIXME: windows external entrypoint
if (args.kind === "entry-point") {
external = false;
}
try {
const resolvedPath = require.resolve(args.path, {
paths: [args.resolveDir],
});
// If it is a typescript or esm package, we should bundle it.
if (
BUNDLED_EXT_RE.test(resolvedPath) ||
(await isTypeModulePkg(resolvedPath))
) {
return {
external: false,
};
}
} catch (err) {
// If the package can not be resolved, do nothing.
}
return {
path: args.path,
external,
};
});
},
},
],
});