diff --git a/.gitignore b/.gitignore index d473663..11b14ba 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ node_modules dist *.log package-lock.json +coverage diff --git a/README.md b/README.md index d95ff81..89e3e15 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ By default, no configuration required, but you can change esbuild behavior: new NodejsFunction(this, 'NewFunction', { esbuildOptions: { minify: false, // default - target: 'ES2017', // default + target: 'ES2017', } }); } diff --git a/src/function.ts b/src/function.ts index 4c25e4d..6c16b41 100644 --- a/src/function.ts +++ b/src/function.ts @@ -6,12 +6,12 @@ import { mergeRight, union, without } from 'ramda'; import { packExternalModules } from './pack-externals'; import { NodejsFunctionProps } from './props'; -import { extractFileName, findProjectRoot, nodeMajorVersion } from './utils'; +import { extractFileName, findProjectRoot, NodeMajorESMap, nodeMajorVersion } from './utils'; const BUILD_FOLDER = '.build'; const DEFAULT_BUILD_OPTIONS: es.BuildOptions = { bundle: true, - target: 'es2017', + target: NodeMajorESMap[nodeMajorVersion()], }; /** @@ -33,10 +33,10 @@ export class NodejsFunction extends lambda.Function { const exclude = union(props.exclude || [], ['aws-sdk']); const packager = props.packager ?? true; const handler = props.handler ?? 'index.handler'; - const defaultRunTime = nodeMajorVersion() >= 12 + const defaultRuntime = nodeMajorVersion() >= 12 ? lambda.Runtime.NODEJS_12_X : lambda.Runtime.NODEJS_10_X; - const runtime = props.runtime ?? defaultRunTime; + const runtime = props.runtime ?? defaultRuntime; const entry = extractFileName(projectRoot, handler); es.buildSync({ diff --git a/src/props.ts b/src/props.ts index 1f7c55f..8ad4974 100644 --- a/src/props.ts +++ b/src/props.ts @@ -50,7 +50,17 @@ export interface NodejsFunctionProps extends lambda.FunctionOptions { /** * The esbuild bundler specific options. * - * @default = { bundle: true, target: 'es2017' } + * @default = NodeMajorESMap { + * 8 : 'es2016' + * 9 : 'es2017' + * 10: 'es2018' + * 11: 'es2018' + * 12: 'es2019' + * 13: 'es2019' + * 14: 'es2020' + * 15: 'es2020' + * >=16: 'esnext' + * }; */ readonly esbuildOptions?: BuildOptions; } diff --git a/src/utils.ts b/src/utils.ts index c31f07c..1800528 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -105,6 +105,18 @@ export function nodeMajorVersion(): number { return parseInt(process.versions.node.split('.')[0], 10); } +export const NodeMajorESMap = { + 8: 'es2016', + 9: 'es2017', + 10: 'es2018', + 11: 'es2018', + 12: 'es2019', + 13: 'es2019', + 14: 'es2020', + 15: 'es2020', + 16: 'esnext', +}; + /** * Returns the package manager currently active if the program is executed * through an npm or yarn script like: