forked from multiversx/mx-sdk-dapp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexecuteBuildCommand.js
84 lines (79 loc) · 2.35 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
const svgrPlugin = require('esbuild-plugin-svgr');
const esbuild = require('esbuild');
const glob = require('glob');
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'
},
esm: {
splitting: true,
format: 'esm',
tsconfig: './tsconfig.json',
destination: ''
}
};
module.exports = function esbuildWrapper(buildType = 'esm') {
const { format, splitting, tsconfig, destination } = buildTypes[buildType];
return function executeBuildCommand(customOptions = {}) {
glob('{./src/**/*.tsx,./src/**/*.ts,./src/**/*.scss}', function(
err,
files
) {
if (err) {
console.log('error reading files', err);
}
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]'
})
})
],
...customOptions
})
.then(() => {
console.log(
'\x1b[36m%s\x1b[0m',
`[${new Date().toLocaleTimeString()}] Dapp-core build succeeded for ${format} types`
);
})
.catch(() => process.exit(1));
});
};
};