# @4cloudguru/pipeline-task-core 中文文档

规范地址：https://npmcn.com/package/%404cloudguru/pipeline-task-core/

版本：0\.9\.3
npm 元数据更新时间：2026-09-09T05:34:05.136Z
中文译文更新时间：2026-11-06T06:49:59.249Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%404cloudguru/pipeline-task-core
原文对照：https://npmcn.com/package/%404cloudguru/pipeline-task-core/?lang=original
项目主页：https://github.com/4cloudguru/pipeline-task-core#readme
源码仓库：https://github.com/4cloudguru/pipeline-task-core

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：497 kB，15 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20\.0\.0
- 运行依赖：0 个
- peer 依赖：openpgp ^6\.0\.0
- 首次发布：2026-08-12T03:05:36.877Z
- 最新版本发布：2026-09-09T05:34:04.717Z
- 近 30 天下载量：4330（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：20（近 12 个月 20 个）

## 中文简介

为Azure管道任务扩展而共享的HTTP,再试,相入和红化原始.

## 安装

```sh
npm install @4cloudguru/pipeline-task-core
```

也可以使用：`pnpm add @4cloudguru/pipeline-task-core`、`yarn add @4cloudguru/pipeline-task-core`、`bun add @4cloudguru/pipeline-task-core`

## README

# 管道任务核心

`@4cloudguru/pipeline-task-core` ——共享,版本的安全原始(HTTP客户端,再试, Egreat) 每个 Azure DevOps 管道任务所消耗的允许列表、 URL 秘密编辑、 代理配置 破产财产中的扩展 :

