npm 包 @sergioalonso.es/github-miner 使用教程

阅读时长 23 分钟读完

背景

GitHub 是全球最大的开源软件开发平台,数百万开发者积极地在此交流代码、创建项目、并协助开发更好的解决方案。GitHub 的数据也因此成为了一个重要的数据来源,可以用于分析行业趋势、项目健康度、个人贡献度等等。

@sergioalonso.es/github-miner 是一个 npm 包,它提供了一种轻松、快速地获取 GitHub 数据的方式。有了这个包,你可以使用 GitHub 的 REST API 和 GraphQL API 获取数据,支持多种数据获取和筛选方式。

在这篇文章中,我们将深入了解 @sergioalonso.es/github-miner,包括如何安装它、如何在项目中使用它,以及如何进行高级数据筛选。

安装

你可以使用 npm 在你的项目中安装 @sergioalonso.es/github-miner

接着你可以在你的代码中引入它:

使用

通过 GithubMiner 类,我们可以使用 GitHub 的 REST API 和 GraphQL API 获取数据。不要忘记在使用之前设置你的 GitHub 凭证,这可以在你的代码中指定:

获取用户信息

获取用户信息可以使用 REST API,例如我们想获取 user001 的信息:

你将看到类似下面的输出:

-- -------------------- ---- -------
-
    -------- ----------
    ----- -------
    ---------- ---------------------
    ------------- -----------------------------------------------------
    -------------- ---
    ------ ---------------------------------------
    ----------- -----------------------------
    ---------------- -------------------------------------------------
    ---------------- --------------------------------------------------------------
    ------------ -------------------------------------------------------
    -------------- --------------------------------------------------------------
    -------------------- -----------------------------------------------------
    -------------------- --------------------------------------------
    ------------ ---------------------------------------------
    ------------- --------------------------------------------------------
    ---------------------- -------------------------------------------------------
    ------- -------
    ------------- ------
    ------- ----- -----
    ---------- -----
    ------- ---
    ----------- ---- -----------
    -------- -----
    ----------- -----
    ------ -----
    ------------------- -----
    --------------- --
    --------------- --
    ------------ --
    ------------ --
    ------------- -----------------------
    ------------- ----------------------
-

获取仓库信息

获取仓库信息同样可以使用 REST API,例如获取 sergioalonso.es/github-miner 的信息:

你将看到类似下面的输出:

-- -------------------- ---- -------
-
    ----- ----------
    ---------- -----------------------------------
    ------- ---------------
    ------------ -------------------------------
    ---------- ------
    -------- -
        -------- ------------------
        ----- ---------
        ---------- -----------------------------------
        ------------- -------------------------------------------------------
        -------------- ---
        ------ -----------------------------------------------
        ----------- -------------------------------------
        ---------------- ---------------------------------------------------------
        ---------------- ----------------------------------------------------------------------
        ------------ ---------------------------------------------------------------
        -------------- ----------------------------------------------------------------------
        -------------------- -------------------------------------------------------------
        -------------------- ----------------------------------------------------
        ------------ -----------------------------------------------------
        ------------- ----------------------------------------------------------------
        ---------------------- ---------------------------------------------------------------
        ------- ---------------
        ------------- -----
    --
    ----------- --------------------------------------------------
    -------------- ------- ----- -- - ------ ------- -- -------- ---- --- ------ --- ---------
    ------- ------
    ------ ------------------------------------------------------------
    ------------ ------------------------------------------------------------------
    ----------- --------------------------------------------------------------------------
    -------------------- -----------------------------------------------------------------------------------------
    ------------ ------------------------------------------------------------------
    ------------ ------------------------------------------------------------------
    ------------------- -----------------------------------------------------------------------------------
    ------------- -------------------------------------------------------------------
    ---------------- -----------------------------------------------------------------------------
    --------------- ------------------------------------------------------------------------------
    ----------- -----------------------------------------------------------------
    ------------ ----------------------------------------------------------------------------
    --------------- ---------------------------------------------------------------------------
    --------------- ---------------------------------------------------------------------------
    ------------ ----------------------------------------------------------------------------
    --------------- ---------------------------------------------------------------------------
    ---------------- ----------------------------------------------------------------------
    ----------------- -----------------------------------------------------------------------
    ------------------- -------------------------------------------------------------------------
    ------------------ ------------------------------------------------------------------------
    ------------------- -------------------------------------------------------------------------
    -------------- --------------------------------------------------------------------------
    ------------------ ------------------------------------------------------------------------------
    --------------- ------------------------------------------------------------------------------
    -------------------- -------------------------------------------------------------------------------------
    --------------- -----------------------------------------------------------------------------
    -------------- ------------------------------------------------------------------------------------
    ------------- -------------------------------------------------------------------
    -------------- -----------------------------------------------------------------------------------
    ---------------- ----------------------------------------------------------------------
    ------------- ----------------------------------------------------------------------------
    ------------ ---------------------------------------------------------------------------
    ----------------- --------------------------------------------------------------------------------
    -------------------- ----------------------------------------------------------------------------------------------------
    ------------- --------------------------------------------------------------------------
    --------------- --------------------------------------------------------------------------
    ------------------ ------------------------------------------------------------------------
    ------------- -----------------------
    ------------- -----------------------
    ------------ -----------------------
    ---------- ----------------------------------------------------
    ---------- --------------------------------------------------
    ------------ ------------------------------------------------------
    ---------- --------------------------------------------------
    ----------- -----
    ------- --
    ------------------- --
    ----------------- --
    ----------- -------------
    ------------- -----
    --------------- -----
    ---------------- -----
    ----------- -----
    ------------ ------
    -------------- --
    ------------- -----
    ----------- ------
    ----------- ------
    -------------------- --
    ---------- -----
    -------- --
    -------------- --
    ----------- --
    ----------------- ------
