Skip to content

下载 Git 仓库

本教程是 Iconify Tools包函数文档 的一部分。

函数 downloadGitRepo() 会创建 Git 仓库的浅克隆。

Git 可执行文件

此函数使用 Git 来克隆仓库。请确保您的计算机上已安装 Git。

用法

该函数包含以下参数:

  • optionsobject。配置选项,详见下文。

函数返回:

  • 成功时返回 DownloadGitRepoResult 对象。
  • 如果自上次运行以来仓库未更新,则返回 "not_modified" 字符串(仅在设置了 ifModifiedSince 选项时可能返回)。

如果发生错误,函数可能会抛出异常,您可以使用 trycatch 进行捕获。

该函数是异步的。这意味着您需要将其作为 Promise 实例进行处理,通常是在函数调用前添加 await

选项

选项对象包含以下必需属性:

  • targetstring。目标目录。如果目录不存在,将会自动创建。值可以包含 "{hash}",它将被替换为最新的提交哈希值。
  • remotestring。Git 仓库地址,例如 "git@github.com:iconify/tools.git"。
  • branchstring。分支名称,例如 "master"。

以及以下可选属性:

  • cleanupboolean。如果为 true,则在导出图标前会清空目标目录。默认为 false
  • ifModifiedSincestring|true|DownloadGitRepoResult。如果设置,函数将检查仓库是否已更新。

ifModifiedSince

当您希望仅在仓库已更新时才获取数据时,可使用 ifModifiedSince 选项。

该值可以是以下之一:

  • 作为 string 的提交哈希值。您可以从上次运行结果的 hash 属性中获取。
  • 如果值为 true,函数会将远程仓库中的哈希值与 target 目录中先前下载文件的哈希值进行比较。
  • 上次运行返回的 DownloadGitRepoResult 值。

如果仓库未发生修改,函数将返回字符串 "not_modified"。

如果未设置此选项,函数将不会返回 "not_modified"。

返回值

结果对象包含以下属性:

  • downloadType = "git"。
  • contentsDirstring。仓库被克隆到的目录。它是 target 选项的规范化版本,不包含末尾的 "/",且 "{hash}" 已被替换为提交哈希值。
  • hashstring。最后一次提交的哈希值。

示例

boxicons.ts
tsimport { downloadGitRepo } from '@iconify/tools';

(async () => {
   console.log(
       await downloadGitRepo({
           target: 'downloads/boxicons-{hash}',
           remote: 'git@github.com:atisawd/boxicons.git',
           branch: 'master',
           ifModifiedSince: true,
           log: true,
       })
   );
})();