@ensdomains/ensjs

中文文档
5.3.1发布于 2026/11/13MITTypeScriptES Module构建来源已验证近 30 天下载 11.3万

ENS Javascript 合同互动图书馆

中文使用文档
文档目录10 节
  1. 特征
  2. 莫诺雷波布局
  3. 安装
  4. 开始
  5. 入境点
  6. 行动模式
  7. 发展
  8. 捐款
  9. 文档
  10. 许可证

ENSjs

最终的 ENS JavaScript 库 维姆 在引擎盖下.

ENSjs是一个用于与Ethereum名称服务交互的TypeScript库. 它规定 在viem上方的可树可震动和可堆肥的动作,对两者都给予一等支持 ENS v1和ENS v2 (英语).

特征

  • 延伸任何viem的可编译动作 Client
  • 全树摇晃——只支付您导入的动作
  • 多呼分批读取动作
  • TypeScript- first, 链式合同的严格类型
  • ENS v1 + ENS v2 并行支持
  • 包括子图和DNS助手
  • 独立 @ensdomains/ensjs-abi aBI 软件包片段

莫诺雷波布局

软件包说明
@ensdomains/ensjs主要图书馆——行动、客户端、图利茨
@ensdomains/ensjs-abiABI 每一份ENS合同的片断(v1 + v2)
@ensdomains/ensjs-react搭建的反应钩 @wagmi/core
@ensdomains/ensjs-query-core@wagmi/core 查询集成

支持的链条 : mainnet (1)和 sepolia (11155111) (中文(简体) ).

安装

pnpm add @ensdomains/ensjs viem

你还需要 viem 2.9.2 作为同伴依赖。 一些特性需要可选的对等点 依赖性 :

软件包需要时间
graphql@ensdomains/ensjs/subgraph
@ensdomains/dnsprovejs (单位:千美元)^0.5.4 || ^1.0.0(中文(简体) )getDnsImportData 从 @ensdomains/ensjs/dns

开始

addEnsContracts 以所有 ENS 合同地址和子图 URL 扩展 viem 链条, 这样你就可以用它 与任何viem createPublicClient 编号 : createWalletClient。 。 。 .

import { http, createPublicClient } from 'viem'
import { mainnet } from 'viem/chains'
import { addEnsContracts } from '@ensdomains/ensjs'
import { getAddressRecord, getRecords } from '@ensdomains/ensjs/public'

const client = createPublicClient({
  chain: addEnsContracts(mainnet),
  transport: http(),
})

const eth = await getAddressRecord(client, { name: 'ens.eth' })
const records = await getRecords(client, {
  name: 'ens.eth',
  texts: ['com.twitter', 'avatar'],
  contentHash: true,
})

入境点

这个 @ensdomains/ensjs 软件包被分割为子路径导出, 以便捆绑者可以放下 所有你没有进口.

