2023-11-03
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
で学んだ構文と違っていたのでだるいです。内部の修正が必要なスクリプトもありました。初学の頃から作って保守しているツールなので、単体テストなんてものはありません。壊れていないことを祈っています。