バージョン・パッケージ

package.jsonのexports可視化

マニフェストと入口を指定し、どの条件分岐が先に選ばれるかを確認します。

package.jsonのexports

package.json入力

マニフェストはこのブラウザー内で処理します。npmへの問い合わせやアップロードはありません。

解決結果

package.jsonを入力してください。

解析オプション

空白またはカンマで区切ります。ブラウザーやバンドラーの完全な動作は再現しません。

入力または設定が変わりました。再解析するまで書き出せません。

importでは動くのにrequireでは失敗する場合、package.jsonのexportsに並んだ条件の順序が原因かもしれません。条件名の集合だけを見ず、実際の分岐を追ってください。

このマップに対して一つの入口を試し、#で始まる指定子ならimportsへ切り替えます。解決先の文字列を示しますが、ファイルの読み込みは行いません。

package.jsonのexportsを可視化する理由

最初に一致する分岐が分かる

条件付きエクスポートはJSONのキー順に評価されます。選択した条件の入力順ではありません。defaultが先にあると後続のimportを隠す様子まで表示します。

一つの設定から分かれる経路のうち、最初に一致する経路だけが強調された図。

公開入口と内部参照を分ける

exportsは.や./featureを外部に公開し、importsの#configは内部専用です。nullは対象ファイルの欠落ではなく、明示的な遮断です。

公開入口二つと内部の#参照、遮断された経路に分かれるパッケージ設定の図。

推測せずに一つの指定子を追う

01

パッケージ名か#参照を試す

sample-kit/featureはnameを元に./featureへ変換します。#configならimportsを使い、同じパッケージ内の参照として扱います。

02

条件を切り替える

既定はNode.jsのimportです。requireや追加条件に変えると、先に一致するキーが見えます。自動解析は350ミリ秒待機し、オフならCtrl/Cmd + Enterでも実行できます。 解決順序は入力した条件の並びではなくキー順です。

03

対象と診断を読む

一致したキーと対象文字列を確認してください。パス診断は構文だけを検査します。入力を変えると古いレポートのコピーと保存は無効になります。

入口選択を段階ごとに確認

完全一致と*パターン

ルート、サブパスエクスポート、*パターンを試せます。完全一致が優先され、パターンではより具体的なキーを選びます。nullで一部を除外できます。

Nodeと追加条件

Node.jsのimport・requireを比較できます。browser、types、developmentを追加した場合は条件集合のプレビューであり、TypeScriptやbundlerの検証ではありません。 import条件を明示して結果を確認できます。

ローカルのパス診断

exportsの対象は./で始まり、親ディレクトリやnode_modulesへ進めません。importsの外部パッケージ指定は許可し、コードは実行しません。

解決結果で確認できる範囲

実ファイルは検査しない
設定が選んだ文字列を表示します。ファイルが存在するか、公開アーカイブに含まれるか、実行できるかは判断できません。
独自条件はプレビュー
browserやtypesを加えてもVite、webpack、TypeScriptの解決は再現しません。各ツールは拡張子や型宣言など独自の規則を持ちます。
#は公開APIではない
importsの#エイリアスはパッケージ内部のみで有効です。外部パッケージを指していても、その#名を利用者向け入口として公開しません。
ネットワークもビルドも使わない
npmから取得せず、ディレクトリを走査せず、スクリプトも実行しません。Nodeの全バージョンの互換性は保証しません。

package.jsonのexportsに関する質問

package.jsonのexportsで条件の順序には意味がある?

あります。条件オブジェクトのキーを記述順に調べ、最初に有効な対象を選びます。defaultを先頭にするとimportやrequireが選ばれない場合があります。

exportsはなぜmainより優先される?

対応するNode.jsではexportsが公開入口を定義します。mainは従来のルート入口ですが、exportsがある場合、ここではexportsのマップを調べます。

未公開のサブパスをimportするとどうなる?

exportsにないパスは原則として外部から参照できません。完全一致や*パターンを確認してください。nullなら意図的な遮断です。

importとrequireで別のファイルを選ぶには?

呼び出し方を切り替えて同じ入口を試してください。Nodeの有効条件が変わり、JSON内のキー順に従って対象が選ばれます。

types条件はどこに置く?

型ツールが対象に到達できるよう、一般に他の一致条件より前に置きます。ただしこのページはTypeScriptの型ファイルや拡張子を検査しません。

ブラウザ向け条件はNode.jsでも一致する?

通常のNode既定条件にbrowserは含まれません。追加条件に明示すれば選択結果を試せますが、ブラウザーやbundlerの完全な解決とは異なります。

ほかに確認したい設定はありますか?

package.jsonのexportsを今すぐ試す

同じ入口のimportとrequireを比べ、package.jsonのexportsの分岐をレポートとして共有できます。