npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-reel-cron

v2.0.5

Published

Human friendly cron for Node JS

Downloads

10

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