一、contrib-concat 插件的使用

1、安装 “grunt-contrib-concat ”插件命令(在终端进入到项目根目录执行)

            npm install grunt-contrib-concat --save-dev

2、在项目根目录下提供 concat 插件任务配置需要的 src 目录和需要被合并的源文件(合并源文件放置到 src 目录下)

            mkdir src

3、在 Gruntfile.js 文件中对 concat 任务进行配置(把多个文件合并成一个文件)

 // 包装函数
module.exports = function (grunt) {
       // 任务配置,所有插件的配置信息
       grunt.initConfig({
               // 获取 package.json 的信息
               pkg: grunt.file.readJSON('package.json'),
               // concat 插件的配置信息
               concat: {
                   options: {
                       separator: ';',                 // 设置输出文件合并的字符
                       banner: '/*被合成的文件第一行内容说明文字信息*/',
                       footer: '/*被合成的文件尾部内容说明文字信息*/',
                       stripBanners: true         // 去掉被合成的文件内容中的 /* */ 注释信息
                   },
                   // 具体任务配置
                   dist: {
                       // 被合并的文件路径
                       src: ['src/zepto.js','src/jquery.js'],
                       // 被合成的文件路径
                       dest: 'dest/libs.js'
                   }
               }
       });  
// 加载指定插件任务
grunt.loadNpmTasks('grunt-contrib-concat');  

// 默认执行的任务
grunt.registerTask('default', ['concat']);
};

4、在 Gruntfile.js 文件中对 concat 任务进行配置(把多个指定文件分别合并成一个文件)

 // 包装函数
module.exports = function (grunt) {
       // 任务配置,所有插件的配置信息
       grunt.initConfig({
               // 获取 package.json 的信息
               pkg: grunt.file.readJSON('package.json'),
               // concat 插件的配置信息
               concat: {
                   options: {
                       separator: ';',                 // 设置输出文件合并的字符
                       banner: '/*被合成的文件第一行内容说明文字信息*/',
                       footer: '/*被合成的文件尾部内容说明文字信息*/',
                       stripBanners: true         // 去掉被合成的文件内容中的 /* */ 注释信息
                   },
                   // 具体任务配置
                   basic: {
                       // 被合并的文件路径
                       src: ['src/zepto.js','src/jquery.js'],
                       // 被合成的文件路径
                       dest: 'dest/basic.js'
                   },
                   extras: {
                       // 被合并的文件路径
                       src: ['src/underscore.js','src/backbone.js'],
                       // 被合成的文件路径
                       dest: 'dest/extras.js'
                   }
               }
       });  
// 加载指定插件任务
grunt.loadNpmTasks('grunt-contrib-concat');  

// 默认执行的任务
grunt.registerTask('default', ['concat']);
};

5、把多个指定文件分别合并成一个文件的另一种写法

 // 包装函数
module.exports = function (grunt) {
       // 任务配置,所有插件的配置信息
       grunt.initConfig({
               // 获取 package.json 的信息
               pkg: grunt.file.readJSON('package.json'),
               // concat 插件的配置信息
               concat: {
                   options: {
                       separator: ';',                 // 设置输出文件合并的字符
                       banner: '/*被合成的文件第一行内容说明文字信息*/',
                       footer: '/*被合成的文件尾部内容说明文字信息*/',
                       stripBanners: true         // 去掉被合成的文件内容中的 /* */ 注释信息
                   },
                   // 具体任务配置
                   build: {
                       files: {
                               'dest/basic.js': ['src/zepto.js','src/jquery.js'],    // 这里是主要修改的地方
                               'dest/extras.js': ['src/underscore.js','src/backbone.js']
                       }
                   }
               }
       });  
// 加载指定插件任务
grunt.loadNpmTasks('grunt-contrib-concat');  

// 默认执行的任务
grunt.registerTask('default', ['concat']);
};

PS:concat 插件的配置有两项:

            “options”中通过使用“separator”属性来指定被合成文件合并的字符,即在被合成文件中以什么符号来分隔多个被合并文件的内容。

            “build”中配置了被合并和被合成的文件路径。即规定了那些文件是被合并文件?合并之后的合成文件的存放路径。

6、最后在终端运行 grunt 命令

PS:如果提示 "Done, without errors."  证明就没什么问题了,现在去项目根目录下看是否已经生成了存放合并文件的目录和被合成的目标文件。