废话不多说,直接看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();
就这么简单~