DUICUO

オープンソース プロジェクトに PR を送信したことがありますか?

[[415495]]

オープンソースのライブラリやフレームワークにプルリクエスト (PR) を送信したことがありますか?

そうでない場合、今日の記事ではオープンソース ライブラリに PR を送信する方法を説明します。

オープンソース プロジェクトに PR を送信する理由は何ですか?

この話は数年前(2019年)、私が仮想DOMのおもちゃをいじっていた頃に遡ります(以前の記事「仮想DOMとは一体何なのか?」参照)。標準的なフロントエンドプロジェクトでは、ビルドツール、Lintツール、そしてコードフォーマットはどれも不可欠です。

ビルドツールにはRollupを選択しました。ビルドのたびに自動的にコードをLintしてくれることを期待していたからです。そこで、Rollupプラグイン(rollup-plugin-eslint)を導入しました。

[[415496]]

このプラグインを使用している間、Webpackの同等のプラグインであるeslint-webpack-pluginと比べていくつか違いがあることに気付きました。Webpackのeslint-webpack-pluginを使用する場合は、保存時にコードを自動的に修正するには、`fix`プロパティを設定するだけで済みます。

  1. // webpack.config.js
  2. const ESLintPlugin = require( 'eslint-webpack-plugin' );
  3.  
  4. モジュール.エクスポート = {
  5. // ...
  6. プラグイン: [
  7. 新しいESLintプラグイン({
  8. 修正: true
  9. 拡張子: [ 'js' , 'jsx' ]
  10. })
  11. };

rollup-plugin-eslint を使用する場合、ドキュメントにはこのオプションについて何も記載されていないようです。つまり、rollup-plugin-eslint はこの機能を全くサポートしていないということです。そこで、問題を検索してみたところ、驚くべき発見がありました。2016年に既に誰かがこの質問をしていたのです!

著者の返答もシンプルでした。PR の提出は歓迎します。

「この機能はずっと前からあるのに、まだ誰も実装していない。きっとすごく難しいんだろうな」と思いました。でも、隣にあるeslint-webpack-pluginが明らかにこの機能をサポートしていたので、実装方法を見てみることにしました。🐶

そこで、eslint-webpack-plugin のコードを複製して検索したところ、この機能を実現するのに必要なコードは 3 行だけであることがわかりました。

  1. if (オプション.fix) {
  2. ESLint.outputFixes(結果を待機します);
  3. }

私は興奮した心と震える手で、すぐに rollup-plugin-eslint に PR を送信しました。

  • 🔗PR: https://github.com/TrySound/rollup-plugin-eslint/pull/27

重要な点は、作者自身もこれがこんなに簡単に実装できるとは思っていなかったということです。

GitHub でプル リクエスト (PR) を送信するにはどうすればよいですか?

上記は、私が初めてPRを提出する際の考え方です。現在使用しているオープンソースフレームワークに改善点が見つかった場合は、GitHubでPRを提出する方法をこちらでご確認ください。

オープンソースプロジェクトのフォーク

まず、PR を送信するプロジェクトを自分のリポジトリにフォークします。

次に、独自のリポジトリに移動し、フォークされたプロジェクトをローカル マシンに複製します。

  1. $ git clone [email protected]:Shenfq/ rollup -plugin-eslint.git

新しいブランチに切り替えて変更をコミットし、リモートにプッシュします。

コードをローカル マシンに複製した後、できればこの更新の内容に近いブランチ名を持つ新しいブランチに切り替えます。

  1. $ git checkout -b feature/ -fix-オプションを追加 

新しいブランチのコードを変更します。

  1. + if (options.fix && report) {
  2. + CLIEngine.outputFixes(レポート);
  3. + }

変更を送信:

  1. `$ git add .`
  2. $ git commit -m "feat: オプションを追加.fix"  

最後に、新しいブランチをリモートにプッシュします。

  1. $ git push --set-upstream origin feature/add-fix-option  

新しいPRを作成する

GitHub リポジトリで対応するプロジェクトを見つけて、「プル リクエスト」タブを開き、「新しいプル リクエスト」ボタンをクリックして、新しい PR を作成します。

次に、下のインターフェースで、コミットしたブランチを選択し、最後に「プル リクエストの作成」をクリックします。

クリック後、該当プロジェクトにPR(Public Retrieval Program)を送信します。すべてがうまくいけば、オープンソースプロジェクトの貢献者の称号を獲得できます。