雑多な切り抜き モジュール関係

まず、「package.json の imports / exports フィールド」については、

TyepScriptの設定でもモジュール名マップ〈エイリアス〉ができるらしい。使っている例が次にあるが、オーバーキルしてるように思う。"#/" のような記号がモジュール名として出現するとドキッっとする。あまり良くない。

インポートエイリアス設定:

tsconfig.json

{
  "compilerOptions": {
    "baseUrl": "./src/",
    "paths": {
      "#/*": ["*"]
    },   
  }
}

package.json

{
  "jest": {
    "moduleNameMapper": {
      "^#/(.+)": "<rootDir>/src/$1"
    }
  }
}

これで #/some/module は ${projectRoot}/src/some/module にマップされます。

NPMパッケージとモジュールシステムでは、ややこしい現象も起きるらしい。


デュアルパッケージについては:

ブラウザは考えないことしても、関連する事柄達が:

  • node.js のモジュールシステム
  • package.json のモジュール関係フィールド imports/exports
  • TypeScriptのtsconfig.jsonの$.compilerOptions.pathsフィールド(オブジェクト値)

これらが絡まってややこしいことに。