
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
@ghalex/node-cron
Advanced tools
The node-cron module is tiny task scheduler in pure JavaScript for node.js based on GNU crontab. This module allows you to schedule task in node.js using full crontab syntax.
Need a job scheduler with support for worker threads and cron syntax? Try out the Bree job scheduler!
Install node-cron using npm:
npm install --save node-cron
Import node-cron and schedule a task:
const cron = require('node-cron');
cron.schedule('* * * * *', () => {
console.log('running a task every minute');
});
import cron from 'node-cron';
cron.schedule('* * * * *', () => {
console.log('running a task every minute');
});
This is a quick reference to cron syntax and also shows the options supported by node-cron.
# ┌────────────── second (optional)
# │ ┌──────────── minute
# │ │ ┌────────── hour
# │ │ │ ┌──────── day of month
# │ │ │ │ ┌────── month
# │ │ │ │ │ ┌──── day of week
# │ │ │ │ │ │
# │ │ │ │ │ │
# * * * * * *
| field | value |
|---|---|
| second | 0-59 |
| minute | 0-59 |
| hour | 0-23 |
| day of month | 1-31 |
| month | 1-12 (or names) |
| day of week | 0-7 (or names, 0 or 7 are sunday) |
You may use multiples values separated by comma:
import cron from 'node-cron';
cron.schedule('1,2,4,5 * * * *', () => {
console.log('running every minute 1, 2, 4 and 5');
});
You may also define a range of values:
import cron from 'node-cron';
cron.schedule('1-5 * * * *', () => {
console.log('running every minute to 1 from 5');
});
Step values can be used in conjunction with ranges, following a range with '/' and a number. e.g: 1-10/2 that is the same as 2,4,6,8,10. Steps are also permitted after an asterisk, so if you want to say “every two minutes”, just use */2.
import cron from 'node-cron';
cron.schedule('*/2 * * * *', () => {
console.log('running a task every two minutes');
});
For month and week day you also may use names or short names. e.g:
import cron from 'node-cron';
cron.schedule('* * * January,September Sunday', () => {
console.log('running on Sundays of January and September');
});
Or with short names:
import cron from 'node-cron';
cron.schedule('* * * Jan,Sep Sun', () => {
console.log('running on Sundays of January and September');
});
Schedules given task to be executed whenever the cron expression ticks.
Arguments:
string: Cron expressionFunction: Task to be executedObject: Optional configuration for job scheduling.boolean to set if the created task is scheduled. Default true;boolean to set if the created task should be able to recover missed executions. Default false;Asia/Shanghai, Asia/Kolkata, America/Sao_Paulo.Example:
import cron from 'node-cron';
cron.schedule('0 1 * * *', () => {
console.log('Running a job at 01:00 at America/Sao_Paulo timezone');
}, {
scheduled: true,
timezone: "America/Sao_Paulo"
});
Starts the scheduled task.
import cron from 'node-cron';
const task = cron.schedule('* * * * *', () => {
console.log('stopped task');
}, {
scheduled: false
});
task.start();
The task won't be executed unless re-started.
import cron from 'node-cron';
const task = cron.schedule('* * * * *', () => {
console.log('will execute every minute until stopped');
});
task.stop();
Validate that the given string is a valid cron expression.
import cron from 'node-cron';
const valid = cron.validate('59 * * * *');
const invalid = cron.validate('60 * * * *');
You can name your tasks to make it easier to identify them in the logs.
import cron from 'node-cron';
const task = cron.schedule('* * * * *', () => {
console.log('will execute every minute until stopped');
}, {
name: 'my-task'
});
You can list all the tasks that are currently running.
import cron from 'node-cron';
const tasks = cron.getTasks();
for (let [key, value] of tasks.entries()) {
console.log("key", key)
console.log("value", value)
}
value is an object with the following properties:
Feel free to submit issues and enhancement requests here.
In general, we follow the "fork-and-pull" Git workflow.
NOTE: Be sure to merge the latest from "upstream" before making a pull request!
Please do not contribute code you did not write yourself, unless you are certain you have the legal ability to do so. Also ensure all contributed code can be distributed under the ISC License.
This project exists thanks to all the people who contribute.
Thank you to all our backers! 🙏 [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
node-cron is under ISC License.
FAQs
A simple cron-like task scheduler for Node.js
The npm package @ghalex/node-cron receives a total of 14 weekly downloads. As such, @ghalex/node-cron popularity was classified as not popular.
We found that @ghalex/node-cron demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.