ユーザーが提供するタスクがgulpfile
に存在しない場合、特定のタスクを実行する方法はありますか。ユーザーが必要とするタスクがgulpfileに存在しない場合に特定のタスクを実行
たとえば、ユーザがgulp build
を実行し、build
タスクがgulpfile
に存在しない場合、特定のタスク(またはデフォルトタスクは問題ありません)を実行する必要があります。
類義語として、404ページgulp
として指定されたタスクを考えてみましょう。
ユーザーが提供するタスクがgulpfile
に存在しない場合、特定のタスクを実行する方法はありますか。ユーザーが必要とするタスクがgulpfileに存在しない場合に特定のタスクを実行
たとえば、ユーザがgulp build
を実行し、build
タスクがgulpfile
に存在しない場合、特定のタスク(またはデフォルトタスクは問題ありません)を実行する必要があります。
類義語として、404ページgulp
として指定されたタスクを考えてみましょう。
gulp
は、tasks
インスタンス変数を持ちます。インスタンス変数は、インスタンスに追加されたタスクの名前であるキーを持つプレーンオブジェクトです。あなたはproxy
でtasks
を交換した場合、あなたはそれがget
トラップハンドラを使用することによりdefault
のように、デフォルトのタスクを返すかもしれない:
const gulp = require('gulp')
gulp.tasks = new Proxy(gulp.tasks, {
get (target, property) {
if (target.hasOwnProperty(property)) {
return target[property]
}
return target.default
}
})
タスクのシーケンスが開始される前にコードをした後でも、いつでも実行できること一部のタスクはすでにgulp
インスタンスに追加されています。
ありがとう!それはまさに私が探していたものです。 – noob
パトリックの答えは本当に役に立ちました。 ESLintの警告と次のエラーが発生してから少し修正しなければなりませんでした。 -
TypeError: this.tasks.hasOwnProperty is not a function
私は変更を投稿することも考えました。ここに私の最終的なコードは -
'undefined!== target [property]'の注文のために['yoda'エラー](https://eslint.org/docs/rules/yoda)が表示されないのに驚いています –
私はこの方法を使用しています私は間違って変数に未定義を割り当てることはありません。私は定義されていないチェックはyoda ;-)から保護されていると思う – noob
あなたは 'gulp build || 'build'が失敗した場合、または' build'が存在しない場合は 'gulp'が' default'を呼び出します。 –
@PatrickRoberts私はこれらのタスクを実行するつもりはなく、他の開発者もそうです。タスクがないときに何をすべきかについての有意義なメッセージを表示したいと思います。 – noob