@cron-zen/core

中文文档
0.2.5发布于 2026/11/02MITTypeScriptESM + CJS零依赖近 30 天下载 2163

Framework-agnostic Quartz/cron.ren Cron parser, generator, validator, describe, and next-run estimates

原始使用文档
文档目录10 节
  1. Install
  2. API (当前)
  3. parseCron(expression: string): ParseResult
  4. validateCronState(state): ValidateResult
  5. generateCron(state, options?): GenerateResult
  6. getNextRuns / getPrevRuns
  7. getCronPresets / listCronPresetDefs
  8. 其他导出
  9. Build
  10. License

@cron-zen/core

cron-zen 核心逻辑层:Cron 表达式解析、生成与校验。无框架依赖——原生 JS、Node、非 Vue 前端都应优先用本包。

需要可视化时另装 vanilla / react / vue2 / vue3(不能用 UI 包替代 core)。

完整函数说明(参数 / 返回 / 示例) → 文档 · API · core
在线引擎沙箱 → examples/core.html
选包:选哪个包

Install

npm install @cron-zen/core
# or
pnpm add @cron-zen/core

API (当前)

parseCron(expression: string): ParseResult

解析 5 / 6 / 7 段 Cron 表达式为可视化状态。

import { parseCron } from '@cron-zen/core';

const res = parseCron('0 0 2 * * ? *');
if (res.success) {
  console.log(res.state);
} else {
  console.error(res.error);
}

validateCronState(state): ValidateResult

校验范围、日周互斥、非法日期(如 2 月 31 日)。

import { validateCronState, createDefaultCronState } from '@cron-zen/core';

const res = validateCronState(createDefaultCronState());
console.log(res.valid, res.errors, res.warnings);

generateCron(state, options?): GenerateResult

由可视化状态生成 7 段表达式(默认自动日周互斥)。

import { generateCron, createDefaultCronState } from '@cron-zen/core';

const res = generateCron(createDefaultCronState());
// { success: true, expression: '* * * * * ? *' }

getNextRuns / getPrevRuns

估算最近 N 次触发(未来)与已触发(新→旧)。已覆盖日 L / LW / nW、周 nL / n#m / 裸 L,以及倒序区间回绕。

import { getNextRuns, getPrevRuns, parseCron, formatRunTime } from '@cron-zen/core';

const { state } = parseCron('0 0 9 ? * 6#3');
const from = new Date('2026-01-01');
console.log(getNextRuns(state!, 3, from).map(formatRunTime));
console.log(getPrevRuns(state!, 3, from).map(formatRunTime));

getCronPresets / listCronPresetDefs

常用模板(每分钟 / 工作日 9 点 / 月末…);getCronPresets(locale) 带中英标签。

其他导出

  • parseField / stringifyField — 单字段解析 / 序列化
  • escapeCronPercent / unescapeCronPercent — % 转义
  • enforceDayWeekMutex / assertDayWeekMutex — 日周互斥
  • describeCron / formatRunTime / getUiMessages — 自然语言与 UI 文案
  • lastDayOfMonth / lastWeekdayOfMonth / nearestWeekdayOfMonth — 日日历
  • lastQuartzWeekdayOfMonth / nthQuartzWeekdayOfMonth — 周日历(nL / #)
  • QUARTZ_MONTH_LABELS / quartzMonthLabel — 月标签
  • getCronTabs — UI Tab 元数据
  • createDefaultCronState — 默认 UI 状态
  • generateCronOrThrow — 生成失败时抛错

Build

pnpm --filter @cron-zen/core build

产物:dist/(ESM / CJS + .d.ts),仅 dist 会随 npm 包发布。

License

MIT

版本与发布记录

@cron-zen/core 共发布 10 个版本,首次发布于 2026/10/23;过去 12 个月发布了 10 个版本。

版本发布日期距今
0.2.5latest2026/11/0211 天前
0.2.42026/10/2321 天前
0.2.22026/10/2321 天前
0.2.02026/10/2321 天前
0.1.42026/10/2321 天前
0.1.32026/10/2321 天前

关于 @cron-zen/core 的常见问题

@cron-zen/core 是什么?

Framework-agnostic Quartz/cron.ren Cron parser, generator, validator, describe, and next-run estimates

如何安装 @cron-zen/core?

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

@cron-zen/core 支持 TypeScript 吗?

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

@cron-zen/core 支持 ESM 还是 CommonJS?

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

@cron-zen/core 可以商用吗?

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

@cron-zen/core 的下载量有多少?

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

@cron-zen/core 还在维护吗?

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