diff --git a/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts b/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts index eb2f59db03e09..fafac54e9a60e 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts @@ -197,8 +197,8 @@ function extractTsConfig(tsconfigPath: string, previousCompilerOptions?: Record< // eslint-disable-next-line @typescript-eslint/no-require-imports const { extends: extendedConfig, compilerOptions } = require(tsconfigPath); const updatedCompilerOptions = { - ...(previousCompilerOptions ?? {}), ...compilerOptions, + ...(previousCompilerOptions ?? {}), }; if (extendedConfig) { return extractTsConfig( diff --git a/packages/@aws-cdk/aws-lambda-nodejs/test/testtsconfig-extended.json b/packages/@aws-cdk/aws-lambda-nodejs/test/testtsconfig-extended.json new file mode 100644 index 0000000000000..d84edea2e872b --- /dev/null +++ b/packages/@aws-cdk/aws-lambda-nodejs/test/testtsconfig-extended.json @@ -0,0 +1,6 @@ +{ + "extends": "./testtsconfig.json", + "compilerOptions": { + "target": "ES2022" + } +} diff --git a/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts b/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts index a0b27157b8a98..6ea345f505721 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts @@ -213,4 +213,37 @@ describe('getTsconfigCompilerOptions', () => { '--target ES2020', ].join(' ')); }); + + test('should extract compiler options with extended config overriding', () => { + const tsconfig = path.join(__dirname, 'testtsconfig-extended.json'); + const compilerOptions = getTsconfigCompilerOptions(tsconfig); + expect(compilerOptions).toEqual([ + '--alwaysStrict', + '--charset utf8', + '--declaration', + '--declarationMap false', + '--experimentalDecorators', + '--incremental false', + '--inlineSourceMap', + '--inlineSources', + '--lib es2020', + '--module CommonJS', + '--newLine lf', + '--noEmitOnError', + '--noFallthroughCasesInSwitch', + '--noImplicitAny', + '--noImplicitReturns', + '--noImplicitThis', + '--noUnusedLocals', + '--noUnusedParameters', + '--outDir ./', + '--resolveJsonModule', + '--rootDir ./', + '--strict', + '--strictNullChecks', + '--strictPropertyInitialization', + '--stripInternal false', + '--target ES2022', + ].join(' ')); + }); });