package.jsonのmainとexports
全部読みましょう
つらmrsekut.icon
これらは、EMSとCJSの両方に適用される
1つのentry pointのみを指定する
全てのversionのNode.jsでサポートされている (昔からある)
機能が限定的である
mainより新しく、できることが多い
複数のentry pointを指定できる
環境ごとの条件付き解決ができる
基本的にこっちを使うべき
どっちを使うべきか?
Node.js v10以下をサポートするならmainも必要
両方指定した場合
exportsとmainの両方が定義されている場合は、exportsが優先される
当然、Node.js v10以下ならmainのみが見られる
mainからexportsへ移行する際の注意点
元のmainの書き方で参照できた箇所を全てexportsに列挙しないと破壊的変更になる
例えば、そのpackageの利用者が
require('your-package/package.json')のような使い方をしていた場合、
exports内に./package.jsonも明示していないと