2.0.5 • Public • Published

node-reel-cron logo

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.


This project forked from

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 ? 😉

const reel = require('node-reel-cron')

reel().call(() => {
	// say hello on mondays

reel().command('npm run clean_trash').everyThirtyMinutes().run()


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


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


issues, pull request and feedback are welcome ! Happy Scheduling !!


npm i node-reel-cron

DownloadsWeekly Downloads






Unpacked Size

13.2 kB

Total Files


Last publish


  • charles-zh