cron は、cron 構文を使用して定義されたスケジュールに従ってジョブ (関数またはコマンド) を実行するための強力なツールです。
データのバックアップ、通知などのタスクに最適です。
スケジュールされたジョブがトリガーされるたびに関数を実行します
child_process
を使用して、JavaScript プロセスの外部でジョブを実行します (システム コマンドなど)。
コールバックのトリガーとして cron 構文の代わりに Date または Luxon DateTime オブジェクトを使用します。
追加のスロットを数秒間使用します (オフのままにすると、デフォルトで 0 になり、Unix の動作と一致します)。
npm で cron をインストールする
特徴
インストール
v2 から v3 への移行
基本的な使い方
クロンパターン
Cron 構文の概要
サポートされている範囲
落とし穴
API
スタンドアロン機能
CronJob クラス
CronTime クラス
コミュニティ
コミュニティに参加する
貢献する
一般的な貢献
バグ/問題の送信
謝辞
ライセンス
バージョン 3 での TypeScript の導入と UNIX cron パターンとの調整により、いくつかの変更が加えられました。
月のインデックス: 0-11
から1-12
に変更されました。したがって、すべての数値の月を 1 ずつ増やす必要があります。
曜日のインデックス作成:日曜日として7
のサポートが追加されました。
CronJob
での調整コンストラクターは、オブジェクトを最初で唯一のパラメーターとして受け入れなくなりました。代わりにCronJob.from(argsObject)
を使用してください。
コールバックは登録された順序で呼び出されるようになりました。
nextDates(count?: number)
は常に配列 (引数が指定されていない場合は空) を返すようになりました。単一の日付の代わりにnextDate()
使用してください。
job()
メソッドを削除し、 new CronJob(...args)
/ CronJob.from(argsObject)
を採用しました。
new CronTime()
を優先してtime()
メソッドを削除しました。
import { CronJob } from 'cron';const job = new CronJob('* * * * * *', // cronTimefunction () {console.log('このメッセージは 1 秒ごとに表示されます');}, // onTicknull , // onCompletetrue, // start'America/Los_Angeles' // timeZone);// ここでは 4 番目のパラメーターが true に設定されているため、job.start() はオプションです。
// 「from」静的メソッドを使用し、パラメーターをオブジェクトとして提供する同等のジョブconst job = CronJob.from({cronTime: '* * * * * *',onTick: function () {console.log('これが表示されますメッセージを毎秒');},start: true,timeZone: 'America/Los_Angeles'});
注:上記の最初の例では、
CronJob()
の 4 番目のパラメーターによってジョブが自動的に開始されます。指定されていないか false に設定されている場合は、job.start()
使用してジョブを明示的に開始する必要があります。
より高度な例については、サンプル ディレクトリを確認してください。
Cron パターンはこのライブラリのバックボーンです。構文をよく理解してください。
- `*` Asterisks: Any value - `1-3,5` Ranges: Ranges and individual values - `*/2` Steps: Every two units
詳細なパターンと説明は、crontab.org で入手できます。リンク内の例には 5 つのフィールドがあり、最も細かい粒度は 1 分ですが、cron スケジューリングは 6 つのフィールドを含む拡張形式をサポートしており、第 2 レベルの精度が可能です。 crontab.guru のようなツールはパターンの構築に役立ちますが、秒フィールドを考慮することを忘れないでください。
このライブラリが使用する UNIX Cron 形式のクイック リファレンスと追加された 2 番目のフィールドを次に示します。
field allowed values ----- -------------- second 0-59 minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sunday, or use names)
「月」フィールドと「曜日」フィールドにも名前を使用できます。特定の日または月の最初の 3 文字を使用します (大文字と小文字は区別されません)。名前の範囲とリストが許可されます。
例: 「月、水、金」、「1 月~3 月」。
JS Date
と Luxon DateTime
オブジェクトはどちらも、計算遅延のためミリ秒の精度を保証しません。このモジュールでは、標準 cron 構文のミリ秒精度は除外されますが、JS Date
または Luxon DateTime
オブジェクトを介して実行日付を指定できます。ただし、現在時刻にミリ秒を加算するなど、将来の実行時刻を正確に指定することは、計算遅延のため常に機能するとは限りません。 4 ~ 5 ミリ秒未満の遅延が不一致を引き起こす可能性があることが観察されています。すべての日付の粒度を秒に制限することもできますが、精度を高めながら潜在的な問題についてユーザーに通知することを選択しました。
onTick
にアロー関数を使用すると、それらが親のthis
コンテキストにバインドされます。その結果、cron ジョブのthis
コンテキストにアクセスできなくなります。もう少し詳しくは、第 47 号 (コメント) をご覧ください。
sendAt
: CronTime
がいつ実行されるかを示します (Luxon DateTime
オブジェクトを返します)。
import * as cron from 'cron';const dt = cron.sendAt('0 0 * * *');console.log(`ジョブは ${dt.toISO()}` で実行されます);
timeout
: CronTime
今後実行されるミリ秒数を示します (数値を返します)。
import * as cron from 'cron';const timeout = cron.timeout('0 0 * * *');console.log(`ジョブは ${timeout}ms` で実行されます);
constructor(cronTime, onTick, onComplete, start, timeZone, context, runOnInit, utcOffset, unrefTimeout)
:
cronTime
: [必須] - ジョブを起動する時間。 cron 構文、JS Date
オブジェクト、または Luxon DateTime
オブジェクトを使用できます。
onTick
: [必須] - 指定された時間に実行する関数。 onComplete
コールバックが提供された場合、 onTick
それを引数として受け取ります。
onComplete
: [オプション] - job.stop()
によってジョブが停止されるときに呼び出されます。また、実行後のonTick
によってトリガーされる場合もあります。
start
: [オプション] - コンストラクターが終了する前にジョブを開始するかどうかを決定します。デフォルトはfalse
です。
timeZone
: [オプション] - 実行のタイムゾーンを設定します。デフォルトは現地時間です。 Luxon のドキュメントで有効な形式を確認してください。
context
: [オプション] - onTick メソッドの実行コンテキスト。
runOnInit
: [オプション] - 初期化後にonTick
関数を即座にトリガーします。デフォルトはfalse
です。
utcOffset
: [オプション] - タイムゾーンオフセットを分単位で指定します。 timeZone
とは共存できません。
unrefTimeout
: [オプション] - イベント ループの動作を制御するのに役立ちます。詳細はこちら。
from
(静的): オブジェクトとして引数を指定して新しい CronJob オブジェクトを作成します。上記の引数名と説明を参照してください。
start
: ジョブを開始します。
stop
: ジョブを停止します。
setTime
: CronJob
の時間を変更します。パラメータはCronTime
である必要があります。
lastDate
: 最終実行日を提供します。
nextDate
: onTick
アクティブにする次の日付を示します。
nextDates(count)
: onTick
開始する今後の日付の配列を提供します。
fireOnTick
: onTick
呼び出し動作の変更を許可します。
addCallback
: onTick
コールバックの追加を許可します。
constructor(time, zone, utcOffset)
:
time
: [必須] - ジョブを開始する時刻。 cron 構文または JS Date オブジェクトを受け入れます。
zone
: [オプション] - CronJob
パラメーターのtimeZone
と同等です。
utcOffset
: [オプション] - CronJob
パラメーターのutcOffset
に似ています。
Discordサーバーに参加しましょう!ここでは、GitHub よりもカジュアルなフォーラムで問題について話し合い、サポートを受けることができます。
このプロジェクトは助けを求めています!このプロジェクトに協力することに興味がある場合は、私たちの寄稿ドキュメントをご覧ください。
私たちの寄稿ドキュメントをご覧ください。問題を送信する前に知っておく必要のある情報がすべて含まれています。
これはコミュニティの取り組みプロジェクトです。本当の意味で、このプロジェクトは cron.js からオープンソース プロジェクトとして始まり、別のものに成長しました。他の人がコード、時間を提供し、プロジェクトを監督してくれました。現時点では、ここで名前を挙げるには多すぎますので、感謝の意を表します。
v2.4.0 にインポートされる前に、DefinitelyTyped タイピングに関する作業を行ってくださった堀内広樹氏、Lundarl Gholoi 氏、および koooge 氏に心より感謝いたします。
マサチューセッツ工科大学