@flexent/pointer

中文文档
2.22.1发布于 2026/11/13MITES Module零依赖近 30 天下载 2125

Simple Object Get/Set via JSON Pointer or dot-delimited formats

原始使用文档
文档目录3 节
  1. Highlights
  2. Usage
  3. Spec

Pointer

Simple library for getting and setting object values via JSON Pointer or dot-delimited formats.

Highlights

  • 🔥 Zero dependencies
  • 💻 Works in browser
  • 🗜 Tidy and compact, only ~500 bytes minified uncompressed
  • ⚡️ Blazing fast

Usage

import * as pointer from '@flexent/pointer';

const object = {
    foo: {
        items: [
            { bar: 'one' },
            { bar: 'two' },
            { bar: 'three' },
        ]
    }
};

// If pointer starts with /, then it's interpreted
// as RFC6901 compliant JSON Pointer
pointer.get(object, '/foo/items/1/bar'); // 'two'

// Otherwise it's a dot-delimited path
pointer.get(object, 'foo.items.0'); // { bar: 'one' }

// Set modifies the object, creating additional objects and arrays as needed
const newObj = {}
pointer.set(newObj, 'foo.items.0.bar', '123');
// newObj is now { foo: { items: [{ bar: '123' }] } }

Spec

Pointer aims to implement all the features from RFC6901 whilst also extending it to provide the following features:

  1. Dot-delimited paths:

    get({ foo: { bar: { baz: 123 }}}, 'foo.bar.baz')
    // 123
    
  2. Wildcard syntax to access array content:

    // Single level
    get({
        users: [
            { name: 'Joe' },
            { name: 'Jane' },
        ]
    }, 'users.*.name');
    // ['Joe', 'Jane']
    
    // Multiple levels
    get({
        items: [
            {
                tags: [{ value: 1 }, { value: 2 }],
            },
            {
                tags: [{ value: 3 }],
            },
        ]
    }, 'items.*.tags.*.value');
    // [ [ 1, 2 ], [ 3 ] ]
    
  3. Push values into array:

    const obj = {};
    set(obj, '/items/-', 'foo');
    // { items: ['foo' ] }
    

版本与发布记录

@flexent/pointer 共发布 43 个版本,首次发布于 2022/10/05;过去 12 个月发布了 40 个版本。

版本发布日期距今
2.22.1latest2026/11/132 天前
2.22.02026/11/132 天前
2.21.02026/11/132 天前
2.20.22026/11/133 天前
2.20.12026/11/115 天前
2.20.02026/11/069 天前

关于 @flexent/pointer 的常见问题

@flexent/pointer 是什么?

Simple Object Get/Set via JSON Pointer or dot-delimited formats

如何安装 @flexent/pointer?

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

@flexent/pointer 支持 TypeScript 吗?

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

@flexent/pointer 支持 ESM 还是 CommonJS?

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

@flexent/pointer 可以商用吗?

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

@flexent/pointer 的下载量有多少?

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

@flexent/pointer 还在维护吗?

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