zoukankan      html  css  js  c++  java
  • 【转】常用插件的使用—grunt入门指南(上)

    grunt-contrib-concat

    非常常用的grunt插件,用于合并任意文件,用法也非常简单:

    npm install grunt-contrib-concat --save-dev
    grunt.loadNpmTasks('grunt-contrib-concat');

    (后面的插件演示就不再贴安装插件和注册插件的代码,大同小异。)

    任务:合并src下的js文件到build目录,合并后文件名为built.js。

    grunt.initConfig({
            concat: {
                options: {
                    //文件内容的分隔符
                    separator: ';'
                },
                dist: {
                    src: ['src/*.js'],
                    dest: 'build/built.js'
                }
            }
    });

    向文件追加一些额外信息:

     grunt.initConfig({
            pkg: grunt.file.readJSON('package.json'),
            concat: {
                options: {
                    //文件内容的分隔符
                    separator: ';',
                    stripBanners: true,
                    banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
                                '<%= grunt.template.today("yyyy-mm-dd") %> */'
                },
                dist: {
                }
            }
        });

    自定义进程函数,比如你需要在合并文件前,对文件名进行处理等。

    grunt.initConfig({
            pkg: grunt.file.readJSON('package.json'),
            concat: {
                options: {
                     // Replace all 'use strict' statements in the code with a single one at the top
                    banner: "'use strict';
    ",
                    process: function(src, filepath) {
                            return '// Source: ' + filepath + '
    ' +
                                     src.replace(/(^|
    )[ 	]*('use strict'|"use strict");?s*/g, '$1');
                    }
                },
                dist: {
                }
            }
    });

    grunt-contrib-copy

    顾名思义,用于复制文件或目录的插件。

    copy: {
      main: {
        files: [
          {src: ['path/*'], dest: 'dest/', filter: 'isFile'}, // 复制path目录下的所有文件
          {src: ['path/**'], dest: 'dest/'}, // 复制path目录下的所有目录和文件
        ]
      }
    }

    有复制,必然有删除。

    grunt-contrib-clean

    clean: {
      build: {
        src: ["path/to/dir/one", "path/to/dir/two"]
      }
    }

    grunt-contrib-compress

    用于压缩文件和目录成为zip包,不是很常用。

    compress: {
      main: {
        options: {
          archive: 'archive.zip'
        },
        files: [
          {src: ['path/*'], dest: 'internal_folder/', filter: 'isFile'}, path下所有的js
          {src: ['path/**'], dest: 'internal_folder2/'}, // path下的所有目录和文件
        ]
      }
    }

    grunt-contrib-jshint

    jshint用于javascript代码检查(并会给出建议),发布js代码前执行jshint任务,可以避免出现一些低级语法问题。

    jshint拥有非常丰富的配置,可以自由控制检验的级别。

    module.exports = function(grunt) {
        // 构建任务配置
        grunt.initConfig({
            //读取package.json的内容,形成个json数据
            pkg: grunt.file.readJSON('package.json'),
            jshint: {
                options: {
                    //大括号包裹
                    curly: true,
                    //对于简单类型,使用===和!==,而不是==和!=
                    eqeqeq: true,
                    //对于首字母大写的函数(声明的类),强制使用new
                    newcap: true,
                    //禁用arguments.caller和arguments.callee
                    noarg: true,
                    //对于属性使用aaa.bbb而不是aaa['bbb']
                    sub: true,
                    //查找所有未定义变量
                    undef: true,
                    //查找类似与if(a = 0)这样的代码
                    boss: true,
                    //指定运行环境为node.js
                    node: true
                },
                //具体任务配置
                files: {
                    src: ['src/*.js']
                }
            }
        });
        // 加载指定插件任务
        grunt.loadNpmTasks('grunt-contrib-jshint');
        // 默认执行的任务
        grunt.registerTask('default', ['jshint']);
    };

    配置的含义,明河都写在代码注释中,就不再累述了。

    运行grunt命令后:

    jshint比较有意思的是还可以结合grunt-contrib-concat插件使用,在合并文件前(后)对js进行检查。

    grunt.initConfig({
      concat: {
        dist: {
          src: ['src/foo.js', 'src/bar.js'],
          dest: 'dist/output.js'
        }
      },
      jshint: {
        beforeconcat: ['src/foo.js', 'src/bar.js'],
        afterconcat: ['dist/output.js']
      }
    });

    类似的还有个grunt-contrib-csslint插件,用于css代码检查,用法基本一样,只是配置上存在差异,貌似css检查的需求有些鸡肋,就不再演示了。

    grunt-contrib-mincss

    非常常用的插件,用于css压缩。

    用法相对于grunt-contrib-uglify简单很多:

    mincss: {
      compress: {
        files: {
          "path/to/output.css": ["path/to/input_one.css", "path/to/input_two.css"]
        }
      }
    }

    grunt-css-combo

    我的同事紫英写的css合并的插件,用于css分模块书写时的合并(如果你不使用less、sass、stylus,建议使用这个插件)。

    grunt.initConfig({
      css_combo: {
        files: {
          'dest/index.combo.css': ['src/index.css'],
        },
      },
    })

    文件目录的demo请看github

    src/index.css的代码如下:

    @import "./mods/mod1.css";
    @import "./mods/mod2.css";
    #content {}

    原文地址:http://www.36ria.com/6226

  • 相关阅读:
    JS代码和网页的混用
    猫扑论坛遭遇黑客挂马
    安全专家解析黑客攻击网银四大手段
    网页分析利器:IEDevToolBar
    2009年世界顶级杀毒软件排行榜
    英特尔遭遇CPU级RootKit,目前无药可医
    Linq联表查询
    从客户端中检测到有潜在危险的 Request.Form 值。
    MVC Cookie的使用
    TimSpan比较时间差
  • 原文地址:https://www.cnblogs.com/kuler/p/3342854.html
Copyright © 2011-2022 走看看