先日、JTC-utils という CommonJS と ESM に対応したデュアルパッケージを公開したのですが、とてつもなく苦労したのでここにメモを残しておくことにします。 デュアルパッケージに対応するという記事はいくつかありますが、この記事は次の条件の時に役に立つと思います。 ソースコードは TypeScript で作りたい。 CommonJS と ESモジュールの両方に対応したい。 サブモジュール1を作りたい。(←ここ重要) 2023/07/18 コメントを受け、一部訂正をいれています。 2023/07/19 さらに調べたところ、TypeScript の公式見解としては、たとえ型宣言ファイル(.d.ts)の内容が同じであっても、.cjs に対しては .d.cts を用意すべきとのことでしたので、その前提に基づき記述を全面的に見直しました。 何がそんなに難しいのか TypeScript