package.jsonのexports
そのpackageのentry pointを指定できる
ここに指定しなかったpathへは外部から参照されない
そのため、外部から参照したいfileは全て列挙する必要がある
また、ESMやCJSなど異なる環境ごとに、異なるentry pointを指定できる
全然異なるものが同じ exports: {...}
に書かれるので少し紛らわしい
field名が必ず ./
から始まる
package.json"exports": {
".": "./index.js",
"./submodule.js": "./src/submodule.js"
}
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"
}
こう読み込める
tsimport { something } from 'a-package'; // Imports "something" from ./index.mjs.
import時にわざわざsubpathを明示しなくて良い