Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

yarn → pnpm 移行(各パッケージの依存のインストール忘れを検知できるようにする) #255

Open
fsubal opened this issue Mar 8, 2023 · 8 comments

Comments

@fsubal
Copy link
Member

fsubal commented Mar 8, 2023

必要だと思う機能の内容を書いてください

各パッケージの依存のインストール忘れを検知できるようにするツールを使いたい。

選択肢としては以下の通り

この機能が必要と考えられる理由を書いてください

#226

現状だとモノレポ内のすべてのパッケージが同じ node_modules を共有しており、各パッケージの package.json に必要な依存が書かれていなかったとしてもなんとなく動いてしまう問題がある。

( たとえば、 @types/react をインストールし忘れてるパッケージがいくつかあるが、特に型エラーにならないので放置されたり気づかないままになってたりする )

これにより、本来 dependencies として追加されてほしいものが誤って devDependencies から読まれてしまう、意図しないものがバンドルされてしまうなどの問題が起こっている

この機能があった場合にどういう動きをするかの例を書いてください

雑に星取表を書くと以下のようになるはず。詳しくは各ツールの PR を参照

Yarn PnP pnpm eslint-plugin-import
依存追加忘れ インストール時エラー インストール時エラー lintエラー
peer dependencies つど package.json に追加 auto install あり 何もしない
エディタサポート プラグインが必要(VSCodeのみサポート) 制限なし 制限なし
@fsubal
Copy link
Member Author

fsubal commented Mar 8, 2023

ちなみに私は pnpm 推しです

@naporin0624
Copy link
Member

naporin0624 commented Mar 8, 2023

パッケージマネージャはそのままで、eslint-plugin-import などでおかしな import を検知する
https://zenn.dev/yusukehirao/articles/no-extraneous-dependencies

最近使っていますが結構いい感じでした。ただ vscode で使用しているときに package.json が更新されたときに vscode eslint extension の再起動が必要なので、事前に弾かれる pnpm は良さそうだなと思っています。

@fsubal
Copy link
Member Author

fsubal commented Mar 8, 2023

peer dependencies が pnpm の機能で auto install できるのを良しとすべきなのかが分かってない( 依存の依存の peer dependencies を我々側は明示すべきなのか? 利用側のプロダクトが peer dependencies の入れ忘れをするなら意味がないのか? )。

@fsubal
Copy link
Member Author

fsubal commented Mar 8, 2023

eslint-plugin-import と pnpm は別に両方入れても良い( いや、前者だけで済むよみたいな根拠がない限りは )

@saitolume
Copy link

yarn PnP を採用すると VSCode 以外のエディタからはコントリビュートしづらくなるという理由で、pnpm または eslint-plugin-import を推します

@ciffelia
Copy link
Contributor

  • 未検証ですが、dependenciesに追加されていてほしいものがdevDependenciesにあったときにエラーを吐いてくれるのはeslint-plugin-importだけだったと思います。ただ@types/*のインストール忘れは検知できないはずです。
  • Yarn PnPはWebStorm/PhpStormで動きますし、TypeScript LSPサーバーでも動くらしいですのでエディタサポートについてはそれほど心配ないと思います。
  • Yarn PnPにした場合、Yarn PnPに対応しているモジュールバンドラやテストランナーしか使えないので注意が必要です。Microbundleとesbuildは対応してます。

@fsubal
Copy link
Member Author

fsubal commented Mar 14, 2023

1個懸念を書くのを忘れてた。pnpm は dependabot でサポートされていなそう

dependabot/dependabot-core#1736

yarn v2 もつい最近までなかったのでいまさら感はあるが、やはり renovate しか選択肢がないという状況になりそう

@fsubal fsubal pinned this issue Mar 22, 2023
@fsubal fsubal changed the title 各パッケージの依存のインストール忘れを検知できるようにする yarn → pnpm 移行(各パッケージの依存のインストール忘れを検知できるようにする) May 24, 2023
@fsubal
Copy link
Member Author

fsubal commented Jun 26, 2023

pnpm サポートされてた

dependabot/dependabot-core#1736 (comment)

@toshusai toshusai unpinned this issue Sep 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants