https://github.com/polyseam/cronx
CLI and typescript library for cross-platform cron
https://github.com/polyseam/cronx
cron cross-platform deno lightweight utility
Last synced: 11 months ago
JSON representation
CLI and typescript library for cross-platform cron
- Host: GitHub
- URL: https://github.com/polyseam/cronx
- Owner: polyseam
- License: apache-2.0
- Created: 2025-03-07T18:11:15.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-02T21:44:40.000Z (about 1 year ago)
- Last Synced: 2025-06-03T11:44:44.318Z (about 1 year ago)
- Topics: cron, cross-platform, deno, lightweight, utility
- Language: TypeScript
- Homepage:
- Size: 127 MB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# @polyseam/cronx
**chronix or /ˈkrɒnɪks/**
a typescript library and cli for using cron on any platform powered by
[Deno.cron](https://docs.deno.com/examples/cron/)
### cli installation
Shell (Mac, Linux):
```bash
curl -fsSL https://raw.githubusercontent.com/polyseam/cronx/main/install.sh | sh
```
PowerShell (Windows):
```powershell
irm https://raw.githubusercontent.com/polyseam/cronx/main/install.ps1 | iex
```
## usage
### cli
```bash
cronx 'echo hello world from the future' -n "every tuesday at 3pm"
# ? Do you want to schedule 'echo hello world from the future' to run 'At 3:00 PM on Tuesday'? (Y/n) ›
# ❯ 0 15 * * 2
# backup file every friday at 8pm
cronx 'cp /path/to/file.txt "/path/to/backup/$(date +%G-W%V)"' -t "0 20 * * 5" -l "file-backup"
```
### library
The [@polyseam/cronx](https://jsr.io/@polyseam/cronx) module provides a simple
interface for scheduling cron jobs with command-line executables or async
functions.
```typescript
import {
CronTabExpression,
scheduleCronWithExecutable,
scheduleCronWithFunction,
} from "@polyseam/cronx";
// Schedule a job to run at 9 AM Eastern Time (UTC-5)
scheduleCronWithExecutable('echo "Good morning East Coast!"', {
cronTabExpression: "0 9 * * *", // crontab literal or new CronTabExpression("0 9 * * *")
label: "east-coast-morning",
offset: -5, // Eastern Time (UTC-5)
});
const mondayAt9am = CronTabExpression.fromNaturalLanguageSchedule(
"every monday at 9am",
);
// Schedule a job to run at 9 AM Pacific Time (UTC-8)
scheduleCronWithExecutable('echo "Happy Monday morning West Coast!"', {
cronTabExpression: mondayAt9am,
label: "west-coast-morning",
offset: -8, // Pacific Time (UTC-8)
});
const atNoon = CronTabExpression.fromNaturalLanguageSchedule(
"every day at noon",
);
// Use local machine timezone (default behavior)
scheduleCronWithFunction(async () => {
console.log("Running in local timezone");
}, {
cronTabExpression: atNoon, // 12:00 PM every day
label: "local-noon",
// offset parameter omitted - will use local machine's timezone
});
scheduleCronWithFunction(async () => {
const res = await fetch("https://api.example.com");
if (res.ok) {
console.log("service is live!");
} else {
console.log("service is down!");
}
}, {
cronxExpression: new CronTabExpression("* 0,8,16 * * *"), // every 8 hours
label: "uptime",
offset: 0, // UTC time is offset=0
logLevel: "DEBUG", // Optional log level for cronx's internal logging
});
```