Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shakee93/node-reel
Human friendly cron for Node JS :cupid:
https://github.com/shakee93/node-reel
cron laravel node node-cron nodejs
Last synced: 8 days ago
JSON representation
Human friendly cron for Node JS :cupid:
- Host: GitHub
- URL: https://github.com/shakee93/node-reel
- Owner: shakee93
- License: mit
- Created: 2018-08-03T17:37:29.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-06-22T12:54:46.000Z (over 4 years ago)
- Last Synced: 2024-03-15T08:49:50.552Z (8 months ago)
- Topics: cron, laravel, node, node-cron, nodejs
- Language: JavaScript
- Homepage:
- Size: 16.6 KB
- Stars: 47
- Watchers: 5
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
**`node-reel`** 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.
### why node-reel ? :wink:
```javascript
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
```shell
npm i node-reel --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 Saturdaylink 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` 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').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 !!