废话不多说,直接看Grunt的配置文件:
var path = require('path');
module.exports = function (grunt) {
grunt.initConfig({
ftpscript: {
uploadFixRateData: {
options: {
host: 'cadcptdgaop5',
port: 21,
passive: false
},
files: [
{ expand: true, cwd: './tmp', src: ['fixed_report_count.txt'], dest: '/data/' }
]
}
},
shell: {
exportFixRateData: {
command: '../WebService/DbAdmin.exe -e tmp/fixed_report_count.txt',
options: {
async: false,
stdout: true
}
}
},
less: {
dev: {
options: {
paths: ["../WebSite/public/less"]
},
files: [
{ "../WebSite/public/css/site.css": "../WebSite/public/less/site.less" },
{ "../WebSite/public/css/page_send_report.css": "../WebSite/public/less/page_send_report.less" },
{ "../WebSite/public/css/page_data_mining.css": "../WebSite/public/less/page_data_mining.less" },
{ "../WebSite/public/css/page_bucket_table.css": "../WebSite/public/less/page_bucket_table.less" }
]
},
prod: {
options: {
paths: ["../WebSite/public/less"],
yuicompress: true
},
files: [
{ "../WebSite/public/css/site.css": "../WebSite/public/less/site.less" },
{ "../WebSite/public/css/page_send_report.css": "../WebSite/public/less/page_send_report.less" },
{ "../WebSite/public/css/page_data_mining.css": "../WebSite/public/less/page_data_mining.less" },
{ "../WebSite/public/css/page_bucket_table.css": "../WebSite/public/less/page_bucket_table.less" }
]
}
},
mochacli: {
options: {
//require: ['should'],
files: '../Test/test/*.js'
},
spec: {
options: {
reporter: 'spec'
}
},
"default": {
}
}
});
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
// Backup and Restore
grunt.registerTask(
"backup_fix_rate_data",
"upload exported fix rate data to backup server",
["shell:exportFixRateData", "ftpscript:uploadFixRateData"]);
// Build Compile
//
grunt.registerTask(
"dev",
"Compile and make",
["less:dev"]);
grunt.registerTask(
"prod",
"Compile and release",
["less:prod"]);
grunt.registerTask(
"ut",
"Run Mocha Unit Test",
['mochacli:default']);
grunt.registerTask(
"spec",
"Run Mocha Unit Test",
['mochacli:spec']);
};
其中定义了一个备份的task,但是我希望每周一执行他,怎么办呢?用Cron库:
var exec = require('child_process').exec;
var cronJob = require('cron').CronJob;
var schedule = require('node-schedule');
function _runGruntTask(taskName) {
exec("grunt " + taskName, function (error, stdout, stderr) {
if (stdout) console.log(stdout);
if (stderr) console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
}
// You can generate the cron pattern in:
// http://www.becron.com/
//
new cronJob({
desc: 'Backup Fix Rate Data File in every Monday 2:30 A.M.',
cronTime: '0 30 2 * * 1',
onTick: function() {
_runGruntTask('backup_fix_rate_data');
}
}).start();
就这么简单~