UNPKG

vendure-cron-plugin

Version:

Adds a simple CRON functionality to Vendure

98 lines (74 loc) 2.87 kB
# Cron Plugin for Vendure Adds a simple CRON functionality to Vendure. This can be used to run functions regularly, like checking shipment apis, raise prices every month, export data etc. ## Overview The Vendure Cron Plugin provides the ability to run specified tasks at specific times, using cron-style scheduling. **This plugin works by firing events at predefined intervals, which you can subscribe to.** To use the plugin, the following steps should be taken: 1. Install the plugin with a package manager. 2. Add the plugin to the Vendure configuration file. 3. Define a taskId for your CronEvent, which you can use to identify the CronEvent. 4. Write a plugin which listens for the CronEvent and checks if the taskId matches. ## Usage ### Configuration ``` export const config: VendureConfig = { // ... plugins: [ CronPlugin.init({ cron: [ { schedule: '0 0 * * *', taskId: 'midnightBackup' }, { schedule: '*/5 * * * *', task: () => { console.log('Running task every 5 minutes'); } } ], logEvents: true //Turn on the logging whenever an event is fired (for debugging) }), ] } ``` For more information on the scheduling, visit the [node-cron](https://github.com/kelektiv/node-cron) docs. ### Your Plugin ``` import { OnApplicationBootstrap } from '@nestjs/common'; import { PluginCommonModule, VendurePlugin, EventBus } from '@vendure/core'; import { CronEvent } from 'vendure-cron-plugin'; @VendurePlugin({ imports: [PluginCommonModule], }) export class YourPlugin implements OnApplicationBootstrap { constructor(private eventBus: EventBus) {} async onApplicationBootstrap() { this.eventBus .ofType(CronEvent) .pipe(filter(event => event.taskId === "task1")) .subscribe((event) => { console.log(`Cron Event "${event.taskId}" fired`); const ctx = event.ctx; // Perform any tasks here in response to the fired event }); } } ``` ## Development Server A development server is configured in the `dev-server` folder, using [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/) to spin up a Postgres database, as well as a server and worker. This is used to test the plugin during development. To start the server, run: ```bash yarn dev:run ``` To populate or reset the database, run the following command: ```bash yarn dev:populate ``` To restart the server (only) after a change, use the following command: ```bash yarn dev:restart ``` Note: The Docker containers must be rebuilt when updating dependencies. Use the following command: ```bash yarn dev:rebuild ```