-
Notifications
You must be signed in to change notification settings - Fork 0
/
esbuild-lambda.cjs
82 lines (74 loc) · 2.43 KB
/
esbuild-lambda.cjs
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
const fs = require('fs')
const path = require('path')
const esbuild = require('esbuild')
//(async () => {
var walk = function (dir) {
var results = [];
var list = fs.readdirSync(dir);
list.forEach(function (file) {
file = dir + '/' + file;
var stat = fs.statSync(file);
if (stat && stat.isDirectory()) {
/* Recurse into a subdirectory */
results = results.concat(walk(file));
} else {
/* Is a file */
results.push(file);
}
});
return results;
}
const entrypoints = walk('src/lambdas').filter(p => !p.includes('handler.ts'))
//.filter(p => p.includes('.ts'))
const outDir = `dist-lambda`;
const functionsDir = `src`;
esbuild
.build({
entryPoints: entrypoints,
//entryPoints: ["src/lambdas/env/handler.ts"],
bundle: true,
minify: true,
//splitting: true,
outdir: path.join(__dirname, outDir),
outbase: functionsDir,
outExtension: { '.js': '.mjs' },
format: 'esm',
platform: 'node',
//sourcemap: 'inline',
target: ['node18'],
external: ['sequelize', 'aws-sdk','lodash', 'aws-lambda','@aws-sdk/*','dynamodb-onetable', 'react-html-email', 'bcryptjs', 'mariadb'],
metafile: true,
banner: {
js: `
import path from 'path';
import { fileURLToPath } from 'url';
import { createRequire as topLevelCreateRequire } from 'module';
const require = topLevelCreateRequire(import.meta.url);
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
`,
},
}).then(build => {
return esbuild
.build({
entryPoints:['src/lambdas/test/handler.ts'
],
//entryPoints: ["src/lambdas/env/handler.ts"],
bundle: true,
minify: false,
//splitting: true,
outdir: path.join(__dirname, outDir),
outbase: functionsDir,
outExtension: { '.js': '.mjs' },
//format: 'cjs',
platform: 'node',
//sourcemap: 'inline',
target: ['node16'],
external: ['sequelize','aws-sdk','lodash', 'aws-lambda'],
metafile: true,
}).then(build => {
require('fs').writeFileSync('meta.json',
JSON.stringify(build.metafile))
})
})
//})()