Security News
The Risks of Misguided Research in Supply Chain Security
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
node-cron is a task scheduler for Node.js that allows you to schedule jobs (functions) to run at specific times or intervals using cron syntax. It is useful for automating repetitive tasks such as backups, email notifications, and data processing.
Basic Scheduling
This feature allows you to schedule a task to run at specific intervals using cron syntax. In this example, the task runs every minute.
const cron = require('node-cron');
cron.schedule('* * * * *', () => {
console.log('Running a task every minute');
});
Specific Time Scheduling
This feature allows you to schedule a task to run at a specific time. In this example, the task runs every day at midnight.
const cron = require('node-cron');
cron.schedule('0 0 * * *', () => {
console.log('Running a task every day at midnight');
});
Task Stopping
This feature allows you to stop a scheduled task. In this example, the task is scheduled to run every minute but is stopped immediately after being scheduled.
const cron = require('node-cron');
let task = cron.schedule('* * * * *', () => {
console.log('Running a task every minute');
});
task.stop();
Task Starting
This feature allows you to start a scheduled task. In this example, the task is scheduled to run every minute and is started explicitly.
const cron = require('node-cron');
let task = cron.schedule('* * * * *', () => {
console.log('Running a task every minute');
});
task.start();
Task Destruction
This feature allows you to completely destroy a scheduled task, removing it from the scheduler. In this example, the task is scheduled to run every minute but is destroyed immediately after being scheduled.
const cron = require('node-cron');
let task = cron.schedule('* * * * *', () => {
console.log('Running a task every minute');
});
task.destroy();
node-schedule is another task scheduler for Node.js that uses a more flexible syntax compared to cron. It allows for more complex scheduling patterns and supports both cron-like syntax and JavaScript date objects. It is more feature-rich but also more complex to use compared to node-cron.
agenda is a light-weight job scheduling library for Node.js that uses MongoDB for persistence. It is designed for long-running jobs and supports job prioritization, job concurrency, and job locking. It is more suitable for applications that require persistent job storage and more advanced job management features compared to node-cron.
bree is a job scheduler for Node.js that uses worker threads to run jobs in parallel. It supports cron syntax and provides features like graceful shutdown, job retries, and job concurrency. It is more suitable for applications that require parallel job execution and advanced job management features compared to node-cron.
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:
var cron = require('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:
var cron = require('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:
var cron = require('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
.
var cron = require('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:
var cron = require('node-cron');
cron.schedule('* * * January,September Sunday', () => {
console.log('running on Sundays of January and September');
});
Or with short names:
var cron = require('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
;Asia/Shanghai
, Asia/Kolkata
, America/Sao_Paulo
.Example:
var cron = require('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.
var cron = require('node-cron');
var task = cron.schedule('* * * * *', () => {
console.log('stopped task');
}, {
scheduled: false
});
task.start();
The task won't be executed unless re-started.
var cron = require('node-cron');
var task = cron.schedule('* * * * *', () => {
console.log('will execute every minute until stopped');
});
task.stop();
Validate that the given string is a valid cron expression.
var cron = require('node-cron');
var valid = cron.validate('59 * * * *');
var invalid = cron.validate('60 * * * *');
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
We found that 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
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.