2.0.2 • Published 2 years ago

node-reel-ext v2.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

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.

Notice:

This project forked from https://github.com/shakee93/node-reel

v2.0.1 Change log:

  • update "node-cron" to: "^3.0.0"
  • fix a warning: (node:23300) DEP0128 DeprecationWarning: Invalid 'main' field in '\node_modules\node-reel\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.

why node-reel ? :wink:

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()

Install

using the npm or yarn

npm i node-reel --save

Schedule Frequencies

MethodDescription
.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

MethodDescription
.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 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();

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 !!