如何給開源項目提過 PR 呢?其實很簡單

大家好,我是若川。最近組織了源碼共讀活動,感興趣的可以加我微信?ruochuan12

源碼共讀群里有小伙伴聊到如何給開源項目提PR,所以今天分享這篇文章。


你有給開源的庫或者框架提過 PR 嗎?

如果沒有,那么今天的文章會教你怎么給開源庫提 PR。

為什么要給開源項目提 PR?

這件事還得從好幾年前(2019年)說起,那時候在折騰一個虛擬 DOM 的玩具(參考之前的文章:🔗虛擬DOM到底是什么?

在構建工具上我選擇了 Rollup,希望每次構建的時候都能自動進行代碼的 Lint,所以引入了 Rollup 的一個插件:rollup-plugin-eslint

064bcf0c931b1c7fd9a722108ab201fe.png

在使用這個插件的過程中,發現和 Webpack 對應的插件 ?eslint-webpack-plugin 還是有一些差距的。我在使用 Webpackeslint-webpack-plugin 時候,只需要配置 fix 屬性,就能夠在保存代碼的時候,自動對代碼進行 fix。

//?webpack.config.js
const?ESLintPlugin?=?require('eslint-webpack-plugin');module.exports?=?{//?...plugins:?[new?ESLintPlugin({fix:?true,extensions:?['js',?'jsx']})
};
7756546af84dd4d66799fbf4ff18a9e3.png

而在使用 rollup-plugin-eslint 的時候,看文檔上,好像沒有提到這個選項,也就是說 rollup-plugin-eslint 根本不支持這個功能。然后,搜索了一下 Issues,不搜不要緊,一搜嚇一跳,發現有人在 2016 年就提出了這個疑問😳。

41a0cff301b1a8b5e30b2d8b9b8e8c2e.png

作者的回復也很簡單,歡迎提交 PR。

d282ab9d0a00f49a3d7ccadee272f93f.png

我當時心想,這個功能這么久了都沒人實現想必很難吧。但是隔壁的 eslint-webpack-plugin 明明支持這個功能,我去看看它怎么實現的不就行了🐶。

于是,我就把 eslint-webpack-plugin 的代碼 clone 下來一頓搜索,發現它實現這個功能就用了三行代碼。

if?(options.fix)?{await?ESLint.outputFixes(results);
}

激動的心,顫抖的手,我趕忙就去 ?rollup-plugin-eslint 那里提了個 PR。

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

4c2eb4ec949846856d195eaa1933a16a.png

關鍵是,作者都沒想到這個東西居然這么簡單就實現了。

9ab295e308c18cb7e2829539ae034ba1.png

如何在 GitHub 上提 PR?

上面是我第一次提 PR 的一個心路歷程,如果你也發現了你現在使用的什么開源框架有待優化的地方,這里再教大家怎么在 GitHub 上提交一個 PR。

對開源項目進行 Fork

首先把你要提交 PR 的項目 Fork 到自己的倉庫。

98fda83b533e5f657a4dd2db858820ec.png

然后到自己的倉庫中,將 Fork 的項目 clone 到本地。

421ef37252d651b6080fda7e323b3e91.png
$?git?clone?git@github.com:Shenfq/rollup-plugin-eslint.git

切換到新分支,提交變更,推送到遠程

代碼 clone 到本地之后,先切換一個新的分支,分支名最好緊貼這次更新的內容。

$?git?checkout?-b?feature/add-fix-option

在新分支修改代碼:

+??if?(options.fix?&&?report)?{
+????CLIEngine.outputFixes(report);
+??}

提交變更:

$?git?add?.
$?git?commit?-m?"feat:?add?options.fix"

最后將新的分支推送到遠程:

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

新建 PR

在自己的 GitHub 倉庫中找到對應項目,打開 Pull requests Tab,點擊 New pull request 按鈕,新建一個 PR。

e711ad7128168653a78ff4e1529ef8f3.png

然后,在下面的界面中,選擇剛剛提交的分支,最后點擊 Create pull request 即可。

fce465c3eb2f76fca224bec2598fa5be.png

點擊之后,就在對應的項目中提交了一個屬于你的 PR 了。如果順利的話,你就能『混』 到一個開源項目貢獻者的頭銜。

- END -

最近組建了一個江西人的前端交流群,如果你是江西人可以加我微信?ruochuan12?私信 江西?拉你進群。

推薦閱讀

1個月,200+人,一起讀了4周源碼
我歷時3年才寫了10余篇源碼文章,但收獲了100w+閱讀

老姚淺談:怎么學JavaScript?

我在阿里招前端,該怎么幫你(可進面試群)

01bdb08319c6f622aa253e6088a701a5.gif

·················?若川簡介?·················

你好,我是若川,畢業于江西高校。現在是一名前端開發“工程師”。寫有《學習源碼整體架構系列
從2014年起,每年都會寫一篇年度總結,已經寫了7篇,點擊查看年度總結。
同時,最近組織了源碼共讀活動

268dd4fec0f64bd40aab57837aa20627.png

識別方二維碼加我微信、拉你進源碼共讀

今日話題

略。歡迎分享、收藏、點贊、在看我的公眾號文章~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275263.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275263.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275263.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一次回母校教前端的經歷

大家好,我是若川。最近組織了源碼共讀活動,感興趣的可以加我微信 ruochuan12已進行了三個月,很多小伙伴都表示收獲頗豐。分享一篇武大畢業的耀耀大佬的文章。有些時候會受限于環境影響,特別是在校大學生。所以要融入到積極上進的環…

設計插畫工具_5個強大的設計師插畫工具

設計插畫工具As Product Designers, most likely, we have come across illustrative work. Visual design is one important element in enhancing the user experience. As many gravitate toward attractive looking products, designers are also adapting to the changing…

如何才能更合理地分配項目獎金?

項目獎金通常情況下都是屬于基本工資之外的一種績效獎勵,也就是說,它在員工的薪酬中,是屬于浮動的那一部分收入,而不是一種固定收入。基于這樣一種認知,跟大家討論下如何才能更合理地進行項目獎金的分配? 首…

Codeforces 741 D - Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths

D - Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths 思路: 樹上啟發式合并 從根節點出發到每個位置的每個字符的奇偶性記為每個位置的狀態,每次統計一下每個狀態的最大深度 為了保證鏈經過當前節點u,我們先計算每個子樹的答案…

figma下載_切換到Figma并在其中工作不必是火箭科學,這就是為什么

figma下載We have seen Elon Musk and SpaceX making Rocket Science look like a child’s play. In the same spirit, should design tools be rocket science that is too hard to master? Not at all.我們已經看到埃隆馬斯克(Elon Musk)和SpaceX使Rocket Science看起來像是…

npm、yarn、cnpm、pnpm 使用操作都在這了

大家好,我是若川。最近組織了源碼共讀活動,感興趣的可以加我微信 ruochuan12有時候想查個命令,或者換個鏡像找了幾篇文章才找到,最近閑著沒事干,干脆整理一篇文檔,以后就不用在網上瞎搜有的還寫不全。Usage…

CAN控制器的選擇

在進行CAN總線開發前,首先要選擇好CAN總線控制器。下面就比較一些控制器的特點。 一些主要的CAN總線器件產品 制造商 產品型號 器件功能及特點 Intel 82526 82527 8XC196CA/CB CAN通信控制器,符合CAN2.0A CAN通信控制器,符合CAN2.0B 擴展…

洛谷 4115 Qtree4——鏈分治

題目:https://www.luogu.org/problemnew/show/P4115 論文:https://wenku.baidu.com/view/1bc2e4ea172ded630b1cb602.html 重鏈剖分,分別用線段樹維護每條重鏈。線段樹葉子的信息是該點輕孩子的信息;線段樹區間的信息是考慮重鏈的一…

每次啟動項目的服務,電腦竟然乖乖的幫我打開了瀏覽器,100行源碼揭秘!

1. 前言大家好,我是若川。最近組織了源碼共讀活動,感興趣的可以加我微信 ruochuan12 參與,已進行三個月了,大家一起交流學習,共同進步。想學源碼,極力推薦之前我寫的《學習源碼整體架構系列》 包含jQuery、…

初級爬蟲師_初級設計師的4條視覺原則

初級爬蟲師重點 (Top highlight)Like many UXers, I got into the industry from a non-visual background (in my case it was Business and later on Human Cognition). Even though I found great benefits coming from those backgrounds, it also meant I had no UI/Visua…

String類中IndexOf與SubString

IndexOfpublic: int IndexOf( String^ value, int startIndex, int count ) 說明: value類型:System..::.String要查找的 String。 startIndex類型:System..::.Int32搜索起始位置。 count類型:System..::.Int32要檢查的字符位置…

開源監控解決方案OpenFalcon系列(一)

OpenFalcon是由小米的運維團隊開源的一款企業級、高可用、可擴展的開源監控解決方案,,在眾多開源愛好者的支持下,功能越來越豐富,文檔更加的完善,OpenFalcon 已經成為國內最流行的監控系統之一。小米、美團、金山云、快…

如何利用 webpack 在項目中做出亮點

大家好,我是若川。最近這幾年,在前端代碼打包器領域內,webpack 算得上是時下最流行的前端打包工具。它可以分析各個模塊的依賴關系,最終打包成我們常見的靜態文件:.js 、 .css 、 .jpg 、.png,極大地提升了…

[轉]上下拉電阻

上下拉電阻有什么用? 對這個問題,平時沒有留意過,搞設計的時候都是照本宣科,沒有真正弄懂意思. 很多單片機開發的入門者,以及一些從事軟件開發的人,往往在開發單片機的時候遇到上拉電阻、下拉…

yum安裝Mariadb,二進制安裝Mariadb

yum安裝Mariadb 設置Mariadb的yum源 vim /etc/yum.repos.d/mariadb.repo [mariadb] namemariadb baseurlhttps://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.2/centos7-amd64/ gpgcheck0 使用清華yum源安裝Mariadb,可以選擇不同的版本,此處安裝10.2.23 yum in…

Oracle中的wmsys.wm_concat

Oracle中的wmsys.wm_concat主要實現行轉列功能(說白了就是將查詢的某一列值使用逗號進行隔開拼接,成為一條數據)。 wmsys.wm_concat除了單獨使用外還可以和over函數結合使用。 開始看看具體使用方法: select t.rank, t.Name from t_menu_item t; rank…

Github 王炸功能!Copilot 替代打工人編程?

大家好,我是若川。最近組織了源碼共讀活動,感興趣的可以加我微信 ruochuan12 參與,已進行三個月了,大家一起交流學習,共同進步。大家好,我是皮湯。最近組里在討論一個有意思的工具 Github Copilot&#xff…

ux和ui_糟糕的UI與UX番茄醬模因

ux和uiAt face value, this meme appears to be a quick and easy tool for educating the general public about what the differences are between UI and UX. You might look at the attractive glass bottle labeled “UI” and understand that UI might have to do more …

Linux中的wheel用戶組是什么?

在Linux中wheel組就類似于一個管理員的組。 通常在Linux下,即使我們有系統管理員root的權限,也不推薦用root用戶登錄。一般情況下用普通用戶登錄就可以了,在需要root權限執行一些操作時,再su登錄成為root用戶。但是,任…

ElementUI 組件庫 md-loader 的解析和優化

大家好,我是若川。最近組織了源碼共讀活動,感興趣的可以加我微信 ruochuan12 參與,已進行三個月了,大家一起交流學習,共同進步。背景相信很多同學在學習 webpack 的時候,對 loader 的概念應該有所了解&…