nth-check

中文文档
3.0.1发布于 2026/03/18BSD-2-ClauseTypeScriptES Module构建来源已验证近 30 天下载 3.3亿

Parses and compiles CSS nth-checks to highly optimized functions.

原始使用文档
文档目录3 节
  1. About
  2. API
  3. Security contact information

nth-check Build Status

Parses and compiles CSS nth-checks to highly optimized functions.

About

This module can be used to parse & compile nth-checks, as they are found in CSS 3's nth-child() and nth-last-of-type(). It can be used to check if a given index matches a given nth-rule, or to generate a sequence of indices matching a given nth-rule.

nth-check focusses on speed, providing optimized functions for different kinds of nth-child formulas, while still following the spec.

API

import nthCheck, { parse, compile } from "nth-check";
nthCheck(formula)

Parses and compiles a formula to a highly optimized function. Combination of parse and compile.

If the formula doesn't match any elements, it returns boolbase's falseFunc. Otherwise, a function accepting an index is returned, which returns whether or not the passed index matches the formula.

Note: The nth-rule starts counting at 1, the returned function at 0.

Example:

const check = nthCheck("2n+3");

check(0); // `false`
check(1); // `false`
check(2); // `true`
check(3); // `false`
check(4); // `true`
check(5); // `false`
check(6); // `true`
parse(formula)

Parses the expression, throws an Error if it fails. Otherwise, returns an array containing the integer step size and the integer offset of the nth rule.

Example:

parse("2n+3"); // [2, 3]
compile([a, b])

Takes an array with two elements (as returned by .parse) and returns a highly optimized function.

Example:

const check = compile([2, 3]);

check(0); // `false`
check(1); // `false`
check(2); // `true`
check(3); // `false`
check(4); // `true`
check(5); // `false`
check(6); // `true`
generate([a, b])

Returns a function that produces a monotonously increasing sequence of indices.

If the sequence has an end, the returned function will return null after the last index in the sequence.

Example: An always increasing sequence

const gen = nthCheck.generate([2, 3]);

gen(); // `1`
gen(); // `3`
gen(); // `5`
gen(); // `8`
gen(); // `11`

Example: With an end value

const gen = nthCheck.generate([-2, 5]);

gen(); // 0
gen(); // 2
gen(); // 4
gen(); // null
sequence(formula)

Parses and compiles a formula to a generator that produces a sequence of indices. Combination of parse and generate.

Example: An always increasing sequence

const gen = nthCheck.sequence("2n+3");

gen(); // `1`
gen(); // `3`
gen(); // `5`
gen(); // `8`
gen(); // `11`

Example: With an end value

const gen = nthCheck.sequence("-2n+5");

gen(); // 0
gen(); // 2
gen(); // 4
gen(); // null

License: BSD-2-Clause

Security contact information

To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.

版本与发布记录

nth-check 共发布 9 个版本,首次发布于 2014/02/15;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.0.1latest2026/03/187 个月前
3.0.02026/03/187 个月前
2.1.12022/05/234 年前
2.1.02022/05/234 年前
2.0.12021/09/165 年前
2.0.02020/12/025 年前

关于 nth-check 的常见问题

nth-check 是什么?

Parses and compiles CSS nth-checks to highly optimized functions.

如何安装 nth-check?

在项目目录运行 npm install nth-check,或使用 pnpm add / yarn add / bun add。

nth-check 支持 TypeScript 吗?

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

nth-check 支持 ESM 还是 CommonJS?

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

nth-check 需要什么版本的 Node.js?

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

nth-check 可以商用吗?

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

nth-check 的下载量有多少?

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

nth-check 还在维护吗?

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