@enonic/js-utils

中文文档
2.1.0发布于 2026/08/25Apache-2.0TypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 3858

Enonic XP JavaScript Utils

原始使用文档
文档目录6 节
  1. Changelog
  2. 1.11
  3. Examples
  4. DSL
  5. Filter
  6. Release

JavaScript Utilities

A library of constants and functions that should work in any

  • typescript
  • ecmascript
  • javascript

The intention is that the library should not depend upon any node-module that doesn't work in at least these environments:

  • Enonic XP serverside code (Nashorn/GraalJS)
  • Modern browser
  • Newest LTS version of Node

It should work in at least these frameworks:

  • React

Changelog

1.11

  • Deprecate forceArray() which has several known issues!
  • Provide noNilsArray() which is an improved typesafe alternative to forceArray.
  • Provide filterNils() which is used by noNilsArray to remove nil values from an array.
  • Provide isNotNil() typeguard.
  • Implement #682 Provide functions (fulltext, ngram, stemmed) where boost is handeled correctly.
  • Bugfix: STEMMING_LANGUAGE_CODE_BRAZILIAN changed from pt-br to pt-BR.

New functions:

PathDescription
array/filterNilsRemoves null and undefined values from an array.
array/noNilsArrayTurns any value into an array of non-nullish items.
storage/querying/fulltextSearch for words in a field.
storage/querying/ngramSearch for words that begin with letters in a field.
storage/querying/stemmedSearch for stemmed words in a field.
value/isNotNilCheck if a value is not null or undefined.

Examples

DSL

import { and } from '@enonic/js-utils/storage/query/dsl/and';
import { bool } from '@enonic/js-utils/storage/query/dsl/bool';
import { fulltext } from '@enonic/js-utils/storage/querying/fulltext';
import { ngram } from '@enonic/js-utils/storage/querying/ngram';
import { stemmed } from '@enonic/js-utils/storage/querying/stemmed';

const fields = 'url^1.2,title^1.1,text';
const searchString = 'fun video';
const operator = 'OR';
const query = bool(and(
    fulltext(fields, searchString, operator),
    stemmed(fields, searchString, operator, 'no', 0.9),
    stemmed(fields, searchString, operator, 'en', 0.8),
    ngram(fields, searchString, operator, 0.7)
));
console.debug(JSON.stringify(query, null, 4));

/*
{
    "boolean": {
        "must": [
            // fulltext
            // stemmed_no
            // stemmed_en
            // ngram
        ]
    }
};
*/

Filter

import { addQueryFilter } from '@enonic/js-utils/storage/query/addQueryFilter';

const filters = addQueryFilter({
    filter: {
        exists: {
            field: 'required'
        }
    }
});
/*{
    boolean: {
        must: {
            exists: {
                field: 'required'
            }
        }
    }
}*/

Release

  • Remember to update changelog above.
git tag vX.Y.Z
git push origin vX.Y.Z

This will trigger release & publish on NPM.

版本与发布记录

@enonic/js-utils 共发布 115 个版本,首次发布于 2021/08/30;过去 12 个月发布了 7 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.1.0latest2026/08/252 个月前
1.12.02026/08/142 个月前
1.11.02026/07/074 个月前
2.0.02026/06/125 个月前
2.0.0-rc.1beta2026/06/085 个月前
2.0.0-beta.12026/05/195 个月前

关于 @enonic/js-utils 的常见问题

@enonic/js-utils 是什么?

Enonic XP JavaScript Utils

如何安装 @enonic/js-utils?

在项目目录运行 npm install @enonic/js-utils,或使用 pnpm add / yarn add / bun add。

@enonic/js-utils 支持 TypeScript 吗?

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

@enonic/js-utils 支持 ESM 还是 CommonJS?

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

@enonic/js-utils 可以商用吗?

@enonic/js-utils 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@enonic/js-utils 的下载量有多少?

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

@enonic/js-utils 还在维护吗?

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