我正试图按照CDK V2的文档组织new CodePipeline
。我的项目有许多NodejsFunction
实例。而代码构建可以安装根包。json依赖,我正在努力找到一个有组织的解决方案来安装每个包。
文件夹结构示例:
-Root
--src
---lambdaHandlers
----lambdaOne
-----index.ts
-----package.json
-----package-lock.json
----lambdaTwo
-----index.ts
-----package.json
-----package-lock.json
我要求代码构建进入每个文件夹并安装NodejsFunction
依赖项,以删除代码构建错误信息:error TS2307: Cannot find module '@aws-sdk/client-sfn' or its corresponding type declarations
。
注意:一切工作和部署使用cdk deploy -all.
代码管道CDK:
this.codePipeline = new CodePipeline(this, `${environment}-${appName}-`, {
pipelineName: `${environment}-${appName}-`,
selfMutation: true,
crossAccountKeys: false,
role: this.codePipelineRole,
dockerEnabledForSynth: true,
synth: new ShellStep("Deployment", {
input: CodePipelineSource.codeCommit(this.codeRepository, environment, { codeBuildCloneOutput: true }),
installCommands: ["npm i -g npm@latest", "npm install -g typescript"],
commands: [
"npm ci",
"npm run build",
"cdk synth",
],
})
});
一个解我尝试使用this.codePipeline
下面的命令部分的代码为每个Lambda函数。虽然这可以用于安装软件包,但我留下了打字错误:
"cd src/lambda-handlers/api-gateway-entry-points/entryPointMagentoCredits", "npm ci"
错误收到:intoMagentoQueueConsumer/node_modules/axios/index.d.ts(6,18): error TS1005: ']' expected.
Full Error
NodejsFunction构造不需要package。lambda的Json。它可以从根package.json中组装包和代码部分。在我看来,这使得它如此强大。
解决方案:
- 没有要求将
cd
进入每个NodejsFunction
- 所有
NodejsFunction
依赖项都应该存储在根包中。json文件 - 所有
NodejsFunction
处理程序都可以存储在代码中的任何地方,并且可以使用entry
键值对引用,或者存储在lib文件夹(DOCS)中。
新建文件结构:
-Root
--lib
---lambda-Stack
----index.ts
----lambdaOne.ts
----lambdaTwo.ts
--package.json
--package-lock.json
我添加了depsLockFilePath
参考包锁。json文件,但我不确定这是否是必要的。(文档)