Focused, well maintained, cron parser/scheduler
npm install @xen-orchestra/cron> Focused, well maintained, cron parser/scheduler
Installation of the npm package:
```
> npm install --save @xen-orchestra/cron
``
Each entry can be:
- a single value
- a range (0-23 or */2)1,8-12
- a list of values/ranges ()
A wildcard (*) can be used as a shortcut for the whole rangefirst-last
().
Step values can be used in conjunctions with ranges. For instance,
1-7/2 is the same as 1,3,5,7.
| Field | Allowed values |
|------------------|----------------|
| minute | 0-59 |
| hour | 0-23 |
| day of the month | 1-31 or 3-letter names (jan, feb, …) |mon
| month | 0-11 |
| day of week | 0-7 (0 and 7 both mean Sunday) or 3-letter names (, tue, …) |
> Note: the month range is 0-11 to be compatible with
> cron, it does not appear to
> be very standard though.
createSchedule(pattern: string, zone: string = 'utc'): Schedule
> Create a new schedule.
- pattern: the pattern to use, see the syntaxzone
- : the timezone to use, use 'local' for the local timezone
`js
import { createSchedule } from '@xen-orchestra/cron'
const schedule = createSchedule('0 0 sun', 'America/New_York')
`
Schedule#createJob(fn: Function): Job
> Create a new job from this schedule.
- fn: function to execute, if it returns a promise, it will be
awaited before scheduling the next run.
`js`
const job = schedule.createJob(() => {
console.log(new Date())
})
Schedule#next(n: number): Array
> Returns the next dates matching this schedule.
- n: number of dates to return
`js`
schedule.next(2)
// [ 2018-02-11T05:00:00.000Z, 2018-02-18T05:00:00.000Z ]
Schedule#startJob(fn: Function): () => void
> Start a new job from this schedule and return a function to stop it.
- fn: function to execute, if it returns a promise, it will be
awaited before scheduling the next run.
`js`
const stopJob = schedule.startJob(() => {
console.log(new Date())
})
stopJob()
Job#start(): void
> Start this job.
`js`
job.start()
Job#stop(): void
> Stop this job.
`js`
job.stop()
`Install dependencies
> yarn
Contributions are very welcomed, either on the documentation or on
the code.
You may:
- report any issue
you've encountered;
- fork and create a pull request.
ISC © Vates SAS