node-reel-cron
v2.0.5
Published
Human friendly cron for Node JS
Downloads
8
Maintainers
Readme
node-reel-cron
is a heavily inspired by laravel task scheduler syntax thanks to @taylorotwell and uses node-cron
by merencia as the default cron driver to run cron tasks.
Notice:
This project forked from https://github.com/shakee93/node-reel
v2.0.5 Change log:
- update "node-cron" to: "^3.0.0"
- fix a warning: (node:23300) [DEP0128] DeprecationWarning: Invalid 'main' field in '\node_modules\node-reel-cron\package.json' of 'src/index.js'. Please either fix that or report it to the module author
- add some test for main functions
- adjust options when create the new object.
- validate cron expressions when schedule job.
- update documents
why node-reel-cron ? :wink:
const reel = require('node-reel-cron')
reel().call(() => {
// say hello on mondays
}).weekly().mondays().at('13:00').run()
reel().command('npm run clean_trash').everyThirtyMinutes().run()
Install
using the npm or yarn
npm i node-reel-cron --save
Schedule Frequencies
Method | Description
------------- | -------------
.cron('* * * * *');
| Run the task on a custom Cron schedule
.everyMinute();
| Run the task every minute
.everyFiveMinutes();
| Run the task every five minutes
.everyTenMinutes();
| Run the task every ten minutes
.everyFifteenMinutes();
| Run the task every fifteen minutes
.everyThirtyMinutes();
| Run the task every thirty minutes
.everyFortyFiveMinutes();
| Run the task every forty five minutes
.hourly();
| Run the task every hour
.hourlyAt(17);
| Run the task every hour at 17 mins past the hour
.daily();
| Run the task every day at midnight
.dailyAt('13:00');
| Run the task every day at 13:00
.twiceDaily(1, 13);
| Run the task daily at 1:00 & 13:00
.weekly();
| Run the task every week
.weeklyOn(1, '8:00');
| Run the task every week on Tuesday at 8:00
.monthly();
| Run the task every month
.monthlyOn(4, '15:00');
| Run the task every month on the 4th at 15:00
.quarterly();
| Run the task every quarter
.yearly();
| Run the task every year
.weekdays();
| Limit the task to weekdays
.sundays();
| Limit the task to Sunday
.mondays();
| Limit the task to Monday
.tuesdays();
| Limit the task to Tuesday
.wednesdays();
| Limit the task to Wednesday
.thursdays();
| Limit the task to Thursday
.fridays();
| Limit the task to Friday
.saturdays();
| Limit the task to Saturday
link to laravel task scheduler doc : task scheduler
Methods
Method | Description
------------- | -------------
.call(function)
| pass a callback which will triggered
.command(string/array);
| pass cli commands as string or array of strings
.run();
| call this at the end of the chain to initiate.
Adapters
node-reel-cron
will use node-cron
as default adapter. but you can pass your own adapter and return your own object.
const Reel = require('node-reel-cron').Reel;
const reel = new Reel({
adapter : (object) => {
// use your cron library or custom cron logic
// below are the available properties
let expression = object.expression;
let callback = object.callback;
let timezone = object.timezone;
return mycron.schedule(expression, callback);
}
})
// use it as follows
reel.command('npm run foo').hourly().run();
Monitor the Scheduled Executions
If you want to keep an eye on every execution and make sure they succeed or fail, or even if they execute at all, or make a report of each, you can:
reel().command('npm run clean_trash', (error) => {
if (error) {
// Handle the error
} else {
// Report the success
}
}).everyThirtyMinutes().run()
Notes
issues, pull request and feedback are welcome ! Happy Scheduling !!