@devicefarmer/stf-syrup

中文文档
2.0.0发布于 2026/10/25Apache-2.0TypeScriptCommonJS零依赖构建来源已验证近 30 天下载 3944

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

中文使用文档
文档目录8 节
  1. 特征
  2. 所需资源
  3. 开始
  4. 类型脚本
  5. 从1.x升级
  6. 可移动性
  7. 捐款
  8. 许可证

糖浆

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

特征

  • 配置为无. 不需要设置配置文件只是为了起起跑.
  • 无魔法模块加载器. 这只是 require() 而你会是那个叫它(即你完全控制)的人.
  • 答应-只有这样.
  • 爱嘲笑。输入带有模拟依赖性的模块,以便于测试.
  • 无侵取相. 你可以用糖浆 在你的应用程序的一部分.
  • 与可选序列模式平行运行.
  • 船舶类型文稿申报.

所需资源

  • 节点.js 22岁或更新。 旧版本不支持 .

开始

通过国家预防机制安装:

npm install --save @devicefarmer/stf-syrup

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

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 从身体:

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 蓝鸟 1.x承诺,现在返回本地 Promise在结果上称为只使用蓝鸟方法的代码,例如 .spread(), (中文(简体) ), .tap() 或者说 .isFulfilled(),必须改变。 与任何本地人的承诺一样,一个现在没有任何办法的拒绝使得Node.js离开而不是被登录.

可移动性

差不多一样 建筑师,您可以通过向模块传递自己的模拟依赖来直接引用模块.

存档.js

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

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)
  })

})

捐款

见 捐款额。 。 。 .

许可证

见 自由主义。 。 。 .

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

版本与发布记录

@devicefarmer/stf-syrup 共发布 5 个版本,首次发布于 2020/05/16;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.0.0latest2026/10/2518 天前
1.0.32024/11/262 年前
1.0.22021/03/085 年前
1.0.12020/08/286 年前
1.0.02020/05/166 年前

关于 @devicefarmer/stf-syrup 的常见问题

@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 和提交记录判断。