CJS to MJS

HP生成用のツールを保守・更新しました。

  • prettier導入
  • eslint導入
  • commonjs → ES modules
  • 変換ツールのsubmodule化
  • 変換ツールの一部ファイルをコンテンツ管理側へ引越

ES module化では以下のような作業を行いました。

  • package.jsonを type: "module" に設定
  • const xxx = require("abc");import xxx from "abc/index.js"; に置換
  • module.exports = export default に置換
  • 動的な require はすべてトップレベルに移動
  • default exportがない, named exportがない怒られには個別対応
  • __dirname__filename を削除
  • グローバル変数は globalThis でお茶を濁す

最初は単純置換でOKだと思っていましたが、読み込みの動作原理(よく知らない)の違いによるものなのか、意外と作業が多かったです。import構文には .js が必要で、index.jsが省略できいない点が typescript で学んだ構文と違っていたのでだるいです。内部の修正が必要なスクリプトもありました。初学の頃から作って保守しているツールなので、単体テストなんてものはありません。壊れていないことを祈っています。