vendure-cron-plugin
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

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 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 and Docker 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:

yarn dev:run

To populate or reset the database, run the following command:

yarn dev:populate

To restart the server (only) after a change, use the following command:

yarn dev:restart

Note: The Docker containers must be rebuilt when updating dependencies. Use the following command:

yarn dev:rebuild

/vendure-cron-plugin/

    Package Sidebar

    Install

    npm i vendure-cron-plugin

    Weekly Downloads

    15

    Version

    1.0.5

    License

    MIT

    Unpacked Size

    14.7 kB

    Total Files

    14

    Last publish

    Collaborators

    • koljamartens