projenのprojenrcをJSからTSにする(projenrcTs: true)

  • projen
  • TypeScript
  • CDK

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

projenrc.jsで書いてたプロジェクトをTypeScript化した。手順自体はそんなに複雑じゃないけど、途中でprojenを2回走らせる必要があるのを忘れがちなのでメモしておく。

やったこと

1. projectオプションに projenrcTs: true を追加する

const project = new awscdk.AwsCdkConstructLibrary({
// ...
projenrcTs: true,
// ...
});
project.synth();

2. 一旦projenを実行する

npx projen

この時点ではまだ .projenrc.js のまま。

3. .projenrc.js を .projenrc.ts にリネームする

git mv .projenrc.js .projenrc.ts

4. requireをimportに書き換える

// before
const { awscdk, javascript } = require('projen');
// after
import { awscdk, javascript } from 'projen';

5. もう一度projenを実行する

npx projen

これで完了。

気づき

  • projenrcTs: true を追加しただけの状態でprojenを走らせても、ファイルの中身がJSのままだと動かない。リネームとimport化はあくまで手動作業で、projen側は面倒を見てくれない。
  • 2回projenを実行するのは、1回目でTS向けの依存関係(ts-node系)を入れて、2回目で実際に .projenrc.ts を読ませるため、という理解。ここは未確認。

ファイル作成用コマンドは以下。

touchp src/content/article/2023/02/projen-projenrc-js-to-ts.md