下载 NPM 包
本教程是 Iconify Tools 中 包函数文档 的一部分。
函数 downloadNPMPackage() 用于下载 NPM 包。
与 npm install 不同,此函数仅下载并提取请求的 NPM 包,不会安装依赖项,也不会运行任何脚本。
用法
该函数具有以下参数:
- options,object。选项,见下文。
函数返回:
- 成功时返回 DownloadNPMPackageResult 对象。
- 如果自上次运行以来包未更新,则返回 "not_modified" 字符串(仅在设置了 ifModifiedSince 选项时才会返回)。
如果发生错误,函数可能会抛出异常,你可以使用 try 和 catch 进行捕获。
该函数是异步的。这意味着你需要将其作为 Promise 实例进行处理,通常是在函数调用前添加 await。
选项
选项对象包含以下必需属性:
- target,string。目标目录。如果目录不存在,将会自动创建。
- package,string。包名称。
以及以下可选属性:
- tag,string。NPM 标签。默认为 "latest"。
- cleanup,boolean。如果为 true,则在导出图标前会清空目标目录。默认为 false。
- ifModifiedSince,string|true|DownloadNPMPackageResult。如果设置,函数将检查包是否已更新。
ifModifiedSince
当你希望仅在包已更新时才检索数据时,可使用 ifModifiedSince 选项。
值可以是以下之一:
- 作为 string 的版本号。你可以从上次运行结果的 version 属性中获取。
- 如果值为 true,函数会将 NPM 注册表中的最新版本与 target 目录中先前下载文件的版本进行比较。
- 上次运行返回的 DownloadNPMPackageResult 值。
如果包未更新,函数将返回字符串 "not_modified"。
如果未设置该选项,函数将不会返回 "not_modified"。
结果
结果对象包含以下属性:
- downloadType = "npm"。
- rootDir,string。目标目录。它是 target 选项的规范化版本,不包含末尾的 "/"。
- contentsDir,string。解压归档文件的目录。
- version,string。包版本。
contentsDir 的值始终包含 rootDir,因为归档文件会解压到 rootDir 的子目录中。例如:
json
{
"downloadType": "npm",
"rootDir": "output/npm-test",
"contentsDir": "output/npm-test/package",
"version": "1.0.1"
}示例
example.ts
ts
import { downloadNPMPackage } from '@iconify/tools';
(async () => {
console.log(
await downloadNPMPackage({
target: 'downloads/icon-sets/mdi-light',
package: '@iconify-json/mdi-light',
})
);
})();