package.jsonのexports
そのpackageのentry pointを指定できる
ここに指定しなかったpathへは外部から参照されない
そのため、外部から参照したいfileは全て列挙する必要がある
また、ESMやCJSなど異なる環境ごとに、異なるentry pointを指定できる
全然異なるものが同じexports: {...}に書かれるので少し紛らわしい
field名が必ず./から始まる
code:package.json
"exports": {
".": "./index.js",
"./submodule.js": "./src/submodule.js"
}
importやrequireなど予め決まった単語がfield名になる
code:package.json
"exports": {
"import": "./index-module.js",
"require": "./index-require.cjs"
},
↑組み合わせも可能
package名での自己参照
こう書くと
code:package.json
"name": "a-package",
"exports": {
".": "./index.mjs",
"./foo.js": "./foo.js"
}
こう読み込める
code:ts
import { something } from 'a-package'; // Imports "something" from ./index.mjs.
import時にわざわざsubpathを明示しなくて良い