実行中の jake タスクから端末に記録されるメッセージを改善する最善の方法を見つけようとしています。
実行中のサーバーだけでなく、実行中の他のタスク (他のタスクからの呼び出しを含む) から、適切にフォーマットされたメッセージをターミナル経由で表示できるようにしたいと考えています。たとえば、開発中にサーバーを実行するために実行すると、less css ファイルの変更を監視jake run
するタスクも呼び出されます。また、単体テストなどを継続的に実行するためにjake watch
呼び出すこともできます(上記の例には示されていません)。jake unit
ロガーをファイルに記録し(たとえば、 )、そのタスク内から./dev.log
何らかのタイプを単純に実行することは理にかなっていると思います(ファイルログを作成するという追加の利点があります。それが合理的な方法である場合:tail -f
jake run
- 端末の色でログに記録するにはどうすればよいですか? と
./dev.log
実行中のタスク/ターミナルの内容を監視してストリーミングするにはどうすればよいですか?
そうでない場合、そしてより良い提案があれば、私を正しい方向に向けてもらえますか? 実装されたら、ここで解決策を共有します。
ありがとうございました!
サンプルコード
var servers = [
{
root: 'application',
port: 8000
},
{
root: 'dist',
port: 8001
}
];
// jake run
desc('Run when coding. (Watches files, compiles less, runs dev server, runs test, etc)');
task('run', {async: true}, function () {
jake.Task.watch.invoke(); // invoking the 'watch' teask which I keep separate
jake.logger.log('Starting static web servers:'); // simple logging through jake (this is what I'm trying to replace)
var connect = require('connect');
servers.forEach(function (server) {
jake.logger.log('localhost:' + server.port + ' -> ' + server.root);
connect(connect['static'](server.root)).listen(server.port);
});
});
desc('Watches for changes to the main .less file');
task('watch', function () {
var gaze = require('gaze');
gaze(['application/css/style.less'], function (err, watcher) {
this.on('all', function (event, filepath) {
var fs = require('fs');
var less = require('./node_modules/less/lib/less');
var parser = new (less.Parser)({
paths: ['./application/css'], // Specify search paths for @import directives
filename: 'style.less'
});
parser.parse(fs.readFileSync('./application/css/style.less', 'utf8'), function (err, tree) {
if (err) {
return console.error(err);
// TODO log error
} else {
fs.writeFileSync('./application/css/style.css', tree.toCSS({ compress: true }));
jake.logger.log('application/css/style.less > application/css/style.css');
complete();
// TODO log success
}
});
});
});
});