Repolode
Hexagon

Hexagon/croner

零依赖的 JavaScript/TypeScript cron 库,可在 Node、Deno、Bun 和浏览器中定时触发函数或计算后续执行时间。

Star
2,611
Fork
75
未关闭 Issue
7
最近提交
4天前

这是什么?

Croner 让 JavaScript 和 TypeScript 代码可以按 cron 表达式定时执行函数,也可以计算后续的执行时间列表,或判断某个日期是否符合表达式。它在内存中运行,无需数据库或配置文件,支持 Node.js、Deno、Bun 和浏览器。

除标准 cron 语法外,还支持可选的秒和年份字段,以及 L(月末或最后一个工作日)、W(最近的工作日)、#(某月第 n 个星期几)和 +(日与星期之间的 AND 逻辑)。任务可以指定时区,也可以暂停、恢复或停止,并可设置最大执行次数或起止时间。

运行时提供过载保护:上一次异步任务未完成时阻止新的触发;同时支持错误捕获配置,并可将定时器 unref,使 Node 或 Deno 进程能够正常退出。项目自带 TypeScript 类型定义。

核心功能

  • 01使用 cron 表达式定时执行函数,支持可选的秒和年份字段。
  • 02列出后续及之前的执行时间,并判断日期是否匹配表达式。
  • 03支持时区设置,以及 L、W、#、+ 修饰符和 Quartz 风格的星期编号。
  • 04内置异步任务的过载保护,并可配置错误处理。
  • 05零依赖,自带 TypeScript 类型定义。

适用场景

  • 在 Node.js 或 Bun 服务中运行周期性后台任务,无需额外的调度服务。
  • 计算某个计划的后续若干执行时间,并在界面中展示。
  • 为不同地区的用户在指定时区中安排任务。
  • 在 Deno 或浏览器环境中运行类 cron 的定时器。

快速上手

  1. 1

    从 npm 安装 croner

    npm install croner
  2. 2

    在项目中导入 Cron 类

    import { Cron } from "croner";
  3. 3

    使用 cron 表达式调度函数

    new Cron('*/5 * * * * *', () => { console.log('This will run every fifth second'); });

使用前须知

  • 由于所有内容都在内存中运行,定时器只在宿主进程存活时工作。

标签

常见问题

croner 是什么?
零依赖的 JavaScript/TypeScript cron 库,可在 Node、Deno、Bun 和浏览器中定时触发函数或计算后续执行时间。 Croner 让 JavaScript 和 TypeScript 代码可以按 cron 表达式定时执行函数,也可以计算后续的执行时间列表,或判断某个日期是否符合表达式。它在内存中运行,无需数据库或配置文件,支持 Node.js、Deno、Bun 和浏览器。
croner 可以免费使用吗?用的什么许可证?
croner 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
croner 还在维护吗?
活跃维护中。croner 最近一次提交是在 2026年10月18日。
croner 适合用来做什么?
在 Node.js 或 Bun 服务中运行周期性后台任务,无需额外的调度服务。 计算某个计划的后续若干执行时间,并在界面中展示。 为不同地区的用户在指定时区中安排任务。 在 Deno 或浏览器环境中运行类 cron 的定时器。
croner 怎么安装和运行?
从 npm 安装 croner: npm install croner 在项目中导入 Cron 类: import { Cron } from "croner"; 使用 cron 表达式调度函数: new Cron('*/5 * * * * *', () => { console.log('This will run every fifth second'); });
在哪里获取 croner?
源代码和安装说明在 GitHub 上:https://github.com/Hexagon/croner

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目