generated at
package.jsonのexports
Node.jx v12.7.0で入った
package.jsonのmainよりモダンなentry pointを決める設定

そのpackageのentry pointを指定できる
ここに指定しなかったpathへは外部から参照されない
そのため、外部から参照したいfileは全て列挙する必要がある
当packageのinterfaceをpackage.jsonのexportsに明示することになる
また、ESMやCJSなど異なる環境ごとに、異なるentry pointを指定できる




全然異なるものが同じ exports: {...} に書かれるので少し紛らわしい
単純なpathの列挙 (Subpath exports)
field名が必ず ./ から始まる
package.json
"exports": { ".": "./index.js", "./submodule.js": "./src/submodule.js" }
環境ごとのentry pointの分岐 (Conditional exports)
import require など予め決まった単語がfield名になる
package.json
"exports": { "import": "./index-module.js", "require": "./index-require.cjs" },
↑組み合わせも可能



package名での自己参照
こう書くと
package.json
"name": "a-package", "exports": { ".": "./index.mjs", "./foo.js": "./foo.js" }
こう読み込める
ts
import { something } from 'a-package'; // Imports "something" from ./index.mjs.
import時にわざわざsubpathを明示しなくて良い