Grunt再体验:支持LESS,Mocha,使用cron来定期运行Grunt Task

废话不多说,直接看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();

就这么简单~

原文地址:https://www.cnblogs.com/puncha/p/3876877.html