-   [zu管-晶体](https://github.com/sethbacon/azure-pipelines-terraform)
-   [zu管-包装器](https://github.com/sethbacon/azure-pipelines-packer)
-   [zu管-释放-文件](https://github.com/sethbacon/azure-pipelines-release-docs) _(计划)_

> **状态:脚手架.** 工具链、CI和治理已经到位,一个原始的 (单位:千美元)`parseRetryAfterMs`)是用来证明建设结束到结束的. 其余模块库存 是第0阶段的工作。 计划是建立在 [文献/倡议/倡议-1-共享-任务核心. md](https://npmcn.com/package/%404cloudguru/pipeline-task-core/docs/initiatives/initiative-1-shared-task-core.md) 并且既包括这个套件,也包括推动它的新扩展.

## 为什么会这样

Terraform 和 Packer 扩展 各自携带相同的 HTTP/ retry/ asset 复制件 原始资料——分别为33个档案和8个档案——按照出处评论公约加以保存 而不是编译器。 公约只检查了标记 _已存在_,而不是他们的主张 真实的,所以状态 传言腐烂 而CI保持绿色。 本套件以下列案文取代公约: 依赖性.

## B. 影响建筑物的制约因素

故意与 `cloud-suite-ui`,这是一个浏览器/反应包:

| 约束 | 数值 | 为什么 |
| --- | --- | --- |
| 模块格式 | cJS + 无害环境管理 | ADO 任务为 commonJS 并使用 `import tl = require(...)`CI说: `require()` 决定. |
| 节点层 | 20国 | 每个任务都宣布 `Node20_1` 没有节点24跑道的特工的后退处理器. |
| 运行时间依赖关系 | 无 | `openpgp` 是一个 _选项对等点_,只能通过 `./gpg` 子路径. |
| 书记官处 | 公共 npmjs,带出处 | 任何消费者都无需安装标志 `--provenance` 发布可核查的软件包 + 承诺 + 工作流程链接. |

## 入境点

```ts
import { parseRetryAfterMs } from '@4cloudguru/pipeline-task-core'
import type { VerifyDetached } from '@4cloudguru/pipeline-task-core/gpg'
```

`./gpg` 任务是分开的,所以从不验证发布签名不销售 `openpgp` 进入 `.vsix`它故意载运 **没有签名密钥** - 呼叫者通过自己的装甲钥匙并保持 他们自己的密钥新鲜度检查, 因为信任根属于依赖它的数据库.

## 代理支持

`resolveProxy` 读取 Azure DevOps 代理的配置. `resolveEnvProxy` 读取 `HTTPS_PROXY` 编号 : `HTTP_PROXY` 编号 : `NO_PROXY` a GitHub 自行托管的跑步器集—— 两者均 拼写, 小写取胜 —— 此节点的 `fetch` 光荣自在,为一无所取. 也没有 构建调度器 : `undici` 继续依赖消费者.

```ts
import { ProxyAgent } from 'undici'
import { createHttpClient, resolveEnvProxy } from '@4cloudguru/pipeline-task-core'

const client = createHttpClient({
  // Called for every attempt AND every redirect hop, with the URL about to be
  // issued — the answer depends on the destination, so a chain that redirects
  // off the origin has to be resolved again.
  fetchOptions: (url) => {
    const proxy = resolveEnvProxy(url)
    if (!proxy) return {}
    proxy.secrets.forEach((secret) => core.setSecret(secret)) // credentials in the URL are secrets
    return { dispatcher: new ProxyAgent(proxy.proxyUrl) } as RequestInit
  },
})
```

套接字带请求的代理更改, 绝不允许选择哪个目标 . `assertEgressHostAllowed` 仍然运行与 **目标** 东道主——初始和每个 重定向 hop —— 而它的主题绝不是代理: CONNECT 隧道到未经授权的主机仍然 未经授权的入侵.

## 具有证书的运输

`createHttpClient` 是用来下载公共文物的 `fetch`。 。 。 . `httpsRequest` 是另一个 运输:生 `node:https`,对于带有无记名标志、API键或基本 证书。 因此,其拒绝措辞是: _拒绝发送证书_ 超过一个非https URL 而不是拒绝取到一个 .

`createProxyTunnelAgent` 是原始https对应的 `resolveProxy`数字 : `node:https` 荣誉无 代理设置, 除非交出 `agent`,因此它会构建一个打开 HTTP `CONNECT` 隧道和 将其升级为 TLS. `registerSecret` 实值 **所需经费**,不是可选的 —— 衍生基数64 `Basic` 证明是一个字节序列 呼叫者从来不会构造 所以永远也不会想掩盖.

```ts
import { createProxyTunnelAgent, httpsRequest, truncateBody } from '@4cloudguru/pipeline-task-core'

const { status, body } = await httpsRequest({
  method: 'POST',
  url: new URL(registryUrl), // parsed by the caller, which owns the "bad URL" message
  headers: { Authorization: `Bearer ${apiKey}` },
  body: Buffer.from(JSON.stringify(payload), 'utf8'),
  agent: createProxyTunnelAgent(tl.getHttpProxyConfiguration(), {
    tunnelTimeoutMs: DEFAULT_REQUEST_TIMEOUT_MS,
    registerSecret: (secret) => tl.setSecret(secret),
  }),
})
if (status >= 400) throw new Error(`Publish failed: ${truncateBody(body)}`)
```

### 为什么不是 `fetch`

有两个独立的原因, 两者仍然坚持:

-   **`undici` 留下来.** 这个软件包没有运行时间依赖性,也没有增长;消费者 针 `undici` 目前为7.x,因为8号断裂 与节点24捆.
-   **消费者嘲笑 `nock` 并注入一个 `agent`。 。 。 .** `fetch` 没有 `agent` 选项,所以 一个端口会静静地放下代理-代理支持——上面的地道——以及驱动一个 请求通过一个真正的 CONNECT 代理.

一个状态被恢复,从不放弃: 打电话者对一个非-2xx的含义有分歧,所以决定继续 与他们. `truncateBody` 是限制远程机构选择工作日志的绑定值 失败占上风; `truncateForLog` 是更强大的帮助者(它也会剥去 C0 字符 并且是新来电者应该开始的地方.

## 发展

```bash
npm ci
npm run typecheck
npm test
npm run build
```

承诺遵循常规承诺(强制使用公关名称);请通过释放削减释放.

## 常见问题

### @4cloudguru/pipeline-task-core 是什么？

为Azure管道任务扩展而共享的HTTP,再试,相入和红化原始\.

### 如何安装 @4cloudguru/pipeline-task-core？

在项目目录运行 npm install @4cloudguru/pipeline-task-core，或使用 pnpm add / yarn add / bun add。

### @4cloudguru/pipeline-task-core 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @4cloudguru/pipeline-task-core 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @4cloudguru/pipeline-task-core 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @4cloudguru/pipeline-task-core 可以商用吗？

@4cloudguru/pipeline-task-core 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @4cloudguru/pipeline-task-core 的下载量有多少？

根据 npm 官方下载统计，@4cloudguru/pipeline-task-core 在 2026/10/05 – 2026/11/03 这 30 天内被下载 4,330 次，日均约 144 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @4cloudguru/pipeline-task-core 还在维护吗？

最新版本 0\.9\.3 发布于 2026/09/09（1 个月前）；至今共发布 20 个版本，其中过去 12 个月发布了 20 个；首次发布于 2026/08/12。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

