# node-reel-cron

> Human friendly cron for Node JS

Latest version **2.0.5** (published 2022-05-15) · MIT license · 0 weekly downloads

## Install

```sh
npm install node-reel-cron
pnpm add node-reel-cron
yarn add node-reel-cron
bun add node-reel-cron
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.5 |
| Published | 2022-05-15 |
| First published | 2022-05-15 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 12.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | shakee93 |
| Maintainers | charles-zh |
| Keywords | node, cron, schedule, timer, automation, task, job, scheduler |

## Links

- npm: https://www.npmjs.com/package/node-reel-cron
- Repository: https://github.com/charles-zh/node-reel-ext
- Homepage: https://github.com/charles-zh/node-reel-ext#readme
- Issues: https://github.com/charles-zh/node-reel-ext/issues
- npm.io page: https://npm.io/package/node-reel-cron

## Dependencies (1)

- [node-cron](https://npm.io/package/node-cron.md) ^3.0.0

## Alternatives

- [@expo/fingerprint](https://npm.io/package/@expo/fingerprint.md) — 6.2M weekly downloads
- [@azure/monitor-opentelemetry-exporter](https://npm.io/package/@azure/monitor-opentelemetry-exporter.md) — 850.0K weekly downloads
- [@azure/monitor-opentelemetry](https://npm.io/package/@azure/monitor-opentelemetry.md) — 624.0K weekly downloads
- [@posthog/ai](https://npm.io/package/@posthog/ai.md) — 423.3K weekly downloads
- [fakefilter](https://npm.io/package/fakefilter.md) — 63.9K weekly downloads

## Recent versions

- 2.0.5 (latest) — 2022-05-15
- 2.0.4 — 2022-05-15

## README

<p align="center">
<img src="https://user-images.githubusercontent.com/14835725/43674196-6f593114-97ed-11e8-80c1-d054391062d6.png" alt="node-reel-cron logo">
</p>

**`node-reel-cron`** is a heavily inspired by laravel task scheduler syntax thanks to [@taylorotwell](https://github.com/taylorotwell) and uses [`node-cron`](https://github.com/merencia/node-cron) by [merencia](https://github.com/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:
```javascript
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
```shell
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](https://laravel.com/docs/5.6/scheduling)

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

```javascript
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:

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

---
_Source: https://npm.io/package/node-reel-cron · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
