@egomobile/jobs
TypeScript icon, indicating that this package has built-in type declarations

0.8.0 • Public • Published

npm last build PRs Welcome

@egomobile/jobs

Easy to use job scheduler helpers, which are compatible with Node.js 12 or later.

Install

Execute the following command from your project folder, where your package.json file is stored:

npm install --save @egomobile/jobs

Usage

Quick example

First make a sub directory, lets say /jobs, where your job script files will be stored.

The create a file, called myJob.ts, and start with the following skeleton:

import { IJobConfig, IJobExecutionContext, JobAction } from "@egomobile/jobs";

// the action that is executed on every tick
const onTick: JobAction = async ({ file, time }: IJobExecutionContext) => {
  console.log("Job in file", file, "is executed on", time);
};

const config: IJobConfig = {
  onTick,

  // run the job directly, after it has been initialized
  runOnInit: true,
  // s. https://github.com/node-schedule/node-schedule#cron-style-scheduling
  time: "42 * * * * *",
};

export default config;

In the entry point of your application, lets say /index.ts, use one of the functions loadAndStartJobs() or loadAndStartJobsSync() to load, init and start all jobs in the directory:

import path from "path";
import { loadAndStartJobs } from "@egomobile/jobs";

async function main() {
  const jobs = await loadAndStartJobs({
    // all script files are stored in
    // /jobs sub folder
    dir: path.join(__dirname, "jobs"),

    // only use TypeScript files
    filter: ".ts",

    // custom timezone
    timezone: "Europe/Berlin",
  });

  console.log(
    String(jobs.length),
    "jobs have been loaded, initialized and started",
  );
}

main().catch(console.error);

Credits

The module makes use of:

Documentation

The API documentation can be found here.

Package Sidebar

Install

npm i @egomobile/jobs

Weekly Downloads

0

Version

0.8.0

License

LGPL-3.0

Unpacked Size

37.6 kB

Total Files

18

Last publish

Collaborators

  • ekmobile
  • egodux
  • mkloubertego
  • mkloubert
  • ekegodigital