如何參加開源項目-如何給Vue3.0提PR

歡迎你們加入一塊兒共同窗習進步。

最新消息和優秀文章我會第一時間推送的。

視頻講解 b站視頻 www.bilibili.com/video/BV1fa…html

參考資料一波vue

Vue3.0代碼結構react

Vue3.0資源全家桶git

最近在學習Vue3.0源碼,爲了達到刻意練習的目的。決定給Vue3.0提點PR來驗證本身的源碼理解水平。通過兩天的奮戰添加了一個官方的todo test case。github

github.com/vuejs/vue-n…chrome

如下我把大致的步驟總結一下。npm

Fork代碼

首先須要將vue代碼經過github的fork功能複製一份到本身的github瀏覽器

github.com/vuejs/vue-n…bash

複製後的結果 github.com/su37josephx…markdown

clone到本地

git clone git@github.com:su37josephxia/vue-next.git
複製代碼

安裝依賴

# 設置國內鏡像
yarn config set registry https://registry.npm.taobao.org
# --ignore-scripts 用於忽略chrome瀏覽器的下載
yarn install --ignore-scripts  
複製代碼

運行單元測試

# 強烈推薦你們全局安裝
npm i jest -g 
jest --coverage
複製代碼

開發前同步官方最新代碼

fork代碼須要隨時拉去官方最新的代碼更新保持同步

添加新遠程分支

這個只須要作一次

git remote add upstream https://github.com/vuejs/vue-next
複製代碼

拉去合併遠程分支到master分支

這個須要隨時作 保持你的master分支永遠是官方最新成果。

# 抓取源倉庫修改 master分支
git fetch upstream master
# 切換分支
git checkout master
# 合併遠程分支
git merge upstream/master
複製代碼

功能點或測試用例開發

Jest基礎知識的總結

選擇功能點

好比我想解決的這個問題是這個尤大遺留的這個測試TODO

從master分支建立修改分支

git checkout -b comments
複製代碼

開發代碼

開發後的結果大概是這個樣子

伺服運行單個測試用例

jest packages/compiler-core/__tests__/transforms/vIf.spec.ts --watc
複製代碼

如何跑覆蓋率

開發完成後記得要跑全覆蓋 確認本身的代碼對全局沒有影響。

jest --coverage
複製代碼

提交commit

這裏面涉及到一個問題就是必需要按照官方須要的格式提交commit msg。否則那會被hooks進行自動檢查拒絕你commit。 github.com/conventiona…

git commit -am 'test(compiler-core): add vif with comments test case'
複製代碼

提出PR

推送本地分支到github

git push --set-upstream origin comments
複製代碼

如何合併多餘commit

另外若是涉及屢次提交會有一個要處理合並多個commit的問題。

TODO 近期更新

提PR

最後就能夠等待着你勝利的好消息了

最後

刻意練習纔是提升的不二法門 你們若是要閱讀源碼不妨給本身頂一個成功提出一次PR的小目標。

附錄

代碼結構

數據響應式 reactivity reactivity ref effect
運行時 runtime-core 核心 inject 生命週期 watch directive component
runtime-dom Dom class style
runtime-test 測試仿真
編譯器 compiler-core 核心 基本類型解析 AST
compiler-dom Dom v-html v-text v-model v-clock
compiler-sfc 單文件編譯
compiler-ssr 服務端渲染編譯
工具方法 shared
vue vue
模板解析器 template

Jest的覆蓋率是什麼

覆蓋率 咱們增長一個參數把覆蓋率跑出來

npx jest --coverage 
複製代碼

實際上跑覆蓋率的時候是有錯的 咱們先不去管他 咱們先解析一下這個報告怎麼看,若是你們學過軟件工程會知道通常從理論上講覆蓋率包括

語句覆蓋 節點覆蓋 路徑覆蓋 條件組合覆蓋 可是通常來說不一樣框架理解不同 在Jest這裏大概是這樣分解的

%stmts 是語句覆蓋率(statement coverage) 是否是每一個語句都執行了?
%Branch 分支覆蓋率(branch coverage): 是否是每一個if代碼塊都執行了?
%Funcs 函數覆蓋率(function coverage): 是否是每一個函數都調用了?
%Lines 行覆蓋率(line coverage): 是否是每一行都執行了?
相關文章
相關標籤/搜索