@formspec/core

中文文档
0.1.0-alpha.70发布于 2026/08/21MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 35.1万

形态学的核心公用事业

中文使用文档
文档目录10 节
  1. 安装
  2. 主要责任
  3. 示例
  4. 密钥导出
  5. 窗体类型
  6. IR 类型
  7. 扩展 API
  8. 公用事业
  9. 条目点
  10. 许可证

@formspec/ core (帮助)

共享类型,犬形IR节点,以及FormSpec的扩展注册API.

安装

pnpm add @formspec/core

大部分应用代码应该更喜欢 formspec 除非您正在构建工具、扩展或低级集成.

主要责任

  • 窗体元素和状态类型
  • 建造管道所用的罐式IR型
  • 约束定义元数据
  • 为自定义类型、限制和说明提供扩展注册帮助
  • 共用类型警卫

示例

import type { FormElement, FormIR } from "@formspec/core";
import {
  defineAnnotation,
  defineConstraint,
  defineCustomType,
  defineExtension,
} from "@formspec/core";

function isFieldElement(element: FormElement): boolean {
  return element._type === "field";
}

const decimalType = defineCustomType({
  typeName: "Decimal",
  tsTypeNames: ["Decimal"],
  toJsonSchema: (_payload, vendorPrefix) => ({
    type: "string",
    [`${vendorPrefix}-decimal`]: true,
  }),
});

const displayCurrency = defineAnnotation({
  annotationName: "DisplayCurrency",
  inheritFromBase: "local-wins",
});

const extension = defineExtension({
  extensionId: "x-example/decimal",
  types: [decimalType],
  constraints: [],
  annotations: [displayCurrency],
});

inheritFromBase 只有语义上的继承。 它允许一个类型级自定义注释流经类/界面遗产并被命名为类型别名的切入点,当所衍生的宣告在当地不声明相同的扩展注释,但不会将注释序列化为JSON Schema. 外观排放仍由可选的现有 toJsonSchema 钩子,所以地产级注释继承和元数据位继承仍然超出了范围.

密钥导出

窗体类型

  • FormSpec
  • FormElement
  • AnyField
  • Group
  • Conditional
  • FieldState
  • FormState

IR 类型

  • FormIR
  • FieldNode
  • LayoutNode
  • TypeNode
  • ConstraintNode
  • AnnotationNode
  • Provenance

扩展 API

  • defineExtension
  • defineConstraint
  • defineConstraintTag
  • defineAnnotation
  • defineCustomType

公用事业

  • normalizeConstraintTagName
  • createInitialFieldState
  • IR_VERSION
  • 字段和布局类型

条目点

入境点目的
@formspec/core稳定公共类型和扩展 API
@formspec/core/internals不稳定的低级别内部类型

许可证

这个包是FormSpec monorepo的一部分,根据MIT许可证发行. 见 自由主义 详细情况.

版本与发布记录

@formspec/core 共发布 29 个版本,首次发布于 2026/01/29;过去 12 个月发布了 29 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.0-alpha.70latest2026/08/212 个月前
0.1.0-alpha.632026/04/246 个月前
0.1.0-alpha.592026/04/226 个月前
0.1.0-alpha.552026/04/206 个月前
0.1.0-alpha.542026/04/206 个月前
0.1.0-alpha.532026/04/206 个月前

其他发布通道:alpha → 0.1.0-alpha.0。

关于 @formspec/core 的常见问题

@formspec/core 是什么?

形态学的核心公用事业

如何安装 @formspec/core?

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

@formspec/core 支持 TypeScript 吗?

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

@formspec/core 支持 ESM 还是 CommonJS?

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

@formspec/core 可以商用吗?

@formspec/core 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@formspec/core 的下载量有多少?

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

@formspec/core 还在维护吗?

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