mirror of
https://github.com/grafana/grafana.git
synced 2025-01-07 22:53:56 -06:00
86 lines
2.4 KiB
JavaScript
86 lines
2.4 KiB
JavaScript
module.exports = function(config, grunt) {
|
|
'use strict';
|
|
|
|
var gaze = require('gaze');
|
|
var path = require('path');
|
|
var firstRun = true;
|
|
var done;
|
|
var lastTime;
|
|
|
|
grunt.registerTask('watch', function() {
|
|
if (!grunt.option('skip-ts-compile')) {
|
|
grunt.log.writeln('We recommoned starting with: grunt watch --force --skip-ts-compile')
|
|
grunt.log.writeln('Then do incremental typescript builds with: grunt exec:tswatch')
|
|
}
|
|
|
|
done = this.async();
|
|
lastTime = new Date().getTime();
|
|
|
|
if (firstRun === false) {
|
|
grunt.log.writeln('Watch resuming');
|
|
return;
|
|
}
|
|
|
|
gaze([
|
|
config.srcDir + '/app/**/*',
|
|
config.srcDir + '/sass/**/*',
|
|
], function(err, watcher) {
|
|
|
|
console.log('Gaze watchers setup');
|
|
|
|
watcher.on('all', function(evtName, filepath) {
|
|
filepath = path.relative(process.cwd(), filepath);
|
|
|
|
// ignore multiple changes at once
|
|
var now = new Date().getTime();
|
|
if (now - lastTime < 100) {
|
|
return;
|
|
}
|
|
lastTime = now;
|
|
|
|
var newPath;
|
|
grunt.log.writeln('File Changed: ', filepath);
|
|
|
|
if (/(\.html)|(\.json)$/.test(filepath)) {
|
|
newPath = filepath.replace(/^public/, 'public_gen');
|
|
grunt.log.writeln('Copying to ' + newPath);
|
|
grunt.file.copy(filepath, newPath);
|
|
}
|
|
|
|
if (/(\.js)$/.test(filepath)) {
|
|
newPath = filepath.replace(/^public/, 'public_gen');
|
|
grunt.log.writeln('Copying to ' + newPath);
|
|
grunt.file.copy(filepath, newPath);
|
|
|
|
grunt.task.run('jshint');
|
|
grunt.task.run('jscs');
|
|
}
|
|
|
|
if (/(\.scss)$/.test(filepath)) {
|
|
grunt.task.run('clean:css');
|
|
grunt.task.run('css');
|
|
}
|
|
|
|
if (/(\.ts)$/.test(filepath)) {
|
|
newPath = filepath.replace(/^public/, 'public_gen');
|
|
grunt.log.writeln('Copying to ' + newPath);
|
|
grunt.file.copy(filepath, newPath);
|
|
|
|
if (grunt.option('skip-ts-compile')) {
|
|
grunt.log.writeln('Skipping ts compile, run grunt exec:tswatch to start typescript watcher')
|
|
} else {
|
|
grunt.task.run('exec:tscompile');
|
|
}
|
|
|
|
grunt.config('tslint.source.files.src', filepath);
|
|
grunt.task.run('exec:tslintfile');
|
|
}
|
|
|
|
done();
|
|
firstRun = false;
|
|
grunt.task.run('watch');
|
|
});
|
|
});
|
|
});
|
|
};
|