カスタムレジストリの作成#
カスタムレジストリをタスクシステムにプラグインすることで、共有タスクや機能拡張を提供できます。レジストリはregistry()を使用して登録されます。
構造#
gulpで受け入れられるためには、カスタムレジストリは特定の形式に従う必要があります。
registry()に渡されたレジストリインスタンスに4つのメソッドすべてがない場合、エラーがスローされます。
登録#
上記の例にあるレジストリを登録するには、そのインスタンスをregistry()に渡す必要があります。
メソッド#
init(gulpInst)#
レジストリのinit()メソッドは、registry()関数の最後に呼び出されます。唯一の引数として渡されるgulpインスタンス(gulpInst)を使用して、gulpInst.task(taskName, fn)を使用してタスクを事前に定義できます。
パラメータ#
| パラメータ | 型 | 備考 |
|---|---|---|
| gulpInst | オブジェクト | gulpのインスタンス。 |
get(name)#
get()メソッドは、カスタムレジストリが解決して返すタスクのname、またはその名前のタスクが存在しない場合はundefinedを受け取ります。
パラメータ#
| パラメータ | 型 | 備考 |
|---|---|---|
| name | 文字列 | 取得するタスクの名前。 |
set(name, fn)#
set()メソッドは、タスクのnameとfnを受け取ります。これは、ユーザー登録済みのタスクをカスタムレジストリに提供するために、task()によって内部的に呼び出されます。
パラメータ#
| パラメータ | 型 | 備考 |
|---|---|---|
| name | 文字列 | 設定するタスクの名前。 |
| fn | 関数 | 設定するタスク関数。 |
tasks()#
レジストリ内のすべてのタスクをリストするオブジェクトを返す必要があります。
ユースケース#
タスクの共有#
すべてのプロジェクトで共通のタスクを共有するには、レジストリにinitメソッドを公開します。このメソッドは、唯一の引数としてgulpのインスタンスを受け取ります。その後、gulpInst.task(name, fn)を使用して、事前に定義されたタスクを登録できます。
たとえば、cleanタスクを共有する場合があります。
次に、プロジェクトで使用するには
共有機能#
タスクがレジストリに追加される方法を制御することで、タスクを装飾できます。
たとえば、すべてのタスクでいくつかのデータを共有したい場合、カスタムレジストリを使用してそれらのタスクをそのデータにバインドできます。上記レジストリメソッドの説明に従って、変更されたタスクを返すようにしてください。
例#
- undertaker-registry: Gulp 4のデフォルトレジストリ。
- undertaker-common-tasks: タスクを事前に定義する概念実証用カスタムレジストリ。
- undertaker-task-metadata: 各タスクにメタデータを追加する概念実証用カスタムレジストリ。