小姐姐:如何參與大型開源項目-Taro 共建

大家好,我是若川。持續組織了5個月源碼共讀活動,感興趣的可以點此加我微信 ruochuan12?參與,每周大家一起學習200行左右的源碼,共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》?包含20余篇源碼文章。

本文來自前端程序媛「清湯餃子」,餃子非常高產,點擊文末「閱讀原文」直達她的掘金主頁

一、背景—

在開發的工作中,我們都引用過大量的社區優秀的開源項目,但怎么才能更好的了解這些開源項目呢,答案是 Join it

參與開源項目,能夠幫助我們拓寬對研發項目的認識,更好地理解開源項目的原理,以及提高個人影響力、競爭力。

二、選擇項目—

人對于不熟悉的東西總是覺得高深莫測的,沒有參與開源項目的經驗的時候,會對參與開源項目不知道從何下手。

其實不然,在我們開發日常需求時就可以參與到開源項目中來,開發時用到的技術棧,就是我們最值得入手的開源項目了。

像我自己日常有開發微信小程序、京東小程序等跨平臺的需求,這類型需求主要技術棧是 Taro[1],Taro[2] 本身就是 github star 近 30 k 的優秀開源項目了,那么我就可以從 Taro 著手,參與到開源項目的建設工作中。

dfbbb27dd01575a865ab18505d3197a4.png

三、快速開始—

首先要了解、遵守開源項目的貢獻規范,一般可以在官網找到貢獻規范文檔,如 Taro 貢獻指南[3]

1. 確定貢獻形式

貢獻形式多種多樣,下面我以 “提交代碼” 類型快速開始貢獻流程。

e31a34c3baa3d07540b6a0dca3a74386.png

2. 找到感興趣的 issue

Taro 官網:issue 中會列出所有被標記為 Help Wanted 的 Issues,并且會被分為 Easy、 Medium、 Hard 三種難易程度。

通過 issue 標簽篩選,選擇自己感興趣的 issue,可以先從 "Easy" 的開始:

bdd5815d12757db2b00116a444386745.png

在 issue 中 Assignees 至自己:

a3b9c87574e57f73057c8297757fbd4e.png

3. fork & clone

fork Taro 源碼至自己倉庫:

bf0bc76997f4084ae3bbf6e7353a2550.png

clone 個人倉庫的 Taro 源碼至本地:

git clone https://github.com/jiaozitang/taro

4. 本地開發環境

在 Taro 源碼項目中安裝依賴并編譯:

# 安裝依賴
$ yarn# 編譯
$ yarn build

查看該 issue 涉及哪些 package,為這些 package 設置 yarn link,并在本地編譯,使得調試項目能夠 link 到開發中的源碼:

Taro package 說明見文檔:Taro 倉庫概覽[4]

# yarn link
$ cd packages/taro-components
$ yarn link# 本地編譯
$ yarn dev

新建 Taro 項目用于調試 Taro 源碼:

# 使用 npm 安裝 CLI
$ npm install -g @tarojs/cli# 初始化項目
$ taro init myApp# yarn link
$ yarn link "@tarojs/components"

5. 開始開發

5.1 功能開發

通過以下步驟解決上述 “textarea 組件 onLineChange 時間調用無效”[5] issue:

源碼路徑:packages/taro-components/src/components/textarea/textarea.tsx

onLineChange 事件:

  • 新增 onLineChange 事件

  • 監聽輸入事件,輸入時通過行高計算行數

  • 行數改變時觸發 onLineChange

auto-height 屬性:

  • 新增 auto-height 屬性

  • 新增 auto-height 樣式

具體代碼見:https://github.com/NervJS/taro/pull/10681/files

5.2 更新測試用例

在測試用例中添加對 onLineChange 事件、aotu-height 屬性的測試。

源碼路徑:packages/taro-components/__tests__/textarea.spec.js

5.3 更新文檔

在 README 中更新對 onLineChange、auto-height 的描述。

源碼地址:packages/taro-components/src/components/textarea/index.md

5.4 自測

在本地測試項目 myApp 中,自測 onLineChange 事件、auto-height 屬性功能是否正常,自測通過后,在 Taro 源碼項目中跑自動化測試。

# 自動化測試
$ npm run test

6. 提交 pull request

測試通過后,在 github 中提交 pull requrst。

ee2e65412e3abbffae4b13905b8008a4.png

7. code review 流程

