# @devicefarmer/stf-syrup 中文文档

规范地址：https://npmcn.com/package/%40devicefarmer/stf-syrup/

版本：2\.0\.0
npm 元数据更新时间：2026-10-24T23:37:59.155Z
中文译文更新时间：2026-11-12T03:24:20.862Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40devicefarmer/stf-syrup
原文对照：https://npmcn.com/package/%40devicefarmer/stf-syrup/?lang=original
项目主页：https://github.com/DeviceFarmer/stf-syrup#readme
源码仓库：https://github.com/DeviceFarmer/stf-syrup

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

- 包体积（解压后）：16.9 kB，12 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 22
- 运行依赖：0 个
- 首次发布：2020-05-16T12:03:54.375Z
- 最新版本发布：2026-10-24T23:37:58.856Z
- 近 30 天下载量：3944（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 1 个）

## 中文简介

基于承诺的,无配置的依赖性注射.

## 安装

```sh
npm install @devicefarmer/stf-syrup
```

也可以使用：`pnpm add @devicefarmer/stf-syrup`、`yarn add @devicefarmer/stf-syrup`、`bun add @devicefarmer/stf-syrup`

## README

# 糖浆

**糖浆** 很简单 [答应](http://promises-aplus.github.io/promises-spec/)\- 基于依赖性注入框架(或更确切地说,一个库) [节点.js](http://nodejs.org/)虽然已有许多相关努力,但Syrup试图以单一特征(依赖性分辨率)为重点并依靠Node.js来打破模具.

## 特征

-   配置为无. 不需要设置配置文件只是为了起起跑.
-   无魔法模块加载器. 这只是 `require()` 而你会是那个叫它(即你完全控制)的人.
-   [答应](http://promises-aplus.github.io/promises-spec/)\-只有这样.
-   [爱嘲笑](https://npmcn.com/package/%40devicefarmer/stf-syrup/#readme-mockability)。输入带有模拟依赖性的模块,以便于测试.
-   无侵取相. 你可以用糖浆 在你的应用程序的一部分.
-   与可选序列模式平行运行.
-   船舶类型文稿申报.

## 所需资源

-   [节点.js](https://nodejs.org/) 22岁或更新。 旧版本不支持 .

## 开始

通过国家预防机制安装:

```bash
npm install --save @devicefarmer/stf-syrup
```

模块声明其依赖性 `.dependency()` 及其躯体 `.define()`. 机构收到每个依附物的价值的选项,按依附物添加顺序排列:

```javascript
var syrup = require('@devicefarmer/stf-syrup')

var box = syrup()
  .define(function(options) {
    return {
      put: function(thing) {
        return Promise.resolve(thing)
      }
    }
  })

module.exports = syrup({size: 'large'})
  .dependency(box)
  .define(function(options, box) {
    return box
  })
```

`.consume(options)` 解决每个依赖,然后叫身体 并返回一个本地 `Promise` 以什么物配主, 每个模块只消耗一次:若干其他模块依赖一次运行,它们都分享其价值,而且每晚 `.consume()` 返回同样的承诺,无论给予什么选项。 选项中填入模块的默认选项,即给 `syrup()`。 。 。 .

`syrup()` 消耗并行的依赖. `syrup.serial()` 一次消耗一次 一次解决一次.

### 类型脚本

该包被用TypeScript来写出,并用船载其申报. `syrup.Syrup<T>` 模块的类型 `.consume()` 决定: `T`,以及 `.define()` 推断 `T` 从身体:

```typescript
import syrup from '@devicefarmer/stf-syrup'

const answer = syrup.serial().define((options: {base: number}) => options.base + 41)
// answer.consume() is a Promise<number>, and answer is a syrup.Syrup<number>
```

### 从1.x升级

`.consume()` 用于返回 a [蓝鸟](https://github.com/petkaantonov/bluebird) 1.x承诺,现在返回本地 `Promise`在结果上称为只使用蓝鸟方法的代码,例如 `.spread()`, (中文(简体) ), `.tap()` 或者说 `.isFulfilled()`,必须改变。 与任何本地人的承诺一样,一个现在没有任何办法的拒绝使得Node.js离开而不是被登录.

## 可移动性

差不多一样 [建筑师](https://github.com/c9/architect),您可以通过向模块传递自己的模拟依赖来直接引用模块.

**存档.js**

```javascript
var syrup = require('@devicefarmer/stf-syrup')

module.exports = syrup()
  .dependency(require('./box'))
  .define(function(options, box) {
    return {
      store: function(thing) {
        return box.put(thing)
      }
    }
  })
```

**存档- test.js**

```javascript
var sinon = require('sinon')
var chai = require('chai')
chai.use(require('sinon-chai'))
var expect = chai.expect

var archive = require('./archive')

describe('archive', function() {

  it('should put the thing in the box', function() {
    var mockBox = {
      put: sinon.spy()
    }
    var treasure = 42
    archive.invoke(null, mockBox).store(treasure)
    expect(mockBox.put).to.have.been.calledWith(treasure)
  })

})
```

## 捐款

见 [捐款额](https://npmcn.com/package/%40devicefarmer/stf-syrup/CONTRIBUTING.md)。 。 。 .

## 许可证

见 [自由主义](https://npmcn.com/package/%40devicefarmer/stf-syrup/LICENSE)。 。 。 .

版权所有 网络代理公司,所有权利保留.

## 常见问题

### @devicefarmer/stf-syrup 是什么？

基于承诺的,无配置的依赖性注射\.

### 如何安装 @devicefarmer/stf-syrup？

在项目目录运行 npm install @devicefarmer/stf-syrup，或使用 pnpm add / yarn add / bun add。

### @devicefarmer/stf-syrup 支持 TypeScript 吗？

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

### @devicefarmer/stf-syrup 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @devicefarmer/stf-syrup 需要什么版本的 Node\.js？

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

### @devicefarmer/stf-syrup 可以商用吗？

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

### @devicefarmer/stf-syrup 的下载量有多少？

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

### @devicefarmer/stf-syrup 还在维护吗？

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

