node-reel
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.
const reel = require('node-reel')
reel().call(() => {
// say hello on mondays
}).weekly().mondays().at('13:00').run()
reel().command('npm run clean_trash').everyThirtyMinutes().run()
using the npm or yarn
npm i node-reel --save
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
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. |
node-reel
will use node-cron
as default adapter. but you can pass your own adapter and return your own object.
const Reel = require('node-reel').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();
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()
issues, pull request and feedback are welcome ! Happy Scheduling !!