我试图找出改善从正在运行的 jake 任务记录到终端的消息的最佳方法。
我希望能够通过终端显示格式良好的消息,不仅是正在运行的服务器,还有可能正在运行的任何其他任务(包括从其他任务调用)。例如,假设我jake run
在开发时执行让服务器运行,这也会调用jake watch
监视我的 less css 文件以进行更改的任务。它还可以调用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
}
});
});
});
});