提交 pull request 后等待社區 code review,并及時跟進 code review 反饋進行修改。

c7618c2133f28682bd7cae9031080b4a.png

四、總結—

本文講述了參與大型開源項目-Taro 的流程,其中以為 Taro 解決 issue 的視角,介紹了從認領 issue、解決 issue、貢獻代碼的完整過程。

在這個過程中,我們可以了解到如何參與開源項目并幫助開源項目解決問題,在開發工作中遇到開源項目的問題時,就可以愉快地參與進來了,不用因為一個小問題耽擱項目進度。

星星之火,可以燎原,在越來越多的開發者的參與下,開源社區的發展未來可期。

參考資料—

  • 如何參與一個頂級開源項目[6]

參考資料

[1]

Taro: https://github.com/NervJS/taro

[2]

Taro: https://github.com/NervJS/taro

[3]

Taro 貢獻指南: https://taro-docs.jd.com/taro/docs/CONTRIBUTING

[4]

Taro 倉庫概覽: https://taro-docs.jd.com/taro/docs/codebase-overview

[5]

“textarea 組件 onLineChange 時間調用無效”: https://github.com/NervJS/taro/issues/8003

[6]

如何參與一個頂級開源項目: https://juejin.cn/post/6844903918749614087

5aa1f94dbcbd2fb198932fac68255bbc.gif

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

你好,我是若川,畢業于江西高校。現在是一名前端開發“工程師”。寫有《學習源碼整體架構系列》20余篇,在知乎、掘金收獲超百萬閱讀。
從2014年起,每年都會寫一篇年度總結,已經寫了7篇,點擊查看年度總結。
同時,最近組織了源碼共讀活動,幫助3000+前端人學會看源碼。公眾號愿景:幫助5年內前端人走向前列。

3c0b8df305f3804482bd93287800fe60.png

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

今日話題

略。分享、收藏、點贊、在看我的文章就是對我最大的支持~

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

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

相關文章

JavaWeb學習總結(十七)——JSP中的九個內置對象

2019獨角獸企業重金招聘Python工程師標準>>> 一、JSP運行原理 每個JSP 頁面在第一次被訪問時,WEB容器都會把請求交給JSP引擎(即一個Java程序)去處理。JSP引擎先將JSP翻譯成一個_jspServlet(實質上也是一個servlet) ,然…

C#網絡編程(異步傳輸字符串) - Part.3[轉自JimmyZhang博客]

源碼下載:http://www.tracefact.net/SourceCode/Network-Part3.rar C#網絡編程(異步傳輸字符串) - Part.3 這篇文章我們將前進一大步,使用異步的方式來對服務端編程,以使它成為一個真正意義上的服務器:可以為多個客戶端的多次請求…

chrome黑暗模式_黑暗模式:如何克服黑暗面

chrome黑暗模式This article has been written by Redmadrobot Design Lab. Translated and reposted with permission by Alconost Inc., professional translation and localization company.本文由 Redmadrobot設計實驗室 撰寫 。 經過 專業翻譯和本地化公司 Alconost Inc.的…

Deco 智能代碼體驗版正式上線啦,快來體驗設計稿一鍵生成代碼~

Deco 是什么?—Deco 智能代碼項目是我們團隊在「前端智能化」方向上的探索,其聚焦設計稿一鍵生成多端代碼這一切入點,實現將 Sketch/Photoshop 等設計稿進行解析并直接生成多端代碼(Taro/React/Vue)的能力。Deco 可以使…

jQuery 五角星評分

五角星打分 我用的是搜狗輸入法上帶的特殊符號打出來的 空五角星&#xff1a;☆ 實五角星&#xff1a;★ 1.html 1 <ul class"comment"> 2 <li>☆</li> 3 <li>☆</li> 4 <li>☆</li> 5 …

平面設計和網頁設計的規則_從平面設計到用戶界面:這是您應該知道的最重要的規則

平面設計和網頁設計的規則Maybe you’re here because you think UI Design is the future of Graphic Design. Maybe what motivates you is the money. Or maybe you just woke up one day and someone at work told you “So, you are a designer, right? Well, we need an…

即將到來的 ECMAScript 2022 新特性

大家好&#xff0c;我是若川。持續組織了5個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。ECMAScript 規范每…

代碼備忘錄

