如何更精準的找到你需要的開源庫

轉載自:https://swiftcafe.io/post/github-search

第三方開源庫可能算是這個行業最美妙的東西之一,好的開源庫經過完善的開發和驗證,幫助我們解決了開發中遇到的很多通用問題,不需要我們重複發明輪子。 可以說開源社區極大的提高了整個產業的生產力。而說到開源項目,就不能不提 GitHub,它幾乎已經成爲了開源項目的首選存放位置。那麼如何在 GitHub 上更高效精確的找到你需要的開源項目呢,今天和大家聊聊這個話題。

高級搜索

和標題對應,這次主要和大家聊一下搜索的使用技巧。 我們進入 GitHub 後,會在頂部看到一個搜索框:

在這裏輸入關鍵字,GitHub 就會呈現出相關的結果。 當然這是最基本的用法, 除了這個之外, GitHub 還提供了高級搜索:https://github.com/search/advanced。 進入這個頁面後,你會看到一系列搜索選項:

比如倉庫的主要語言, Star 數量等等。 這些條件就能更精確的篩選出我們需要的結果。 比如要搜索 Swift 語言的網絡相關的倉庫,設置好後,頂部的搜索條就會變成這個樣子:

network 是我們的搜索關鍵詞, 後面的 language:swift 代表只搜索 swift 語言的代碼庫。 這樣搜索後的結果就只會顯示你關注的 swift 語言了。 另外剛纔搜索框中的這個特殊語法,其實在平時頂部的通用搜索框中也是可以使用的。 這個有點像我們通用搜索引擎的一些搜索語法。

fork

fork 是 GitHub 上面的一個概念。 比如你的庫做的比較好,其他第三方複製你的庫,並且根據他們的額外需求做一些二次開發。 有時候一些好的二次開發庫,也會非常的有用。 這些二次開發的分支,就稱作一個倉庫的 fork。

默認情況下 GitHub 的搜索功能是搜索不到 fork 的。 只有你顯式的指定需要 forks 纔可以。 這需要另外一個語法。 fork:truefork:onlyfork:true 的含義是搜索結果中可以帶有 fork 庫。 fork:only 表示搜索結果中只顯示 fork 庫。

另外,GitHub 搜索的規則是, 只有 fork 庫的 star 數量比原始庫多的,纔會被顯示到搜索結果中。如果 star 數沒有超過原始庫,是不能被搜索到的。

比如這個搜索條件 network language:swift fork:true 表示搜索 swift 語言的倉庫,並且包含 fork 庫。

代碼搜索

除了倉庫搜索之外,GitHub 還支持代碼搜索,比如你想了解某個 API 其他人如何使用,可以這樣:

在搜索結果中,第二個 Code 選項卡用於代碼搜索。 上面我們用的搜索公式是 NSURLSession language:swift 。 除了搜索代碼文件內容之外, 我們還可以按照路徑來搜索, 只需要加入 in:path 搜索條件:

這次雖然還是代碼搜索, 但是搜索的範圍是在文件路徑中,只會搜索文件路徑中包含 NSURLSession 的內容。 這個能力大家不一定會經常用到,但是瞭解一下還是有好處的,說不定在哪天能幫你解決一個大問題。

Issues 搜索

除了代碼搜索之外,另外一個比較有用的是 Issues 搜索,我們平時在使用開源庫的時候難免遇到一些奇怪的問題。 其實解決這些問題最好的方式之一就是在這個開源庫自己的 GitHub 項目中尋找。

比如 NSURLSession is:issue is:closed repo:Alamofire/Alamofire 這條搜索, is:issue 表示我們要搜索 issue, is:closed 表示已經關閉的 issue, repo:Alamofire/Alamofire 表示我們只搜索這個倉庫範圍的 issue。 運行這個搜索你會得到這樣的結果:

issue 搜索可定製化的地方很多,比如你還可以搜索和某個用戶相關的 issue, 通過 involves:mattt 搜索條件,比如我們這裏, mattt 是 Alamofire 的作者之一,搜索和他相關的 issue,可能會更容易得到解決問題的方案:

NSURLSession is:issue is:closed repo:Alamofire/Alamofire involves:mattt

Topic 搜索

還有一個值得一說的就是 Topic 搜索, 關於 Topic 我想並不是所有的用戶都瞭解。 簡單說一下, 我們在瀏覽任何一個開源庫主頁的時候,都會看到會列出若干標籤:

比如我們這裏的 Alamofire, 它包含了很多標籤,有 networking,urlsession, urlrequest 等等。 這些標籤就是我們所說的 Topic。 每一個 Topic 代表一個特定領域的問題,一個開源庫關聯到一個 Topic 上,就相當於它解決了這個特定領域的問題。

上面截圖中的所有 Topic 都是可以點擊的,如果點擊第一個 networking, 就會得到這樣一個列表:

這裏面列出了所有解決這個 Topic 問題的開源庫。 Topic 的出現,給了我們一個查找所需開源庫的一個新維度。 比如我們要查找 swift 網絡庫解決方案,可以執行這個搜索 language:swift topic:networking,有了前面的介紹的基礎,我相信這個搜索的含義大家已經不難理解了:

這裏列出了所有和 networking 這個 topic 相關的開源庫,並且限定到 swift 語言。 從 Topic 角度來查找我們需要的開源庫是一個非常好的視角。

GitHub 還專門提供了一個頁面,展示目前流行的 Topic:https://github.com/topics

結語

這次主要和大家聊了一下 GitHub 搜索的幾個有趣的用法。這裏和大家聊得其實也只是一小部分。 完整的 GitHub 搜索提供了非常多的能力,幫助我們更好的瞭解這個當前最流行的代碼平臺。 大家如果有興趣,可以參看它的官方文檔: https://help.github.com/categories/searching-for-information-on-github/,裏面有非常全面的介紹。


發佈了9 篇原創文章 · 獲贊 80 · 訪問量 59萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章