Package Exports
- croner
- croner/minified
Readme
Croner
Pure JavaScript minimal isomorphic cron parser and scheduler. Or simply speaking - setInterval on steroids.
Documented with JSDoc for intellisense, and include TypeScript typings.
<script src="https://cdn.jsdelivr.net/npm/croner@3/dist/croner.min.js"></script>
// Run a function each second
Cron('* * * * * *', function () {
console.log('This will run every second');
});
Installation
Manual
- Download latest zipball
- Unpack
- Grab
croner.min.js
(UMD) orcroner.min.mjs
(ES-module) from the dist/ folder
Node.js
npm install croner --save
// ESM Import
import Cron from "croner";
// ... or
// CommonJS Require
const Cron = require("croner");
CDN
To use as a UMD-module (stand alone, RequireJS etc.)
<script src="https://cdn.jsdelivr.net/npm/croner@3/dist/croner.min.js"></script>
To use as a ES-module
<script type="module">
import Cron from "https://cdn.jsdelivr.net/npm/croner@3/dist/croner.min.mjs";
// ... see usage section ...
</script>
... or a ES-module with import-map
<script type="importmap">
{
"imports": {
"croner": "https://cdn.jsdelivr.net/npm/croner@3/dist/croner.min.mjs"
}
}
</script>
<script type="module">
import Cron from 'croner';
// ... see usage section ...
</script>
Examples
Minimalist scheduling
// Run a function each second
Cron('* * * * * *', function () {
console.log('This will run every second');
});
Minimalist scheduling with stepping
// Run a function every fifth second
Cron('*/5 * * * * *', function () {
console.log('This will run every fifth second');
});
Minimalist scheduling with range
// Run a function the first five seconds of a minute
Cron('0-4 * * * * *', function () {
console.log('This will run the first five seconds every minute');
});
Minimalist scheduling with options
// Run a function each second, limit to five runs
Cron('* * * * * *', { maxRuns: 5 }, function () {
console.log('This will run each second, but only five times.');
});
Minimalist scheduling with job controls
// Run a function each second, get reference to job
var job = Cron('* * * * * *', function () {
console.log('This will run each second.');
});
// Pause job
job.pause();
// Resume job
job.resume();
// Stop job
job.stop();
Basic scheduling
// Run every minute
var scheduler = Cron('0 * * * * *');
scheduler.schedule(function() {
console.log('This will run every minute');
});
Scheduling with options
// Run every minute
var scheduler = Cron('0 * * * * *');
// Schedule with options (all options are optional)
scheduler.schedule({ maxRuns: 5 }, function() {
console.log('This will run every minute.');
});
Scheduling with job controls
// Run every minute
var scheduler = Cron('0 * * * * *');
// Schedule with options (all options are optional)
var job = scheduler.schedule({ maxRuns: 5 }, function() {
console.log('This will run every minute.');
});
// Pause job
job.pause();
// Resume job
job.resume();
// Stop job
job.stop();
Full API
var o = Cron( <string pattern> [, <object options>] [, <function callback> ] );
// If Cron is initialized without a scheduled function, cron itself is returned
// and the following member functions is available.
o.next( [ <date previous> ] );
o.msToNext();
o.previous();
// If Cron is initialized _with_ a scheduled function, the job is retured instead.
// Otherwise you get a reference to the job when scheduling a new job.
var job = o.schedule( [ { startAt: <date>, stopAt: <date>, maxRuns: <integer> } ,] callback);
// These self-explanatory functions is available to control the job
job.pause();
job.resume();
job.stop();
Pattern
┌──────────────── (optional) second (0 - 59)
│ ┌────────────── minute (0 - 59)
│ │ ┌──────────── hour (0 - 23)
│ │ │ ┌────────── day of month (1 - 31)
│ │ │ │ ┌──────── month (1 - 12)
│ │ │ │ │ ┌────── day of week (0 - 6)
│ │ │ │ │ │ (0 to 6 are Sunday to Saturday; 7 is Sunday, the same as 0)
│ │ │ │ │ │
* * * * * *
License
MIT