【React Native】文件翻譯閱讀紀錄 - 貢獻 - 如何貢獻
Facebook Open Source React Native |
如何貢獻
React Native是Facebook的第一個開源項目之一,它們都處於非常活躍的開發階段,並且還被用於使用Facebook的移動應用程序向所有人發送代碼。如果您有興趣為React Native做出貢獻,那麼希望本文檔能夠明確提供幫助。
行為守則
Facebook已採用我們希望項目參與者遵守的行為準則。請閱讀全文,以便了解將會和不會容忍哪些操作。
參與其中
有很多方法可以為React Native做貢獻,其中許多方法都不涉及編寫任何代碼。這裡有一些入門的想法:
- 只需開始使用React Native。閱讀入門指南。一切都按預期工作嗎?如果沒有,我們一直在尋求改進。打開一個問題告訴我們。
- 仔細研究未解決的問題。提供變通方法,要求澄清或建議標籤。幫助分類問題。
- 如果您發現要修復的問題,請打開拉取請求。標記為良好第一期的問題是開始使用的好地方。
- 閱讀React Native文檔。如果您發現任何令人困惑或可以改進的內容,您可以點擊大多數文檔頂部的“修改”進行修改。
- 瀏覽Stack Overflow並回答問題。這將幫助您熟悉常見的陷阱或誤解,這在提供文檔更新時非常有用。
- 查看社區中其他人請求的功能,如果您看到要處理的內容,請考慮打開拉取請求。
- 在打開拉取請求之前,請確保您已完全測試了您的更改。通過運行提供的各種測試在本地測試您的更改。
- 有關如何在本地使用更改構建React Native項目的信息,請務必閱讀源指南中的Building React Native。
- 查看測試您的更改指南,了解已提供的眾多測試,以幫助確保任何新的更改不會導致回歸。
貢獻非常受歡迎。如果您認為需要幫助來規劃您的貢獻,請跳到 #alcact-native,讓人們知道您正在尋找導師。
分類問題和拉取請求
在不編寫任何代碼的情況下,您可以為項目做出貢獻的一個好方法是幫助分類問題並在它們進入時提取請求。
- 如果問題未提供模板所需的所有詳細信息,請詢問更多信息。
- 建議可以幫助分類問題的標籤。
- 標記陳舊或應該關閉的問題。
- 詢問測試計劃和審查代碼。
您可以在維護者指南中了解有關處理問題的更多信息。
我們的發展過程
GitHub上的facebook / react-native存儲庫包含在Facebook內部使用的React Native庫的鏡像。 GitHub存儲庫鏈接到Facebook的內部源代碼控制,對內部React Native項目所做的所有更改都會持續同步到GitHub上的主分支。讓Facebook的內部源代碼控製作為真相的來源,讓React Native團隊以外的Facebook工程師能夠從他們感到舒適的環境中快速移動並進行控制。
React Native也是由Facebook以外的幾家公司的核心工程師團隊以及許多其他開源貢獻者提供的。核心團隊通過GitHub上的react-native-releases存儲庫協調開源版本。
當GitHub上的更改獲得批准後,它將首先導入到Facebook的內部源代碼管理中。一旦通過所有內部測試,更改將最終作為單個提交同步回GitHub。
React Native也是由Facebook以外的幾家公司的核心工程師團隊以及許多其他開源貢獻者提供的。核心團隊通過GitHub上的react-native-releases存儲庫協調開源版本。
當GitHub上的更改獲得批准後,它將首先導入到Facebook的內部源代碼管理中。一旦通過所有內部測試,更改將最終作為單個提交同步回GitHub。
分支機構
我們將盡力保持船長的良好狀態,並始終通過測試。但為了快速移動,我們將進行API更改,您的應用程序可能與之不兼容。我們將盡最大努力適當地傳達這些更改和版本,以便您可以根據需要鎖定特定版本。
要查看即將發生的更改並向React Native貢獻者提供更好的反饋,請盡可能使用最新的候選版本。發布候選版本發佈時,其包含的更改將在生產Facebook應用程序中發布超過兩週。
要查看即將發生的更改並向React Native貢獻者提供更好的反饋,請盡可能使用最新的候選版本。發布候選版本發佈時,其包含的更改將在生產Facebook應用程序中發布超過兩週。
錯誤
我們使用GitHub問題來解決我們的公共錯誤。 如果您想報告問題,請瀏覽一下是否有人已經開啟了相關問題。 如果您確定這是一個新的,未報告的錯誤,您可以提交錯誤報告。
如果您對使用React Native有疑問,“社區”頁面會列出可幫助您入門的各種資源。
我們還有一個地方可以請求功能或增強功能。 如果您看到任何想要實現的內容,請將其投票並解釋您的用例。
如果您對使用React Native有疑問,“社區”頁面會列出可幫助您入門的各種資源。
我們還有一個地方可以請求功能或增強功能。 如果您看到任何想要實現的內容,請將其投票並解釋您的用例。
新問題報告
在打開新問題時,請務必填寫問題模板。這一步非常重要!不這樣做可能會導致您的問題被解決。如果發生這種情況,請不要親自接受此操作,並在收集模板所需的所有信息後隨時打開新問題。
- 一個問題,一個錯誤:請報告每個問題的一個錯誤。
- 提供小吃:關注問題的最佳方法是提供簡化的測試用例。您可以使用Snack來演示此問題。
- 提供複製步驟:列出複制問題所需的所有步驟。提供Snack或將示例項目上傳到GitHub。閱讀您的錯誤報告的人應該能夠按照這些步驟以最小的努力重現您的問題。
- 試用最新版本:通過更新項目以從主服務器使用React Native,驗證是否可以在本地重現該問題。該錯誤可能已經修復!
我們無法通過GitHub問題提供支持。如果您正在尋找有關代碼的幫助,請考慮詢問Stack Overflow或通過其他渠道與社區聯繫。
安全漏洞
Facebook有一個安全披露安全漏洞的賞金計劃。考慮到這一點,請不要提出公共問題;完成該頁面上列出的流程。
拉取請求
你的第一個拉動請求
因此,您決定通過打開拉取請求將代碼返回上游。你投入了很多時間,我們很感激。我們將盡最大努力與您合作,讓PR看到。
處理你的第一個Pull請求?您可以從這個免費視頻系列中了解如何:
處理你的第一個Pull請求?您可以從這個免費視頻系列中了解如何:
我們列出了一些初學者友好的問題,以幫助您在React Native代碼庫中熟悉並熟悉我們的貢獻過程。這是一個開始的好地方。
提出改變
如果您想申請新功能或增強功能但尚未考慮打開拉取請求,我們可以跟踪功能請求。
如果您打算更改公共API,或對實現進行任何重要更改,我們建議您在標題中提交包含[Proposal]的問題。這可以讓您在投入大量精力之前就您的提案達成協議。這些類型的問題應該很少見。如果您已經為項目做出了足夠長的貢獻,那麼您可能已經可以訪問React Native Core Contributors Facebook Group,通常會進行此類討論。
如果您只修復了一個錯誤,可以立即提交拉取請求,但我們仍然建議您提交詳細說明您正在修復的問題。如果我們不接受該特定修復但想要跟踪問題,這將非常有用。
如果您打算更改公共API,或對實現進行任何重要更改,我們建議您在標題中提交包含[Proposal]的問題。這可以讓您在投入大量精力之前就您的提案達成協議。這些類型的問題應該很少見。如果您已經為項目做出了足夠長的貢獻,那麼您可能已經可以訪問React Native Core Contributors Facebook Group,通常會進行此類討論。
如果您只修復了一個錯誤,可以立即提交拉取請求,但我們仍然建議您提交詳細說明您正在修復的問題。如果我們不接受該特定修復但想要跟踪問題,這將非常有用。
發送拉取請求
小拉請求更容易查看,更有可能合併。確保PR只做一件事,否則請分開。
提交拉取請求時請確保完成以下操作:
提交拉取請求時請確保完成以下操作:
- 分叉存儲庫並從 master 創建分支。
- 將版權聲明添加到您添加的任何新文件的頂部。
- 在拉取請求描述中描述您的測試計劃。確保測試您的更改!
- 確保你的代碼lint(npm run lint)。
- 如果您還沒有,請簽署 CLA.
應該針對主分支打開所有拉取請求。打開拉取請求後,確保所有測試都通過Circle CI。如果測試失敗並且您認為它與您的更改無關,請在拉取請求中留言並解釋原因。
注意:沒有必要在PR頁面上單擊Merge master到您的分支。如果存在衝突或測試失敗,您可能希望合併master。在合併你的PR之前,Facebook-GitHub-Bot最終將所有提交壓縮為單個提交。
測試計劃
一個好的測試計劃具有您運行的確切命令及其輸出,如果拉取請求更改UI或更新網站,則提供屏幕截圖或視頻。
- 如果您添加了應該測試的代碼,請添加測試!
- 如果您更改了API,請通過另外的PR將文檔更新到react-native-website repo。
- 如果您已更新文檔,請在本地驗證網站並提交屏幕截圖(如果適用)(請參閱react-native-website README)。
See What is a Test Plan? to learn more.
持續集成測試
確保所有測試都通過Circle CI。打破測試的PR不太可能合併。詳細了解如何在此處測試更改。
打破變化
添加新的重大更改時,請在拉取請求中關注此模板:
### New breaking change here
* **Who does this affect**:
* **How to migrate**:
* **Why make this breaking change**:
* **Severity (number of people affected x effort)**:
如果您的pull請求已合併,則核心參與者將更新中斷更改列表,然後用於填充發行說明。
文件版權聲明
將其複制並粘貼到新文件的頂部:
/**
* Copyright (c) 2015-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
如果添加了新模塊,請在註釋末尾添加@providesModule <moduleName>。這將允許急速包管理器找到它。
貢獻者許可協議(CLA)
為了接受您的拉取請求,我們需要您提交CLA。你只需要這樣做一次,所以如果你已經為另一個Facebook開源項目做了這個,那麼你很高興。如果您是第一次提交拉取請求,Facebook GitHub Bot將回復指向CLA表單的鏈接。您也可以在這裡完成您的CLA。
接下來發生什麼?
核心團隊將監控拉取請求。閱讀維護人員的期望,了解打開拉取請求後可能發生的情況。
樣式指南
我們的linter將捕獲代碼中可能存在的大多數樣式問題。您只需運行 npm run lint 即可檢查代碼樣式的狀態。
然而,仍然有一些風格,短絨無法接受。
代碼約定
一般
- 最重要的是:環顧四周。匹配您在項目其餘部分中使用的樣式。這包括格式化,在代碼中命名,在文檔中命名。
- 添加尾隨逗號,
- 2個縮進空間(無標籤)
- “有吸引力”
JavaScript
- 用分號;
- ES6標準
- 喜歡 ' 結束 '
- 不要使用 setTimeout 和 setInterval 的可選參數
- 80個字符行長
JSX
- 喜歡字符串文字道具的“over”
- 將開始標記包裹在多行上時,每行放置一個道具
- 道具的{}應該擁抱他們的價值觀(沒有空格)
- 將開始標記的關閉>放在與最後一個道具相同的行上
- 將自閉合標籤的關閉/>放在它們自己的行上,並將它們與開口<左對齊
Objective-C
- @property聲明後的空格
- 每個if上的括號,在同一行上
- - 以下行中的method,@ interface和@implementation括號
- 盡量保持大約80個字符的行長(有時候這是不可能的......)
- *運算符帶有變量名(例如NSObject * variableName;)
Java
- 如果方法調用跨越多行,則右括號與最後一個參數位於同一行。
- 如果方法標題不適合一行,則每個參數都在一個單獨的行上。
- 100個字符行長度
Documentation
- 不要將行換行為80個字符 - 在編輯文檔時將編輯器配置為軟包裝。
授權
通過為 React Native 做出貢獻,即表示您同意您的貢獻將根據其BSD許可進行許可。
0 意見