导入目录
@ensdomains/ensjsaddEnsContracts,错误类别
@ensdomains/ensjs/public共享读取动作(分辨率、记录、倒数、价格、可用性)
@ensdomains/ensjs/public/v1v1 具体读取
@ensdomains/ensjs/public/v2v2 具体读取
@ensdomains/ensjs/wallet共享写入动作( 承诺、 注册、 更新、 设定个人记录)
@ensdomains/ensjs/wallet/v1v1 专用写法( wrap/ unrap、 引信、 子名、 传输、 ), setRecords,主要名称)
@ensdomains/ensjs/wallet/v2v2 特写
@ensdomains/ensjs/subgraph子图客户端+查询( Q)getSubnames, (中文(简体) ), getNamesForAddress,历史,.)
@ensdomains/ensjs/dnsDNS 帮助者(getDnsOwner, (中文(简体) ), importDnsName, (中文(简体) ), getDnsImportData, (...) (中文(简体) )
@ensdomains/ensjs/utils编译员(getAddress, (中文(简体) ), getText, (中文(简体) ), getAbi, (中文(简体) ), getContentHash),名称为 utils
@ensdomains/ensjs/utils/v2v2 utils( 作用编码、 解析器资源、 犬类标识)
@ensdomains/ensjs/contractsABI 片断的再出口
@ensdomains/ensjs/chain链条类型和帮助者(ChainWithEns, (中文(简体) ), extendChainWithEns, (中文(简体) ), getChainContractAddress(中文(简体) )

ABIs本身作为独立包发布,可直接导入:

import { permissionedRegistryGetStateSnippet } from '@ensdomains/ensjs-abi/v2/permissionedRegistry'
import { ethRegistrarControllerRegisterSnippet } from '@ensdomains/ensjs-abi/v1/ethRegistrarController'

行动模式

每一个动作都是简单的功能 Client 第一和第二参数.

const result = await actionName(client, {
  /* params */
})

读取动作使用 getAction + 键 readContract 编号 : multicall 所以他们用什么工作 批量配置在客户端上。 写入动作返回交易散列并接受 标准viem 写入参数(account, (中文(简体) ), chain,气体等).

发展

# Install
pnpm install

# Build everything
pnpm -r build

# Build a single package
pnpm -F @ensdomains/ensjs build
pnpm -F @ensdomains/ensjs-abi build

# Lint (Biome)
pnpm lint

# Type check
pnpm -F @ensdomains/ensjs check:types

# Test the main package
pnpm -F @ensdomains/ensjs test
pnpm -F @ensdomains/ensjs test:watch
pnpm -F @ensdomains/ensjs test src/actions/public/resolver/getRecords.test.ts

# Generate the markdown docs
pnpm -F @ensdomains/ensjs generateDocs

# Versioning (changesets)
pnpm chgset:run
pnpm chgset:version

测试与已部署的ENS合同的当地devnet对接,测试名称被播种 (单位:千美元)ghcr.io/ensdomains/contracts-v2),所以多克需要运行. test 启动devnet 通过 packages/ensjs/compose.yml 然后停止它之后。 如果已经运行 localhost:8545,它是重复使用的:

docker compose -f packages/ensjs/compose.yml up -d devnet

主包需要22个节点(18个) query-core工具:pnpm 12, TypeScript 严格模式, Biome 用于格式化和林化, Vitest 用于测试.

捐款

见 捐款额 指导增加新行动,连接新行动 ABI 片段,登记新的合同地址,以及在整个 复发.

文档

指南和API的参考文献在 docs/。API的参考文献是 生成源 JSDoc 与 pnpm -F @ensdomains/ensjs generateDocs。 。 。 .

许可证

麻省理工学院

版本与发布记录

@ensdomains/ensjs 共发布 143 个版本,首次发布于 2020/10/05;过去 12 个月发布了 26 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
5.3.1latest2026/11/13今天
5.3.02026/11/13今天
5.2.122026/11/0211 天前
5.2.112026/11/0211 天前
5.2.102026/10/2915 天前
5.2.92026/10/2816 天前

其他发布通道:rc-branch → 0.0.0-feat-new-dnssec-oracle-updated.20240123T214835358,alpha → 5.0.0-alpha.1,next → 4.2.0,sepolia-fix → 5.0.0-sepolia-fix.1。

关于 @ensdomains/ensjs 的常见问题

@ensdomains/ensjs 是什么?

ENS Javascript 合同互动图书馆

如何安装 @ensdomains/ensjs?

在项目目录运行 npm install @ensdomains/ensjs,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:viem(^2.9.2)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@ensdomains/ensjs 支持 TypeScript 吗?

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

@ensdomains/ensjs 支持 ESM 还是 CommonJS?

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

@ensdomains/ensjs 需要什么版本的 Node.js?

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

@ensdomains/ensjs 可以商用吗?

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

@ensdomains/ensjs 的下载量有多少?

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

@ensdomains/ensjs 还在维护吗?

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