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

[chore] Enforce yarn-classic even if yarn berry is installed #651

Closed
wants to merge 5 commits into from

Conversation

AsPulse
Copy link

@AsPulse AsPulse commented Aug 9, 2023

新しいバージョンでも動く方法をご存じであれば PR を作ってくださると助かります。

このコメントを見かけまして、僭越ながらyarnをv3.6.1にアップグレードするPRを作成させていただきました。
corepackにより、yarn berryユーザーがyarn classicを使えるようにします。

@smikitky
Copy link
Member

smikitky commented Aug 9, 2023

申し訳ないのですが、このリポジトリはあくまで本家(英語版 react.dev)に追従する形のフォークですので、日本語版だけで独自にパッケージマネージャやロックファイルを互換性のないものに変えることは考えていません。本家のほうで依存ライブラリはたびたび更新されますし、我々はそれに確実かつ迅速に追従する必要があります。

そもそも Textlint など日本語独自機能に関する依存ライブラリとロックファイルを完全に別ディレクトリ・別パッケージとして分けて管理している理由も、本家の方で yarn.lock が更新されたときにコンフリクトを起こさず追従するためです。

許容できるのは「package.json の scripts の部分や Next.js の設定ファイルを最小限のみ書き換えてそれをメンテする」「本家にないディレクトリ名・ファイル名で独自機能をメンテする」といった、将来的なマージの支障にほぼならないものだけになります。

Yarn のアップグレードを行う場合は、先に本家の方に PR を作成していただく形になると思います(React チームがそれに興味があるかどうか分かりませんが…)。

@smikitky smikitky added the workflow Working environment improvements including linting and CSS styles label Aug 9, 2023
@smikitky
Copy link
Member

smikitky commented Aug 9, 2023

「ルートにある yarn.lock 自体は触らないが、Yarn 2/3 で Textlint が動くようにするために少し package.json 内のコマンドの書き方や /textlint ディレクトリ内のファイルを変える」といったものであれば、全く問題ありません。

@AsPulse AsPulse changed the title [chore] Use yarn v3 [chore] Enforce yarn-classic even if yarn berry is installed Aug 9, 2023
@AsPulse
Copy link
Author

AsPulse commented Aug 9, 2023

やはりそうですよね……お手数おかけして申し訳ないです。

yarn berryは、「yarn-classic (今使われているバージョン)のプロジェクトでyarn installを実行するとberryにアップグレードする」という挙動を持ち合わせていて、berryだと起動すらも難しい状況になっていて……

代案として、逆に「yarn-classicの使用を強制する」内容としてみたのですが、こちらなら問題ないでしょうか……。
diffでいうと、「同梱したyarn本体」「yarn berryが読み込む設定ファイル (.yarnrc.yml)」の2点の追加だけで、既存のファイルの編集は行っていません。

@AsPulse
Copy link
Author

AsPulse commented Aug 9, 2023

yarn側もさっさとberryに移してくれみたいな感じなんで、本家にもPR出してみようと思います!
(本家がyarn berry使うようになったら、このPRと競合しちゃいそうではあるんですが……)

@smikitky
Copy link
Member

smikitky commented Aug 9, 2023

これは、yarn set version 1 のようなことをして、ダウンロードされてきたものをコミットした、という認識で良いでしょうか。何にせよ、これは日本語独自でやらないといけない類のことではありませんので、本家でやっていただくのが筋だと思います。

ただ、ざっと見ましたが本家のリポジトリでも、Yarn のバージョンについて何か言っている人はいないようです。理由は分かりませんが、Yarn 2/3 系を常用している人は Yarn 1 を使わないといけない場合にバージョンを切り替える方法についても大概知っているから…ということでしょうか。

もしこの件でひっかかる Yarn ユーザが多いのだとしても、巨大なファイルをリポジトリに含めるよりは、本家の README(多分 v1 を前提としておりバージョンについて何も書かれていない)に対して説明を加える PR を出すとか、Wiki に説明を載せる、といった、より穏当な手段を採るほうがよいかなと思います。うちの Wiki は誰でも編集できる設定にはしていませんが、文面を考えていただけるならこちらで載せます。

@AsPulse
Copy link
Author

AsPulse commented Aug 9, 2023

なるほど…
Berryユーザーが(リポジトリへの変更なしに)v1を使うきれいな方法があまり思いつきませんでしたので、Wiki/READNEへの追記でなんとかするのも私の知識じゃ難しそうです……。

ただ、v1を使い続けるのがそもそもよくないとはやはり思いますので、本家にアップデートのPRを出してみます!

お手数かけてすみませんでした、ご対応ありがとうございました!

@AsPulse AsPulse closed this Aug 9, 2023
@AsPulse AsPulse deleted the chore/set-yarn-version-3 branch August 9, 2023 23:20
@smikitky
Copy link
Member

smikitky commented Aug 10, 2023

@AsPulse

Berryユーザーが(リポジトリへの変更なしに)v1を使うきれいな方法があまり思いつきませんでした

普段 Yarn 使っていないので間違っていたら申し訳ありませんが、.git/info/exclude.yarnyarnrc.yml を書いて yarn set version 1 してもらうのではダメなのでしょうか?

@AsPulse
Copy link
Author

AsPulse commented Aug 27, 2023

ええと、それも一応リポジトリの変更を入れてることに繋がらないかな……と思いまして(本家がyarnrc.yml入れたら、その環境ではコンフリクトしますから……)

@smikitky
Copy link
Member

私も含む多くの人が普段から .vscode とか .idea とかのフォルダを同じ仕組みで ignore しつつ使っていると思いますので、それ自体は問題とされないと思います。それにもし将来本家がリポジトリに yarnrc.yml を入れる日が来るなら、つまりそれは新しい Yarn に対応したという意味なのでしょうから、その時点でありがたくそれを使えばいいと思いますし。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
workflow Working environment improvements including linting and CSS styles
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants