grunt-contrib-concat可用于合并任意文件(css\js\txt等)

安装插件:npm install grunt-contrib-concat --save-dev

参数:

separator
参数类型:string
默认值:grunt.util.linefeed
可用一切string类型的字符分割,如“;”

banner
参数类型:string
默认值:""(空值)
在输出的文档的头部添加,一般做说明和注释用。参数如:'/*! <%= pkg.name %> <%=

grunt.template.today("yyyy-mm-dd") %> */\n'

footer
与banner相似,但其在输出的文档的底部添加

stripBanners
参数类型:Boolean、Object
默认值:false
为true,去除代码中的块注释。
Object:
block:如果为true,去除所有的块注释
line:如果为true,去除任何连续的//领导的行注释

process
参数类型:Boolean、object、funtion
默认值:false
处理的源文件在连接之前,作为模板或一个自定义函数。
false - 没有要处理的
true - 处理的源文件使用grunt.template.process的默认值
object - 处理的源文件使用grunt.template.process中指定选项
function(src,filepath) - 处理的源文件每个文件都使用被定义的函数处理,返回值将作为源文件使用

实例如下:

1.合并src下的js到bulid目录,合并后文件名为built.js:

concat:{
options: {
//文件内容分隔符
separator: ";",
stripBanner: true,
//在文件头部添加
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %> */',
//自定义进程函数,比如你需要在合并文件前,对文件名进行处理等
process: function(src, filepath) {
return '// Source: ' + filepath + '\n' +
src.replace(/(^|\n)[ \t]*('use strict'|"use strict");?\s*/g, '$1');
}
},
dist: {
src: ['src/*.js'],
dest: 'build/built.js'
}
}

2.合并多个目标文件

concat: {
options: {
separator: ";"
},
basic: {
src: ['txt/*.txt'],
dest: 'txt/common.txt'
},
extras: {
src:['src/*.js'],
dest: "js/common.min.js"
}
}

concat: {
options: {
separator: ";"
},
basic: {
files: {
'txt/common.txt' : ['txt/*.txt'],
'js/common.min.js' : ['src/*.js']
}
}
}

3.动态的文件名

grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
dirs: {
src: 'src'
},
concat: {
options: {
separator: ";"
},
extras: {
src:['<%= dirs.src %>/*.js'],
dest: "js/<%= pkg.name %>.min.js"
}
}
});

4.无效或丢失的文件的警告,设置nonull为true

concat: {
options: {
separator: ";"
},
extras: {
src:['<%= dirs.src %>/*.js'],
dest: "js/<%= pkg.name %>.min.js",
nonull: true
}
}

当然,除了在grunt.initConfig中配置concat,还需要在Gruntfile.js中添加下面两段代码,那么,这个插件就算配写完成了

//加载指定插件任务
grunt.loadNpmTasks('grunt-contrib-concat');

//注册插件任务
grunt.registerTask('default',['concat]);

grunt-contrib-concat 合并任意文件的更多相关文章

  1. 我的Grunt之旅-初识gruntfile文件

    时间:2018-03-06 18:23  事件:配置 gruntfile.js文件 首先,回忆一下之前的点,grunt项目下面必须有两个文件  ,第一个  package.json ,第二个  Gru ...

  2. grunt自定义任务——合并压缩css和js

    npm文档:www.npmjs.com grunt基础教程:http://www.gruntjs.net/docs/getting-started/ http://www.w3cplus.com/to ...

  3. FFmpeg任意文件读取漏洞分析

    这次的漏洞实际上与之前曝出的一个 CVE 非常之类似,可以说是旧瓶装新酒,老树开新花. 之前漏洞的一篇分析文章: SSRF 和本地文件泄露(CVE-2016-1897/8)http://static. ...

  4. 使用ffmpeg批量合并flv文件

    title: 使用ffmpeg批量合并flv文件 toc: false date: 2018-10-14 16:08:19 categories: methods tags: ffmpeg flv 使 ...

  5. PHP:网展cms后台任意文件删除和sql注入

    0x01:目录结构 可以发现Frameword是框架的文件 install安装 public公共文件 uploads储存上传之类的文件 webuser后台文件 Home前台文件 0x02.csrf漏洞 ...

  6. Java 合并PDF文件

    处理PDF文档时,我们可以通过合并的方式,来任意合并几个不同的PDF文件,使我们方便的存储和管理文档.例如,在做毕业设计的时候,封面和论文正文往往是两个PDF文档,但是,上交电子档的时候,需要合二为一 ...

  7. ImageMagick convert多张照片JPG转成pdf格式,pdfunite合并PDF文件

      在认识ImageMagick之前,我***的图像浏览软件是KuickShow,截图软件是KSnapShot,这两款软件都是KDE附带的软件,用起来也是蛮方便的.在一次偶然的机会中,我遇到了Imag ...

  8. 压缩/批量压缩/合并js文件

    写在前面 如果文件少的话,直接去网站转化一下就行. http://tool.oschina.net/jscompress?type=3 1.压缩单个js文件 cnpm install uglify-j ...

  9. 【原创】JEECMS v6~v7任意文件上传漏洞(1)

    文章作者:rebeyond 受影响版本:v6~v7 漏洞说明: JEECMS是国内Java版开源网站内容管理系统(java cms.jsp cms)的简称.该系统基于java技术开发,继承其强大.稳定 ...

随机推荐

  1. selenium—显示等待中期望的场景语句

    ① alert_is_present() 判断页面是否出现alert框 wait = WebDriverWait(driver,10) alert = wait.until(EC.alert_is_p ...

  2. DNS 域名系统与邮件服务器

    目录 DNS 域名系统 定义 域名分类 解析流程 DNS分类 资源记录 格式 资源记录类型 用bind搭建一台DNS服务器 安装bind 创建自己的zone文件 在主配置文件中,增加自己的zone 检 ...

  3. cm日志的清理

    #过一段时间后,cm server的空间越来越大 #删除日志/bin/rm /var/lib/cloudera-host-monitor/ts/*/partition*/* -rf/bin/rm /v ...

  4. [c++] WINAPI

    int WINAPI WINMain 中,WINAPI含义 在windef.h头文件中有如下定义: #define WINAPI __stdcall #define APIENTRY WINAPI 函 ...

  5. [Python3] 036 函数式编程 返回函数

    目录 函数式编程 之 返回函数 1. 引子 2. 闭包 closure 函数式编程 之 返回函数 函数可以返回具体的值 也可以返回一个函数作为结果 1. 引子 1.1 定义一个普通函数 >> ...

  6. sql server2012中使用convert来取得datetime数据类型样式(全)

    一.日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/ CONV ...

  7. Postgresql 监控sql之 pg_stat_statements模块

    postgresql.confpg_stat_statements.max = 1000000pg_stat_statements.track = allpg_stat_statements.trac ...

  8. python-day10(正式学习)

    目录 字符编码 计算机基础 文本编辑器存取文件的原理 python解释器执行py文件的原理 python解释器与文本编辑的异同 字符编码介绍 字符编码的分类 乱码分析 总结 文件操作 三种基本操作 文 ...

  9. 面试之什么是java虚拟机

    java虚拟机体系结构 方法区 堆 java虚拟机栈 本地方法栈 方法区 java虚拟机编译的class文件中二进制数据类型解析数据存在方法区中 是所有线程共享 和存在数据的线程安全问题 当二个线程使 ...

  10. 获取iframe中的tree

    window.frames["iframe_name"].document.getElementById("..."); 或者 window.frames['i ...