grunt入门级使用

环境准备
基于nodejs

    grunt是基于node的  所以使用grunt前务必要安装了node

安装grunt
 npm install -g grunt-cli   // 全局安装grunt

    至此,grunt的环境准备基本完成


本文将简易地涉及grunt的一些基础用法和三个插件:

    js压缩插件:grunt-contrib-unglify

    js合并插件:grunt-contrib-concat 

    css压缩合并插件:grunt-contrib-cssmin


你将要准备的东西
在使用grunt时,你必须在根目录准备的两个文件:

package.json:此文件被npm用于存储项目的元数据,以便将此项目发布为npm模块。你可以在此文件中列出项目依赖的grunt和Grunt插件,放置于devDependencies配置段内。

下载grunt插件和下载node模块一样:
  npm install grunt-contrib-uglify --save-dev //这是下载uglify插件命令

{
  "name": "my-project-name",
  "version": "0.1.0",
  "devDependencies": {
    "grunt-contrib-concat": "~0.3.0",
    "grunt-contrib-cssmin": "~0.5.0",
    "grunt-contrib-jshint": "~0.6.3",
    "grunt-contrib-uglify": "~0.2.1"
  }
}

Gruntfile.js:用来配置或定义任务(task)并加载Grunt插件

Gruntfile.js由以下内容组成

1、wrapper函数,结构如下,这是Node.js的典型写法,使用exports公开API

module.exports = function(grunt) {
    // Do grunt-related things in here
};

2、项目和任务配置

3、载入grunt插件和任务

4、定制执行任务

举个栗子:(注意要在根目录下创建一个名为src的文件夹,并在文件夹内新建js文件)

module.exports = function (grunt) {
  // Grunt的task配置都是在Gruntfile中的grunt.initConfig方法中指定的
  grunt.initConfig({
    // 定义任务uglify,将指定的js文件压缩后打包到另一个文件
    uglify: {
      options: {
        banner: '/*! 这是注释信息 */' // banner在文件头部添加信息,一般用于添加注释信息
        footer: '/*footer*/' // 文件尾信息,只会出现一次
      },
      // uglify中有名为my_target的任务
      my_target: {
        files: [{
          expand: true, // 设置为true将启用下面的选项
          cwd: 'src',  //cwd相当于给所有匹配的文件设置一个相对的起点。比如设置cwd为/home/xxx/code,那么src的路径就是相对于这个/home/xxx/code的
          src: '**/*.js', // 开启expand配置后,相对于cwd路径的匹配模式,这里指src目录下的所有js文件
          dest: 'dest' // 目标文件路径
        }]
      }
    }
  });
  grunt.loadNpmTasks('grunt-contrib-uglify');  // 加载插件

  grunt.registerTask('default', 'uglify');  // 注册任务uglify,并定义为默认执行任务 
}

你的package.json和Gruntfile.js已经完成  但为了保证项目能正常运行因此我们要多一个步骤:

npm install
执行grunt命令:
grunt  // 执行默认命令
或
grunt uglify  // 执行指定命令


------------------------------------------------简陋的分割线------------------------------------------------


这里用几个简单的栗子把上文提到的几个插件介绍一下

我们的package.json文件保持上文的配置不变(在npm install时,会自动检测本地模块文件内与package.json内的模块是否一致,不一致时会自动更新)如需要额外添加插件  用上文提到的命令即可


uglify

    js压缩插件:将js文件压缩后打包到另一个文件

    对应的栗子在上文中已经给出,这里就不重复贴代码了


concat

    js合并插件:将指定的js文件合并后打包到另一个文件

    举个栗子:

module.exports = function (grunt) {
  grunt.initConfig({
  // 将指定的js文件合并在另一个js文件
  concat: {
    options: {
      separator: '/*分割*/',  // 用于分隔各个文件的文字
      banner: '/*测试*/', // 文件头信息,只会出现一次
      footer: '/*footer*/' // 文件尾信息,只会出现一次
     
    },
    // 将多个文件合并在一个文件内
    // dist: {
    //   src: ['src/zepto.js', 'src/underscore.js', 'src/backbone.js'],
    //   dest: 'dist/built.js',
    // }
     
    // 将合并的代码放到不同的文件
    basic_and_extras: {
      files: {
        'dest/basic.js': ['src/test.js', 'src/zepto.js'],
        'dest/with_extras.js': ['src/underscore.js', 'src/backbone.js']
      }
    }
  }
});
  grunt.loadNpmTasks('grunt-contrib-concat');

  grunt.registerTask('default', 'concat')
}

cssmin

    css压缩合并插件:是的没有错,这个插件是把css压缩完并合并的

    栗子上来:

module.exports = function(grunt) {

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        cssmin: {
            options: {
                shorthandCompacting: false,
                roundingPrecision: -1
            },
            target: {
                files: {
                    'dest/style.min.css': ['src/style01.css', 'src/style02.css']
                }
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-cssmin');

    grunt.registerTask('default',['cssmin']);
}
最常用的三个插件以及最基础的语法也就介绍完了,当然,这只是最简单的应用而已,实际开发过程中应该会比案例的复杂很多,所有一起加油吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值