Summary
TypeScript と Node.js, そして Web という複数の複雑怪奇な歴史と仕様及び実装の果てにモジュールというものは成立している
これは嘘で, 成立はしていない (マジ)
最低限, module
と moduleResolution
のペアややってはいけないことは覚えておいて損はない…はず
e.g.)
exports
を書く場合, types
は一番最初に, default
は最後に書かなければならない (should) import/no-unresolved
で依存関係が解決できない import/no-unresolved
の解決ができていなかったため eslint 実行中にエラーを吐いた package.json
で以下のように exports
を書いていた:"exports": {
".": {
"default": "./dist/index.js",
"types": "./dist/index.d.ts"
}
},
"exports": {
".": {
"types": "./dist/index.d.ts", // <- 先に types を書く
"default": "./dist/index.js" // <- default はあと
}
},
"default"
- the generic fallback that always matches. Can be a CommonJS or ES module file. This condition should always come last. "types"
- can be used by typing systems to resolve the typing file for the given export. This condition should always be included first. package.json
を精査するときに先に default
を参照してしまうことが原因 (だと考えている) types
を参照する前に default
を参照してしまい依存関係が解決しなかったと考えるのが適切な気がする @scope/package/hoge
, @scope/package/fuga
で分けれるように exports
にした方がもしかしたらいい