Schedule Jobs within Nuxt 3
npm install nuxt-scheduler[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![License][license-src]][license-href]
[![Nuxt][nuxt-src]][nuxt-href]
Schedule Jobs within Nuxt 3.
> This is a Server-Side task scheduler for Nuxt which depends on node-cron.
- 👩🏼🌾 human readable
- 😌 easy to use
1. Add nuxt-scheduler dependency to your project
``bashUsing pnpm
pnpm add -D nuxt-scheduler
2. Add
nuxt-scheduler to the modules section of nuxt.config.ts`js
export default defineNuxtConfig({
modules: [
'nuxt-scheduler'
]
})
`That's it! You can now use Nuxt Scheduler in your Nuxt app ✨
Example Usage
Create as many scheduler you like as plugins.
> ~/server/plugins/smileScheduler.ts`js
import { useScheduler } from "#scheduler"
import say from "~~/server/app/services/say";export default defineNitroPlugin(() => {
startScheduler()
})
function startScheduler() {
const scheduler = useScheduler();
scheduler.run(() => {
say("cool beans! I run once a second! 😀");
}).everySecond();
// create as many tasks as you want here
}
`Each scheduler can have multiple tasks
> ~/server/plugins/rocketScheduler.ts
`js
import { useScheduler } from "#scheduler"
import say from "~~/server/app/services/say";
export default defineNitroPlugin(() => {
startScheduler()
})
function startScheduler() {
const scheduler = useScheduler();
scheduler.run(() => {
say("I run every 3 seconds, 🚀🚀🚀");
}).everySeconds(3);
scheduler.run(() => {
say("I run every 5 seconds, 🚀🚀🚀🚀🚀");
}).everySeconds(5);
// create as many tasks as you want here
}
`> use Human Readable intervals
`
everySecond
everySeconds
everyMinute
everyMinutes
everyTwoMinutes
everyThreeMinutes
everyFourMinutes
everyFiveMinutes
everyTenMinutes
everyFifteenMinutes
everyThirtyMinutes
hourly
hourlyAt
everyOddHour
everyHours
everyTwoHours
everyThreeHours
everyFourHours
everySixHours
daily
dailyAt
everyDays
weekly
quarterly
yearly
`> or set using cron method
>
cron() method accepts 'optional' string parameter called timezone where you have to pass a valid string values eg. Asia/Shanghai, Asia/Kolkata, America/Sao_Paulo refer IANA time zone database for same.
`js
import { useScheduler } from "#scheduler"
import say from "~~/server/app/services/say";export default defineNitroPlugin(() => {
startScheduler()
})
function startScheduler() {
const scheduler = useScheduler();
scheduler.run(() => {
say("I run once a second! 🚀");
}).cron(' *');
scheduler.run(() => {
say("Running a job at 01:00 PM at America/Sao_Paulo timezone 🌍");
}).cron('0 13 *', 'America/Sao_Paulo');
// create as many tasks as you want here
}
`Development
`bash
Install dependencies
npm installGenerate type stubs
npm run dev:prepareDevelop with the playground
npm run devBuild the playground
npm run dev:buildRun ESLint
npm run lintRun Vitest
npm run test
npm run test:watchRelease new version
npm run release
``Special thanks to Atinux for making suggestions that have made this module better 🚀
[npm-version-src]: https://img.shields.io/npm/v/nuxt-scheduler/latest.svg?style=flat&colorA=18181B&colorB=28CF8D
[npm-version-href]: https://npmjs.com/package/nuxt-scheduler
[npm-downloads-src]: https://img.shields.io/npm/dm/nuxt-scheduler.svg?style=flat&colorA=18181B&colorB=28CF8D
[npm-downloads-href]: https://npmjs.com/package/nuxt-scheduler
[license-src]: https://img.shields.io/npm/l/nuxt-scheduler.svg?style=flat&colorA=18181B&colorB=28CF8D
[license-href]: https://npmjs.com/package/nuxt-scheduler
[nuxt-src]: https://img.shields.io/badge/Nuxt-18181B?logo=nuxt.js
[nuxt-href]: https://nuxt.com