-

获取仓库的 commits

使用 GraphQL API 可以获取仓库的 commits。以下代码将获取 sergioalonso.es/github-miner 的最近 10 条 commit:

你将看到类似下面的输出:

-- -------------------- ---- -------
-
    ------- -
        ------------- -
            ------- ---------------
            ------------------- -
                --------- -
                    ---------- -
                        -------- -
                            -
                                ------- -
                                    ---------------- -----------------------
                                    ------------ --------------------------------------------------------------------------------------------------
                                    ------------------ -------- ---- -------------
                                    ------ -------------------------------------------
                                    --------- -
                                        ------- ------- --------
                                        -------- -------------------------
                                        ------- -
                                            -------- ------------------
                                            ------ -------------------------------------
                                            ------------ -------------------------------------------------------------------------------------------------
                                        -
                                    -
                                -
                            --
                            -
                                ------- -
                                    ---------------- -----------------------
                                    ------------ --------------------------------------------------------------------------------------------------
                                    ------------------ ---- ------- ----------
                                    ------ -------------------------------------------
                                    --------- -
                                        ------- ------- --------
                                        -------- -------------------------
                                        ------- -
                                            -------- ------------------
                                            ------ -------------------------------------
                                            ------------ -------------------------------------------------------------------------------------------------
                                        -
                                    -
                                -
                            --
                            ---
                        -
                    -
                -
            -
        -
    -
-

获取仓库的 fork 数

这里我们来演示一下如何使用 GraphQL API,筛选 fork 数。以下代码将获取 sergioalonso.es/github-miner 的 fork 数:

你将看到类似下面的输出:

获取用户或组织下的所有成员

同样是使用 GraphQL API,以下代码将获取 sergioalonso.es 组织下所有的成员:

你将看到类似下面的输出:

高级使用

在查询中使用参数

在上面的例子中,我们是使用 query string 传递参数的。但是在某些情况下,我们会想要在查询中使用参数。这需要使用 GraphQL API,以下是一个例子:

-- -------------------- ---- -------
----- ----- - -
    ------------------------ -------- -
        ------------------- ------------------ -
            ------------ --- -
                ----- -
                    ----
                -
            -
        -
    -
--

----- --------- - -
    ----------------- ------------------
--

----- ------ - ----- ------------------- -----------
--------------------

我们通过 query 变量中的 $organizationName 定义了一个参数,在 variables 中传递变量值。这里我们使用了 query 方法,该方法允许我们使用 GraphQL API。

支持多种数据筛选方式

GitHub 的 API 支持多种数据筛选方式,包括:分页、排序、筛选等。我们可以通过 GithubMiner 的方法传递这些参数,以下是一个例子:

在这个例子中,我们获取的是 sergioalonso.es/github-miner 的最近 10 条 commit,并且使用了 authorsinceuntil 参数进行筛选。你可以在 官方文档 中找到更多参数。

总结

在这篇文章中,我们深入了解了 @sergioalonso.es/github-miner,包括安装、使用、高级使用。通过使用该 npm 包,我们可以轻松获取 GitHub 的数据,包括用户信息、仓库信息、commits 信息等等。同时,我们也可以使用 REST API 和 GraphQL API 实现高级数据筛选,提高了数据的准

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005543e81e8991b448d1919

纠错
反馈