Skip to content

下载 NPM 包

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

函数 downloadNPMPackage() 用于下载 NPM 包。

npm install 不同,此函数仅下载并提取请求的 NPM 包,不会安装依赖项,也不会运行任何脚本。

用法

该函数具有以下参数:

  • optionsobject。选项,见下文。

函数返回:

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

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

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

选项

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

  • targetstring。目标目录。如果目录不存在,将会自动创建。
  • packagestring。包名称。

以及以下可选属性:

  • tagstring。NPM 标签。默认为 "latest"。
  • cleanupboolean。如果为 true,则在导出图标前会清空目标目录。默认为 false
  • ifModifiedSincestring|true|DownloadNPMPackageResult。如果设置,函数将检查包是否已更新。

ifModifiedSince

当你希望仅在包已更新时才检索数据时,可使用 ifModifiedSince 选项。

值可以是以下之一:

  • 作为 string 的版本号。你可以从上次运行结果的 version 属性中获取。
  • 如果值为 true,函数会将 NPM 注册表中的最新版本与 target 目录中先前下载文件的版本进行比较。
  • 上次运行返回的 DownloadNPMPackageResult 值。

如果包未更新,函数将返回字符串 "not_modified"。

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

结果

结果对象包含以下属性:

  • downloadType = "npm"。
  • rootDirstring。目标目录。它是 target 选项的规范化版本,不包含末尾的 "/"。
  • contentsDirstring。解压归档文件的目录。
  • versionstring。包版本。

contentsDir 的值始终包含 rootDir,因为归档文件会解压到 rootDir 的子目录中。例如:

json{
   "downloadType": "npm",
   "rootDir": "output/npm-test",
   "contentsDir": "output/npm-test/package",
   "version": "1.0.1"
}

示例

example.ts
tsimport { downloadNPMPackage } from '@iconify/tools';

(async () => {
   console.log(
       await downloadNPMPackage({
           target: 'downloads/icon-sets/mdi-light',
           package: '@iconify-json/mdi-light',
       })
   );
})();