常用插件的使用—grunt入门指南之三

先来看个图:

2013-7-20 13-17-08

上图是这二年前端炙手可热的项目,这么项目多多少少都需要构建工具支持,grunt是不二之选。

前面二篇教程,大量使用grunt-contrib-uglify插件进行演示,一方面是uglify(压缩js文件)任务,基本上是代码发布前必须执行的,另一方面grunt-contrib-uglify非常典型,堪称grunt的插件的代码。

接下来明河再拎出一些常用的插件,演示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';\n",
             process:function(src, filepath) {
                     return'// Source: ' + filepath + '\n'+
                              src.replace(/(^|\n)[ \t]*('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命令后:

2013-8-3 14-48-40

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 {}


通过
@import 来合并模块css文件。

原文链接:http://www.36ria.com/6226

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值