Inside Tasks
タスクが実行されている間、Gruntは多くのタスク固有の汎用プロパティとメソッドを
タスク関数内部からthis
オブジェクトを通じてアクセス可能にしています。
テンプレート内で使用するように、grunt.task.current
も、同じオブエジェクトとしてアクセス可能にしています。
例).this.name
は、grunt.task.current.name
としても使用可能です。
- this.async
- this.requires
- this.requiresConfig
- this.name
- this.nameArgs
- this.args
- this.flags
- this.errorCount
- this.options
- this.target
- this.files
- this.filesSrc
- this.data
this.async
タスクが非同期の場合、このメソッドはGruntに待機を指示するために呼び出されなければいけません。
戻り値として、タスクが完了した際に呼び出すべき"done"関数が返されます。
false
、Error
オブジェクトどちらかが"done"関数に渡されると、
Gruntにそのタスクが失敗したことを知らせることが出来ます。
もし、this.async
メソッドが実行されない場合、タスクは同期実行されます。
// Gruntにこのタスクが非同期であることを伝えます。
var done = this.async();
// 非同期コード
setTimeout(function() {
// 時々、エラーが起きるようにシミュレートしてみましょう。
var success = Math.random() > 0.5;
// 完了!
done(success);
}, 1000);
this.requires
もし、あるタスクが別のタスク(または複数の別のタスク)の実行が成功していることに依存している場合、
このメソッドは、その別のタスクが実行されていない、または失敗した場合に、強制的にGruntを中断させることが出来ます。
taskList
には、タスク名の配列、または個別に引数としてタスク名を指定します。
別のタスクが既に実行され成功していない場合、それだけで現タスクを失敗とみなし、 指定したタスクが実行されないことに注意してください。
this.requires(tasksList)
this.requiresConfig
もし、1つでも必須の設定プロパティが欠けていたら、現タスクを失敗にします。 設定プロパティの1つ以上の文字列、または配列を指定することが可能です。
this.requiresConfig(prop [, prop [, ...]])
設定プロパティについての詳しい情報を知りたければ、 grunt.configドキュメント を参照してください。
このメソッドは、grunt.config.requires
メソッドのエイリアスです。
this.name
grunt.registerTask
にタスク名として定義する名前です。
例えば、タスク関数内でthis.name
を"sample"とした場合、
"sample"タスクはgrunt sample
またはgrunt sample:foo
として実行されます。
タスクがgrunt.task.renameTask
によって名前を変更している場合、
このプロパティはその新しい名前を反映することに注意してください。
this.nameArgs
コロン区切りの引数、またはコマンドライン上で指定されるフラグを含むタスクの名前です。
例えば、"sample"タスクがgrunt sample:foo
として実行された場合、タスク関数内では
this.nameArgs
は"sample:foo"となります。
タスクがgrunt.task.renameTask
によって名前を変更している場合、
このプロパティはその新しい名前を反映することに注意してください。
this.args
タスクに渡された引数の配列です。
例えば、もし"sample"タスクがsample:foo:bar
として実行された場合、
タスク関数内でthis.args
は、["foo", "bar"]
となります。
マルチタスク内では、現ターゲットがthis.args
配列から省略されていることに注意してください。
this.flags
タスクに引数として渡されて生成されたオブジェクトです。
例えば、"sample"タスクがsample:foo:bar
として実行された場合、
タスク関数内でthis.flags
は{foo: true, bar: true}
となります。
マルチタスク内では、ターゲット名はflagとしてセットされません。
this.errorCount
タスク中にgrunt.log.error
が発生した回数です。
これは、エラーがタスクの実行中に記録された場合、タスクを失敗させるのに使用することができます。
this.options
optionsのオブジェクトを返します。
defaultsObj
引数のプロパティは、optionオブジェクトのタスク層に上書きされ、
マルチタスクで更に上書きされます。(翻訳に自信無し)
this.options([defaultsObj])
this.options
メソッドの使用例です。
var options = this.options({
enabled: false,
});
doSomething(options.enabled);
タスクの設定ガイドでは、 タスク視点からのオプション指定の仕方を示しています。
this.target
マルチタスク内では、このプロパティは現在繰り返し処理を行なっているターゲットの名前を含んでいます。
例えば、もし"sample"マルチタスクがgrunt sample:foo
として
設定データ{sample: {foo: "bar"}}
付きで実行されていた場合、
タスク関数内では、this.target
は"foo"になります。
this.files
マルチタスク内で、Gruntにサポートされているファイルフォーマットとオプション、 globパータン、 または直接のマッピングによって、 指定された全てのファイルが自動的にファイル配列形式 に標準化されたものです。
これが意味することは、タスクは扱うカスタムファイルフォーマット、globパターン、ファイルマッピング、 除外するファイルまたはディレクトリを明示的にするために沢山の定型文を含む必要がないということです。 タスクの設定ガイドに沿ってファイルを指定すれば、 Gruntは全ての詳細を扱います。(翻訳に自信無し)
タスクはthis.files
配列を繰り返し処理させて、
配列内の各オブジェクトのプロパティであるsrc
とdest
を利用します。
this.files
プロパティは常に配列になっています。
src
プロパティもまた、遷移先ファイルに対して複数の元ファイルがある場合、常に配列になります。
存在しないファイルがsrc
に含まれる可能性があることに注意してください。
そのため、ファイルを使用する前にそれが存在するかテストする必要があるかもしれません。
下記は、"concat"タスクによるthis.files
プロパティの使用例です。
this.files.forEach(function(file) {
var contents = file.src.filter(function(filepath) {
// 存在しないファイルを削除(任意でフィルタリング、または警告を行うこと)
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('
');
// contentsに遷移先ファイルパスを追記
grunt.file.write(file.dest, contents);
// 成功メッセージを出力
grunt.log.writeln('File "' + file.dest + '" created.');
});
もし、本来のファイルオブジェクトのプロパティが必要であれば、
各個別のファイルオブジェクトのorig
プロパティオブジェクト下で使用することが可能ですが、
そういったケースはほぼ無いと思われます。
this.filesSrc
マルチタスクでは、任意のファイル形式を介して指定されたすべてのsrc
ファイルファイルは単一の配列に縮小されています。
もし、タスクが"読み込み専用"且つ遷移先ファイルパスを考慮しない場合、this.files
の代わりにこれを使用します。
下記は、"lint"タスクによるthis.filesSrc
プロパティの使用例です。
// Lint指定するファイル
var files = this.filesSrc;
var errorCount = 0;
files.forEach(function(filepath) {
if (!lint(grunt.file.read(filepath))) {
errorCount++;
}
});
// もしエラーログがあれば、タスクを失敗とする
if (errorCount > 0) { return false; }
// そうでなければ、成功メッセージを出力
grunt.log.ok('Files lint free: ' + files.length);
this.data
マルチタスクではこれは、ターゲットに与えられたGrunt設定オブジェクト内のデータになります。
例えば、もし"sample"マルチタスクが{sample: {foo: "bar"}}
の設定データ付きで、
grunt sample:foo
として実行された場合、タスク関数内でthis.data
は"bar"
となります。
正規化された値として、this.options
、this.files
、this.filesSrc
を
this.data
の代わりに使用することを推奨します。
© 2010 - 2017 STUDIO KINGDOM