zoukankan      html  css  js  c++  java
  • Grunt之添加文件监视:Grunt-watch (已备份)

    今天又完善了一下Grunt的Task,增加了JSHint和Watch功能,再修改了每个NodeJs代码之后,会运行JSHint对代码进行检查。修改了LESS文件之后,会重现编译LESS为CSS代码:


    "use restrict";
    
    var _ = require('underscore')
      , path = require('path')
      , fs = require('fs');
    
    
    var scriptFiles = _.chain({
        self: ['*.js'],
        test: ['../Test/*.js', '../Test/test/*.js', '../Test/FakedWebService/*.js', '../Test/FakedWebService/*/*.js'],
        webSite: ['../WebSite/*.js', '../WebSite/*/*.js'],
        webService: ['../WebService/*.js', '../WebService/*/*.js']
    }).values().flatten().value();
    
    var lessFilePairs = [
        { "../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" }
    ];
    
    
    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: lessFilePairs
                },
                prod: {
                    options: {
                        paths: ["../WebSite/public/less"],
                        yuicompress: true
                    },
                    files: lessFilePairs
                }
            },
    
            mochacli: {
                options: {
                    //require: ['should'],
                    files: '../Test/test/*.js'
                },
                spec: {
                    options: {
                        reporter: 'spec'
                    }
                },
                "default": {
                }
            },
    
            jshint: {
    
                options: {
                    laxcomma: true,   // Allow comma-first coding style
                    expr: true,       // Be compatible with the "cute" shouldJs
                    globals: {
                        node: true,
                        mootools: true
                    }
                },
    
                "default": scriptFiles
            },
    
            watch: {
                scripts: {
                    files: scriptFiles,
                    tasks: ['jshint'],
                    options: {
                        debounceDelay: 250
                    }
                }, 
    
                less: {
                    files: "../WebSite/public/less/*.less",
                    tasks: ['less:dev'],
                    options: {
                        debounceDelay: 250
                    }
                }
            }
        });
    
        require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
    
        // Help
        //
        grunt.registerTask(
            "default", "Help",
            function () {
                console.log(fs.readFileSync('ReadMe.txt').toString());
            }
        );
    
        // 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"], ["watch"]);
    
        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']);
    
    };

    在研究JSHint的时候,发现,原来还有个JSLint,JSHint是基于JSLint的并做了改进。

    另外,使用Should库的时候,JSHint会报错,他认为should库使用表达式作为语句运行时不规范的,例如 something.should.be.ok;我也看到了TJ大神与某个人的辩论,TJ认为,shouldJs库是可爱的,而且Unit Test框架应该可爱些,TJ是不会妥协的:https://github.com/visionmedia/should.js/issues/9,解决方法很简单,修改JSHint的参数就可以了。没啥大不了的。




  • 相关阅读:
    转:理想主义终结年代的七种兵器
    基础地理空间框架
    coldplay 全集下载
    S40 用google sync同步通讯录(转)
    分享一个关于Steve Jobs演讲的分析
    转:我们时代的思想责任与尊严
    nginx 视频流
    vue 使用路由重复跳转同一页面
    批处理文件编写
    ZBB – ZERO Bug Bounce
  • 原文地址:https://www.cnblogs.com/puncha/p/3876875.html
Copyright © 2011-2022 走看看