npm package cdk和aw -cdk有什么区别?



在与AWS CDK Toolkit交互的shell脚本中,我经常看到npx -- cdknpx -- aws-cdk。显然,有两个npm包cdkaws-cdk。这两者的区别是什么?

此外,在与这两个包交互时,我的观察结果令人困惑。

npx -- cdk --version     # output: Need to install the following packages: cdk@2.32.1
npx -- aws-cdk --version # output: Need to install the following packages: aws-cdk@2.32.1

由于两个包都不是本地安装的,所以两个命令都希望安装相应的包,很好。

npm install -g cdk@2.32.0
npx -- cdk --version     # output: 2.32.0 (build 00e0c2d)
npx -- aws-cdk --version # output: Need to install the following packages: aws-cdk@2.32.1

在本地安装cdk后,npx -- cdk执行本地包,npx -- aws-cdk仍然要安装aws-cdk,也很好。

npm install -g aws-cdk@2.32.0
npx -- cdk --version     # output: 2.32.0 (build 00e0c2d)
npx -- aws-cdk --version # output: Need to install the following packages: aws-cdk@2.32.1

现在它变得令人困惑。虽然我们在本地安装了aws-cdk而不是cdk,但npx -- cdk仍然执行一些本地包,npx -- aws-cdk仍然想安装aws-cdk。为什么?

aws-cdk包提供了cdk命令,这是AWS云开发工具包的入口点。

当你在node_modules/.bin中安装aws-cdk包时,安装了cdk命令。这允许在package.json脚本中使用cdk命令。

cdk命令也是唯一由aw -cdk添加到.bin的命令。

根据所有的文档,为了从CLI与AWS CDK交互,应该使用cdk命令。即使包的名称是aws-cdk

现在,npx提供了一种方便的方式来从包中运行命令,而不管它是否已经安装。

当包名与其提供的命令名匹配时,这以最直接的方式工作。这不是aws-cdk的情况。为了解决这个问题,并允许任何人运行npx cdk ..., AWS CDK决定发布一个名为cdk的包。这是一个围绕aws-cdk包提供的cdk命令的小包装器。

最新更新