# node-cron **Repository Path**: philuo/node-cron ## Basic Information - **Project Name**: node-cron - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-14 - **Last Updated**: 2025-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Node Cron ## 下载并使用 ```bash npm install @yuo/node-cron ``` ## Cron 语法 ### Cron允许的字段 ``` # ┌────────────── 秒 (可选) # │ ┌──────────── 分 # │ │ ┌────────── 时 # │ │ │ ┌──────── 日 # │ │ │ │ ┌────── 月 # │ │ │ │ │ ┌──── 周 (0-7), 0和7表示周日 # │ │ │ │ │ │ # │ │ │ │ │ │ # * * * * * * ``` ### Cron各字段范围值 | field | value | |--------------|---------------------| | 秒 | 0-59 | | 分 | 0-59 | | 时 | 0-23 | | 日 | 1-31 | | 月 | 1-12 | | 周 | 0-7 (周日 0, 7 ) | #### 使用 ### 使用时间范围 ```ts import { schedule } from '@yuo/node-cron'; cron.schedule('1,2,4,5 * * * *', () => { console.log('在每小时中的第 1、2、4、5 的分钟整点各触发一次'); }); cron.schedule('1-5 * * * *', () => { console.log('在每小时中的第1~5分钟中, 每分钟触发一次'); }); ``` ### 使用时间步进值 ```ts import { schedule } from '@yuo/node-cron'; schedule('*/2 * * * *', () => { console.log('间隔2分钟执行一次'); }); schedule('10/2 * * * * *', () => { console.log('从每分钟的第10秒开始, 间隔2秒钟执行一次'); }); ``` ## 启动任务 ```ts import { schedule } from '@yuo/node-cron'; // 默认scheduled: true, 是直接开启的, 不需要手动start const task1 = schedule('* * * * *', (flag: string) => { // doSomething if (flag === 'manual') { // 检测到手动触发后, 注销事务 task1.stop(); } }, { scheduled: false }); task1.start(); task1.now('manual'); // fork子进程启动, 相对于根目录(node启动时的目录) const task2 = schedule('* * * * *', './schedule-1.ts'); // ./schedule-1.ts, 文件形式的事务无入参 import { yourNBUtil } from 'util'; export default () => { let shit = yourNBUtil.doSomething(); }; ``` ## 暂停任务 ```ts import { schedule } from '@yuo/node-cron'; const task = schedule('* * * * *', () => { console.log('will execute every minute until stopped'); }); task.stop(); ``` ## 验证Cron规则 ```ts import { validate } from '@yuo/node-cron'; const res1 = validate('59 * * * *'); // valid const res2 = validate('60 * * * *'); // invalid 0~59 ```