Discourse コアは、JSパッケージ管理のためにpnpmに切り替えます

Discourse core の JS パッケージマネージャーを yarn classic から pnpm に切り替えます。これにより、インストール速度とストレージ要件が大幅に改善されます。

本番環境

マネージドホスティングまたは標準インストールを使用している場合は、何もする必要はありません。次回のアップデート時に変更が自動的に適用されます。

カスタム本番環境を使用している場合は、yarn ... コマンドをすべて pnpm ... に変更する必要があります。

開発環境

Discourse core の最新バージョンをプルした後、サーバー起動時に次のようなエラーが表示される場合があります。

pnpm がインストールされていません

または、yarn install のようなコマンドを実行すると、次のようなメッセージが表示されます。

error discourse@: エンジン "yarn" はこのモジュールと互換性がありません。バージョン "please-use-pnpm" が必要です。Got "..."

これを解決するには、以下を実行してください。

  1. npm install -g pnpm を実行します。
  2. pnpm install を実行します。
  3. 開発環境の yarn ... の使用をすべて pnpm ... に置き換えます。

プラグイン / テーマ

公式プラグイン/テーマでは、リンティング依存関係に pnpm を使用するように切り替えました。

discourse_theme CLI の場合、gem update discourse_theme を実行してローカルバージョンを更新する必要があります。

yarn に戻す場合

Discourse の yarn ベースのバージョンに切り戻す必要がある場合(例:安定版ブランチで開発する場合)、core のすべての node_modules ディレクトリを手動で削除する必要があります。

