タスク内部
タスクの実行中、Grunt はタスク関数内で、`this` オブジェクトを介して、タスク固有の多くのユーティリティプロパティとメソッドを公開します。この同じオブジェクトは、テンプレートで使用するために `grunt.task.current` としても公開されます。たとえば、プロパティ `this.name` は `grunt.task.current.name` としても使用できます。
すべてのタスク内部
this.async
タスクが非同期の場合、Grunt に待機を指示するために、このメソッドを呼び出す必要があります。タスクが完了したときに呼び出す必要がある "done" 関数のハンドルを返します。タスクが失敗したことを Grunt に指示するために、`false` または `Error` オブジェクトを done 関数に渡すことができます。
`this.async` メソッドが呼び出されない場合、タスクは同期的に実行されます。
// Tell Grunt this task is asynchronous.
var done = this.async();
// Your async code.
setTimeout(function() {
// Let's simulate an error, sometimes.
var success = Math.random() > 0.5;
// All done!
done(success);
}, 1000);
this.requires
あるタスクが別のタスク(または複数のタスク)の正常な完了に依存している場合、このメソッドを使用して、他のタスクが実行されなかった場合、または他のタスクが失敗した場合に Grunt を強制的に中止させることができます。タスクリストは、タスク名の配列または個々のタスク名を引数として指定できます。
これは実際に指定されたタスクを実行するのではなく、指定されたタスクがまだ正常に実行されていない場合に、現在のタスクを失敗させることに注意してください。
this.requires(tasksList)
this.requiresConfig
1 つ以上の必須の 設定 プロパティが見つからない場合、現在のタスクを失敗させます。1 つ以上の文字列または配列の設定プロパティを指定できます。
this.requiresConfig(prop [, prop [, ...]])
設定プロパティの詳細については、grunt.config ドキュメントを参照してください。
このメソッドは、grunt.config.requires メソッドのエイリアスです。
this.name
`grunt.registerTask` で定義されているタスクの名前。たとえば、"sample" タスクが `grunt sample` または `grunt sample:foo` として実行された場合、タスク関数内では、`this.name` は `"sample"` になります。
grunt.task.renameTask でタスクの名前が変更された場合、このプロパティは新しい名前を反映することに注意してください。
this.nameArgs
コマンドラインで指定されたコロン区切りの引数またはフラグを含むタスクの名前。たとえば、"sample" タスクが `grunt sample:foo` として実行された場合、タスク関数内では、`this.nameArgs` は `"sample:foo"` になります。
grunt.task.renameTask でタスクの名前が変更された場合、このプロパティは新しい名前を反映することに注意してください。
this.args
タスクに渡された引数の配列。たとえば、"sample" タスクが `grunt sample:foo:bar` として実行された場合、タスク関数内では、`this.args` は `["foo", "bar"]` になります。
マルチタスクでは、現在のターゲットは `this.args` 配列から省略されることに注意してください。
this.flags
タスクに渡された引数から生成されたオブジェクト。たとえば、"sample" タスクが `grunt sample:foo:bar` として実行された場合、タスク関数内では、`this.flags` は `{foo: true, bar: true}` になります。
マルチタスク内では、ターゲット名はフラグとして設定され**ない**ことに注意してください。
this.errorCount
このタスク中に発生した grunt.log.error 呼び出しの数。タスク中にエラーが記録された場合、タスクを失敗させるために使用できます。
this.options
オプションオブジェクトを返します。オプションの `defaultsObj` 引数のプロパティは、タスクレベルの `options` オブジェクトのプロパティによってオーバーライドされ、マルチタスクではターゲットレベルの `options` オブジェクトのプロパティによってさらにオーバーライドされます。
this.options([defaultsObj])
この例は、タスクが `this.options` メソッドをどのように使用するかを示しています
var options = this.options({
enabled: false,
});
doSomething(options.enabled);
タスクの設定ガイドでは、タスクユーザーの観点からオプションを指定する方法の例を示しています。
マルチタスク内部
this.target
マルチタスクでは、このプロパティには、現在反復処理されているターゲットの名前が含まれています。たとえば、"sample" マルチタスクが設定データ `{sample: {foo: "bar"}}` で `grunt sample:foo` として実行された場合、タスク関数内では、`this.target` は `"foo"` になります。
this.files
マルチタスクでは、Grunt がサポートする ファイル形式とオプション、グロビングパターン、または 動的マッピング を使用して指定されたすべてのファイルは、自動的に単一の形式、ファイル配列ファイル形式 に正規化されます。
これは、タスクがカスタムファイル形式、グロビングパターン、ソースファイルから宛先ファイルへのマッピング、またはファイルやディレクトリのフィルタリングを明示的に処理するための大量の定型コードを含む必要がないことを意味します。*タスクユーザーは タスクの設定 ガイドに従ってファイルを指定するだけで、**Grunt がすべての詳細を処理します。**
タスクは `this.files` 配列を反復処理し、その配列内の各オブジェクトの `src` プロパティと `dest` プロパティを利用する必要があります。`this.files` プロパティは常に配列になります。タスクが宛先ファイルごとに複数のソースファイルを気にする場合に備えて、`src` プロパティも常に配列になります。
存在しないファイルが `src` 値に含まれる可能性があるため、ソースファイルを使用する前に、ソースファイルが存在することを明示的にテストすることをお勧めします。
この例は、単純な "concat" タスクが `this.files` プロパティをどのように使用するかを示しています
this.files.forEach(function(file) {
var contents = file.src.filter(function(filepath) {
// Remove nonexistent files (it's up to you to filter or warn here).
if (!grunt.file.exists(filepath)) {
grunt.log.warn('Source file "' + filepath + '" not found.');
return false;
} else {
return true;
}
}).map(function(filepath) {
// Read and return the file's source.
return grunt.file.read(filepath);
}).join('\n');
// Write joined contents to destination filepath.
grunt.file.write(file.dest, contents);
// Print a success message.
grunt.log.writeln('File "' + file.dest + '" created.');
});
元のファイルオブジェクトのプロパティが必要な場合は、`orig` プロパティの下の個々のファイルオブジェクトで利用できますが、元のプロパティにアクセスするための既知のユースケースはありません。
this.filesSrc
マルチタスクでは、ファイル形式 を介して指定されたすべての `src` ファイルは、単一の配列に縮小されます。タスクが "読み取り専用" で、宛先ファイルパスを気にしない場合は、`this.files` の代わりにこの配列を使用してください。
この例は、単純な "lint" タスクが `this.filesSrc` プロパティをどのように使用するかを示しています
// Lint specified files.
var files = this.filesSrc;
var errorCount = 0;
files.forEach(function(filepath) {
if (!lint(grunt.file.read(filepath))) {
errorCount++;
}
});
// Fail task if errors were logged.
if (errorCount > 0) { return false; }
// Otherwise, print a success message.
grunt.log.ok('Files lint free: ' + files.length);
this.data
マルチタスクでは、これは指定されたターゲットの Grunt 設定オブジェクトに格納されている実際のデータです。たとえば、"sample" マルチタスクが設定データ `{sample: {foo: "bar"}}` で `grunt sample:foo` として実行された場合、タスク関数内では、`this.data` は `"bar"` になります。
`this.data` の代わりに `this.options`、`this.files`、および `this.filesSrc` を使用することをお勧めします。これらの値は正規化されているためです。