Closed mozisan closed 1 year ago
@mozisan 問題の報告と修正ありがとうございます 🙂
修正の方針は問題ないと思います。
ただ、まだ npm ci
でエラーが発生するようです。確認いただけるとありがたいです。 :cry:
@uhyo ありがとうございます!
npm ci
のエラーはnpm
のバージョンに起因するようです。
.npmrc
にinstall-links
という記述を追加しましたが、古いnpm
だとこれを認識せず、意図する挙動にならないという状況です。
さっと調べた感じだとv8系のどこかから.npmrc
にinstall-links
という項目を記述できるようになっているので、ひとまずCI環境では最新のv9系を使うようにnpm
のバージョンを指定するように変更しました。
このプラグインには大変お世話になってます! (またuhyoさんのさまざまな記事もいつも大変楽しく読ませていただいております、ありがとうございます :raised_hands: )
問題
defaultImportability
というオプションが追加されたのを知りすぐに飛びついてしまいました!!!! ただ、defaultImportability
をpackage
にしてみたところ、package.json
にmain
フィールドなどのエントリーポイントがないパッケージ(例えばtype-fest
)ではエラーになってしまうことに気づきました 😞 インポートする対象がnode_modules
配下かどうかの判定にあたってrequire.resolve()
を使用していますが、package.json
にエントリーポイントが指定されていないとパスの解決ができないようです。解決策
でパスの解決ができない場合、
というようにパッケージ直下の
package.json
へのパスの解決を試みるように変更しています。node_modules
配下のパッケージであればpackage.json
を持っているはずなので、これをもって「node_modules
配下のパッケージかどうか」の判定ができると考えました。テストについて
今回のケースについてのテストを追加する上で、「
package.json
にmain
フィールドなどのエントリーポイントがないパッケージ」を用意する必要があります。type-fest
などをdevDependencies
に追加することも考えましたが、type-fest
側にアップデートが加わりpackage.json
にエントリーポイントが追加されたりするとあとあと面倒に感じたので、このリポジトリ内で完結させました。src/__tests__/fixtures/packages/missing_entrypoint
にテスト用のパッケージを用意し、以下のコマンドによってnode_modules
配下にインストールしています。ディレクトリ構造だったり命名だったり、そもそもこのやり方自体についてなど何かよくない点ありましたら修正します!