@arkstack/foundry

中文文档
0.22.1发布于 2026/11/05ES Module零依赖近 30 天下载 4202

Arkstack生态系统的可扩展性原始和框架内部.

中文使用文档
文档目录3 节
  1. 安装
  2. 模块
  3. 钩子

@arkstack/foundry

Foundry

Arkstack生态系统的可扩展性原始和框架内部. 这个软件包提供了塑造Arkstack在运行时的行为的工具. 虎克、生命周期拦截和公用事业,旨在扩展和调整框架而不修改其核心.

安装

pnpm add @arkstack/foundry

模块

钩子

src/Hook.ts

一个全球性的,命名为"钩子"的注册,用于扩展Arkstack内部而不修改核心代码. 虎克按下名称并辅以位置槽(before, (中文(简体) ), after,或任何自定义字符串)。 每个进程有一个登记册: @arkstack/common 再出口这个相同 Hook。 。 。 .

Hook.on(name, positions)

对钩子位置进行回调 注册同名再次合并:只增加或替换所提供的位置.

import { Hook } from '@arkstack/foundry'

Hook.on('request:handle', {
  before: (ctx) => console.log('before handler'),
  after: (ctx) => console.log('after handler'),
})

Hook.emit(name, pos, ...args)

使用给定的参数调用一个位置,并返回其结果: 承诺一个同声钩, 这样它就可以等待了 。 当没有注册时,它什么都不做,返回 undefined,所以呼叫者需要没有 has() 检查.

await Hook.emit('request:handle', 'before', ctx)

Hook.get(name, pos?)

取出全钩物体或一个位置的回调,而不用取出.

const hook = Hook.get('request:handle') // IHook | undefined
const before = Hook.get('request:handle', 'before') // function | undefined

Hook.has(name, pos?)

检查是否有钩(或其中的特定位置).

Hook.has('request:handle') // true | false
Hook.has('request:handle', 'after') // true | false

Hook.off(name?, pos?)

删除钩或单位. 一个没有位置的钩子会被删除 。 毫无争议地称呼它 清除每一个钩子; 一个没有注册的名字是无.

Hook.off('request:handle', 'before') // removes only the 'before' callback
Hook.off('request:handle') // removes the entire hook
Hook.off() // clears all hooks

Hook.all()

返回所有已注册的钩作为纯记录 .

const hooks = Hook.all()
// { 'request:handle': { before: fn, after: fn } }

Hook.clear()

清除所有注册的钩子.

折旧的别名

set() → on(), (中文(简体) ), unset() → off(), (中文(简体) ), getAll() → all()。 。 。 . get(name, pos, ...args) 参数仍然叫钩子,但使用 emit()· ; get() 只能找回来.

版本与发布记录

@arkstack/foundry 共发布 137 个版本,首次发布于 2026/05/28;过去 12 个月发布了 137 个版本。

版本发布日期距今
0.22.1latest2026/11/052 天前
0.22.02026/11/052 天前
0.21.12026/11/052 天前
0.21.02026/10/2810 天前
0.20.22026/10/2315 天前
0.20.12026/10/2117 天前

关于 @arkstack/foundry 的常见问题

@arkstack/foundry 是什么?

Arkstack生态系统的可扩展性原始和框架内部.

如何安装 @arkstack/foundry?

在项目目录运行 npm install @arkstack/foundry,或使用 pnpm add / yarn add / bun add。

@arkstack/foundry 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/arkstack__foundry 是否存在。

@arkstack/foundry 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@arkstack/foundry 可以商用吗?

@arkstack/foundry 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@arkstack/foundry 的下载量有多少?

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

@arkstack/foundry 还在维护吗?

最新版本 0.22.1 发布于 2026/11/05(2 天前);至今共发布 137 个版本,其中过去 12 个月发布了 137 个;首次发布于 2026/05/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。