rm -rf node_modules app/assets/javascripts/*/node_modules
「いいね!」 24

開発環境で完璧にスムーズな体験ができたことを報告します。初回で動作しました。どうもありがとうございます! :rocket:

「いいね!」 7

セルフホストの場合。カスタムコンポーネントとプラグインを使用しない場合、何か行う必要がありますか?

つまり、一部のプラグインとコンポーネントは公式ではないということです。

「いいね!」 3

標準のインストールを使用している場合、何もする必要はありません。プラグインやテーマに変更は必要ありません。

「いいね!」 5

この期待バージョンを次のように変更すべきでしょうか?

please-use-pnpm-see-https://meta.discourse.org/t/324521

:smiley:

「いいね!」 6

私は別のFOSSプロジェクトに貢献しており、そこで初めてPNPMを紹介されました。移行は全く簡単なもので、スムーズで効果的で、本当に楽しかったです。

そのプロジェクトのドキュメントに、PNPMとは何か、そしてその使い方について非常に簡単なメモを作成しました。細部はプロジェクトごとに異なりますが、私のように発表があるまで全く知らなかった人が、ここで素早く紹介するのに役立つことを願っています。

「いいね!」 5

良いリソースです。TonyGさん、ありがとうございます。

ただし、注意すべき点として、そこにある「設定メモ」はどれもDiscourseには必要ありません。なぜそれらが必要なのかは不明です…おそらくWindowsベースのアプリケーションだからでしょうか?

また、「既存のプロジェクトでは、「node_modules」フォルダを削除するだけ」という彼らのメモは、Discourseではこのスクリプトによって自動的に処理されます :sunglasses:

ですから、私たちにとっては本当に次のように簡単であるべきです。

npm install -g pnpm
pnpm install
「いいね!」 1

デビッド、ここに質問があります。

ローカルでリンティングを実行するにはどうすればよいですか?

つまり、たとえば次のようなものを置き換えるにはどうすればよいですか? yarn prettier --write plugins/discourse-events

次を実行しようとしましたが、

pnpm pprettier --write plugins/discourse-events

エラーが発生します。

Error: File not found with singular glob: /Users/blah/dev/disc/discourse/plugins/discourse-events (if this was purposeful, use allowEmpty option)

p が多すぎませんか?

したがって、次のようにしたいということでしょうか。

pnpm prettier --write plugins/discourse-events

pprettier は prettier を並列実行するためのツールですが、単一のディレクトリでそのように実行することはサポートされていないようです。

「いいね!」 3

FOSSドキュメントへのご貢献ありがとうございます、@david :lol_: そのページはWindows向けのように見えますし、pnpmを使用するためにその情報が必要になるかもしれません。そのユーティリティにはどちらも当てはまらないことを編集して明確にします。

明確にしておきますが、pnpmの仕組みに関する情報は、ユーザー/開発者の便宜のためだけにあります。これには、この新しいツールを理解したいと思っている、私たちのキットの中で頻繁に使用される重要なツールに取って代わるものも含まれます。

Discourseの開発者にとっては、その情報はどこに何があるのか、そしてデフォルトの場所を変更する方法を説明しています。これは、「すべてのnode_modulesが1か所にある場合、それらはどこにあるのか?」のような質問に答えることを目的としています。Discourseコンテナでは、開発者はパッケージをデフォルトの場所に置きたくないかもしれません。もし、何らかの理由で、プラグイン開発者がnode_modulesフォルダを直接参照していて、ファイルではなく別の場所へのリンクを見つけた場合、そのページの情報は、その場所がどのように決定されるかを簡潔に説明しています。

簡潔にしようとしたのに、長くなってしまいました。:facepalm: :lolsob:

とにかく、pnpmへの移行は良いことです。ありがとうございます。

「いいね!」 2

はい、pprettier は適切ではありませんでした。ありがとうございます。
究極の問題も解決しました。
リンティングチェックを実行する前に(ディスコースディレクトリからでも)、プラグインディレクトリで pnpm install を実行する必要があるようです。

「いいね!」 2

興味深いですね :thinking:

標準のプラグインスケルトンでは、各プラグインに独自の package.json ファイルがあり、リンティング依存関係が含まれています。そして、現時点ではスケルトンはまだ yarn を使用しています。

そのため、特定のプラグインをリンティングするには、プラグインディレクトリに移動して以下を実行します。

yarn install
yarn prettier --write

コアのリンティング設定をプラグインで使用できる場合もあります。しかし、バージョン/設定が異なると、コアの eslint/prettier のバージョンがプラグインの CI で実行されているバージョンと一致しないため、面倒になる可能性があります。

「いいね!」 1

プラグインディレクトリからも pnpm を使用することを検討しますか?

まだローカルの package.json を使用していると思いますが、そうではありませんか?

「いいね!」 3

はい、絶対に検討します!コアの変更が落ち着くまで、その冒険を始めるのを待っています。

(豆知識:CDCKは600近くのテーマ/プラグインリポジトリを維持しており、それらすべてを更新する必要があります:sweat_smile:)

「いいね!」 2

はい、問題ありません!

「いいね!」 1

これは正しく機能したようですが、標準インストールのサイトでは手動で行う必要があり、自動ではないと述べているように見える通知に混乱しました。

「いいね!」 2

@Architectさん、ありがとうございます。これらのPRはアップグレードメッセージを抑制します。

「いいね!」 6

Webツール経由でのアップグレード中に問題が発生しました。アップグレードページには、Expected version "please-use-pnpm" というエラーが表示され、アップグレードは失敗したと表示されました。しかし、その後、再度「バージョン」ページにアクセスすると、アップグレードは成功したように見えました。

しかし、現在、管理ページはどれも機能しません。

追記:
コマンドラインで再構築したところ、問題は解決しました。

「いいね!」 3

@alxndr、ご報告ありがとうございます。

これにより、他のユーザーで同様の問題が発生するのを防ぐことができるはずです。この修正をプッシュしました。

「いいね!」 4

おそらく私たちのCommuniteq環境の問題かもしれませんが、正直なところ、インストール中の速度の大幅な改善は見られません。安定版のテストインストールは、テスト済みのものよりも23秒速くインストールされます。

「いいね!」 1