1.用指針&#xff0c;函數調用實現交換兩個變量值 #include<stdio.h> int exchange(int *a,int *b){ int temp; temp*a; *a*b; *btemp;return 0;} int main(){ int i9,j2; int *p1,*p2; p1&i; p2&j; exchange(p1,p2); printf("p1%d,p2%d\n",*p1,*p2);…

mysql實戰38 | 都說InnoDB好,那還要不要使用Memory引擎?

我在上一篇文章末尾留給你的問題是&#xff1a;兩個 group by 語句都用了 order by null&#xff0c;為什么使用內存臨時表得到的語句結果里&#xff0c;0 這個值在最后一行&#xff1b;而使用磁盤臨時表得到的結果里&#xff0c;0 這個值在第一行&#xff1f;今天我們就來看看…

設計類的五個原則_內容設計的5個原則

設計類的五個原則重點 (Top highlight)There are many heuristics and principles for creating good content. Some are created from a UX perspective, others from a content marketing point of view. They range from very long to very concise ones. I reviewed a larg…

Umi 4 RC 發布

大家好&#xff0c;我是若川。感謝大家一年以來的支持和陪伴。這一年疫情反復&#xff0c;年底應該有由于疫情不能回家的小伙伴。在這里先祝福大家&#xff0c;新年快樂。本打算今天不發文&#xff0c;但看到這篇覺得不錯&#xff0c;就發一下。大家好&#xff0c;Umi 4 經過幾…

讓你沉迷的五種設計

讓你沉迷的五種設計 好游戲總是能令人沉迷其中無法自拔&#xff0c;外媒cracked經過分析&#xff0c;發現有五種設計方法必不可少&#xff1b; 1.斯金納箱原理&#xff1a;這是行為心理學派在實驗室內研究動物學習能力的箱形實驗裝置&#xff0c;游戲開發也得益于此&#xff0c…

Java學習路線詳解

有很多的[Java請添加鏈接描述](http://www.hfxms.com.cn/java/)程序員&#xff0c;在初期學習時&#xff0c;通常會對如何學習而感到迷茫。[合肥學碼思請添加鏈接描述](http://www.hfxms.com.cn/)小編就為大家分析如何學好Java編程&#xff0c;相信能幫助那些正在處于迷茫狀態的…

figma下載_在Figma中將約束與布局網格一起使用

figma下載While doing research for the book “Designing in Figma”, I discovered a powerful way to lay out objects using a combination of Layout Grid and Constraints. The interface of Figma does not indicate a connection between the two, so it can be discov…

換一種方式表達

http://player.youku.com/player.php/sid/XMjY2MTE5NDU2/v.swf 轉載于:https://www.cnblogs.com/JCSU/archive/2012/03/17/2403324.html

新的一年,碎片化學習前端,我推薦這幾個公眾號~

大家好&#xff0c;我是若川。假期余額不足&#xff0c;無法充值。快樂的時光總是短暫的。馬上又開始一年的學習和“奮斗”。前端技術日新月異&#xff0c;發展迅速&#xff0c;作為一個與時俱進的前端工程師&#xff0c;需要不斷的學習。這里強烈推薦幾個前端開發工程師必備的…

Java單元測試之JUnit4詳解

2019獨角獸企業重金招聘Python工程師標準>>> Java單元測試之JUnit4詳解 與JUnit3不同&#xff0c;JUnit4通過注解的方式來識別測試方法。目前支持的主要注解有&#xff1a; BeforeClass 全局只會執行一次&#xff0c;而且是第一個運行Before 在測試方法運行之前運行…

我在黑暗中看到你眼中的月光_你好黑暗,我的老朋友

我在黑暗中看到你眼中的月光(Originally published on https://web.dev/prefers-color-scheme/.)(最初發布于https://web.dev/prefers-color-scheme/ 。) 介紹 (Introduction) &#x1f4da; I have done a lot of background research on the history and theory of dark mod…

ant 實現批量打包android應用

很多的應用中需要加上應用推廣的統計&#xff0c;如果一個一個的去生成不同渠道包的應用&#xff0c;效率低不說&#xff0c;還有可能不小心弄錯了分發渠道&#xff0c;使用ant可以批量生成應用。一、添加渠道包信息為了統計渠道信息&#xff0c;就不得不在程序的某個地方加入渠…

Element Plus 正式版發布啦!

大家好&#xff0c;我是若川。祝大家新年快樂&#xff0c;開工大吉。公眾號回復「紅包」可以領取源碼共讀紅包封面。持續組織了6個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時…