はじめに
今でこそAWS CDK with TypeScript大好きマンだが、TypeScript未経験の状態で始めたので割と初歩的なところで詰まった。
多分NodeとかJSとか開発経験がある人には常識的なことばかりだとは思うが、詰まったところを小ネタ的にまとめていく。
※JS、TS初心者であることは変わりないので、間違っていることなどあればこっそり教えてください。
- はじめに
- 1. 他の人とプロジェクト共有するときどうすればいいの → git cloneして npm ciをすればOK
- 2. CDKのプロジェクトでバージョンアップしたいけどどうすればいい → ncuコマンドでアップデート
- 3. cdk ...とnpx cdk ...どっち使えばいいの → 基本的にnpx cdk ...を使った方がよい
1. 他の人とプロジェクト共有するときどうすればいいの → git clone
して npm ci
をすればOK
CDKのプロジェクトを初期生成するときはcdk init --language typescript
とすればよい。でもチーム開発するときに他の人が作成したプロジェクトを使用するときどうすればいいんだ・・・?となってしまった。
結論としてはプロジェクトをgit clone
してからnpm ci
を実行すればよい。npm ci
が何をやっているかは以下の記事が参考になった。
npm ci
を実施すると、プロジェクトにあるpackage-lock.json
を元に/node_modules
にパッケージがインストールされるのでチームメンバ間で揃うはず。
2. CDKのプロジェクトでバージョンアップしたいけどどうすればいい → ncuコマンドでアップデート
CDKのバージョンアップが行われて新しいL2 Construct使いたいぜ〜等になった時に、既存のCDKプロジェクトのバージョン上げるにはどうすればいいんだ・・・?となったのでその時の対処法をメモ。
以下の記事が非常に参考になった。この記事におけるマイナーバージョンのアップデートで行なっている。
実際に上記手順でやってみる。
まずはCDKのバージョンを確認すると以下であった。
% npx cdk --version 2.50.0 (build 4c11af6)
マイナーバージョンのアップデートを実施。CDKのバージョンは2.50.0
→2.59.0
になるみたい。
% npm outdated Package Current Wanted Latest Location Depended by @types/jest 26.0.24 26.0.24 29.2.5 node_modules/@types/jest cdk_update_test @types/node 10.17.60 10.17.60 18.11.18 node_modules/@types/node cdk_update_test aws-cdk 2.50.0 2.50.0 2.59.0 node_modules/aws-cdk cdk_update_test aws-cdk-lib 2.50.0 2.50.0 2.59.0 node_modules/aws-cdk-lib cdk_update_test constructs 10.1.147 10.1.215 10.1.215 node_modules/constructs cdk_update_test jest 26.6.3 26.6.3 29.3.1 node_modules/jest cdk_update_test ts-jest 26.5.6 26.5.6 29.0.3 node_modules/ts-jest cdk_update_test ts-node 9.1.1 9.1.1 10.9.1 node_modules/ts-node cdk_update_test typescript 3.9.10 3.9.10 4.9.4 node_modules/typescript cdk_update_test % ncu -u --target minor aws-cdk 2.50.0 → 2.59.0 aws-cdk-lib 2.50.0 → 2.59.0 constructs ^10.1.147 → ^10.1.215
この後npm install
を行いCDKのバージョンを確認すると想定通りアップデートされていた。
% npm install added 3 packages, changed 5 packages, and audited 543 packages in 7s 27 packages are looking for funding run `npm fund` for details % npx cdk --version 2.59.0 (build b24095d)
この手順を踏むとpackage.json
とpackage-lock.json
が更新される。これをリポジトリにpushした後、他メンバはcloneしてnpm ci
を実行すれば良い。
3. cdk ...
とnpx cdk ...
どっち使えばいいの → 基本的にnpx cdk ...
を使った方がよい
チュートリアルなどやっていると、cdkコマンドの先頭にnpx
をつける例とつけない例がある。CDKに触り始めた頃、違いがよく分からず後者のnpx
なしの方を使っていた。
npx cdk deploy
cdk deploy
結論としてはnpx cdk...
を使うのが良いと理解している(チーム開発では特に)。
npx
をつけるとローカルのパッケージ(プロジェクトのnode_modules
配下のもの)を元に実行される形となる。npx
なしだとグローバルインストールされているCDKのバージョンで実行される。
チーム開発をしていると、プロジェクトによってはCDKのバージョンがずれていることがあるため、以下のような状況が発生し得る。
- あるプロジェクトのCDKのバージョン:v2.0.1
- 自分のPCにグローバルインストールされているCDKのバージョン:v2.10.0
そのためプロジェクトそれぞれのローカルのパッケージを元に実行するようにnpx
をつけるのが望ましい。新規参画者が1でnpm ci
を使用しセットアップするようにし、npx
をつけるルールとすればメンバー全員が同じCDKのバージョンでコマンド実行をする形となるはず。
試しにとあるCDKプロジェクト配下でバージョンを確認してみたところ、以下のようにズレが生じていた。
% cdk --version 2.54.0 (build 9f41881) % npx cdk --version 2.59.0 (build b24095d)
※npx
をつけない方がいいケースってあるのかな・・・