-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexecuteBuildCommand.js
102 lines (96 loc) · 3.02 KB
/
executeBuildCommand.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
97
98
99
100
101
102
const svgrPlugin = require("esbuild-plugin-svgr");
const esbuild = require("esbuild");
const glob = require("glob");
const { replace } = require("esbuild-plugin-replace");
const plugin = require("node-stdlib-browser/helpers/esbuild/plugin");
const stdLibBrowser = require("node-stdlib-browser");
const { nodeExternalsPlugin } = require("esbuild-node-externals");
const { sassPlugin, postcssModules } = require("esbuild-sass-plugin");
const basedir = "src";
const buildTypes = {
cjs: {
splitting: false,
format: "cjs",
tsconfig: "./tsconfig.cjs.json",
destination: "/__commonjs",
replacements: {
__sdkWalletconnectProvider: "__mocks__/sdkWalletconnectProvider",
__sdkDappVersion: process.env.npm_package_version,
},
},
esm: {
splitting: true,
format: "esm",
tsconfig: "./tsconfig.json",
destination: "",
replacements: {
__sdkDappVersion: process.env.npm_package_version,
},
},
};
module.exports = function esbuildWrapper(buildType = "esm") {
const { format, splitting, tsconfig, destination, replacements } =
buildTypes[buildType];
return function executeBuildCommand(customOptions = {}) {
glob(
"{./src/**/*.tsx,./src/**/*.ts,./src/**/*.scss}",
function (err, allFiles) {
if (err) {
console.log("error reading files", err);
}
const files = allFiles.filter((file) => {
const hasTestFiles =
file.includes("/tests/") || file.includes("/stories/");
return !hasTestFiles;
});
esbuild
.build({
entryPoints: files,
splitting,
format,
outdir: `dist${destination}`,
treeShaking: true,
minify: true,
bundle: true,
sourcemap: true,
chunkNames: "__chunks__/[name]-[hash]",
target: ["es2015"],
tsconfig,
platform: "node",
inject: [
require.resolve("node-stdlib-browser/helpers/esbuild/shim"),
],
define: {
global: "global",
process: "process",
Buffer: "Buffer",
"process.env.NODE_ENV": `"production"`,
},
plugins: [
svgrPlugin(),
plugin(stdLibBrowser),
nodeExternalsPlugin(),
sassPlugin({
loadPaths: [`./${basedir}`, "node_modules"],
basedir,
transform: postcssModules({
basedir,
localsConvention: "dashes",
generateScopedName: "dapp-core-component__[name]__[local]",
}),
}),
replace(replacements),
],
...customOptions,
})
.then(() => {
console.log(
"\x1b[36m%s\x1b[0m",
`[${new Date().toLocaleTimeString()}] sdk-dapp build succeeded for ${format} types`
);
})
.catch(() => process.exit(1));
}
);
};
};