【二】gulp之用gulp-concat合并js文件

还记得上一篇我说的那个js文件合并的例子吗?这一篇我们就来做这个

  • 1) 目录结构
Paste_Image.png
  • 2)安装合并所需插件

gulp做文件合并,需要借助一个插件 gulp-concat

npm install gulp-concat
  • 3)新建gulpfile.js 写入以下代码

合并所有js为一个文件

//调用gulp模块
var gulp = require('gulp')
//调用js文件合并插件
var concat = require('gulp-concat');

//用gulp建立一个all_to_one任务
gulp.task('all_to_one', function() {
  return gulp.src('scripts/**/*.js')
    .pipe(concat('all.js'))
    .pipe(gulp.dest('js'));
});

说明

  • A. gulp.src()的作用是找到需要处理的文件(这里我们需要处理的是 scripts目录中所有的js文件)
    参数格式为:gulp.src(globs[, options])
    globs:类型: String 或 Array 所要读取的 glob 或者包含 globs 的数组。
    glob 请参考 node-glob 语法 或者,你也可以直接写文件的路径。
    options:额外的选项参数,相关解释请参见:options文档

  • B. pipe() 理解为管道,想象gulp处理文件为一个水管,gulp.src()负责进需要过滤的水(进水口),pipe()负责处理进入的水(例如:过滤杂质插件,过滤有害物质...等插件);参数就是要对水执行的操作,例子中传入了插件 gulp-concat暴露的 concat 方法,方法参数为最后处理之后的文件名(all.js);
    详细用法见:gulp-concat文档

  • C.gulp.dest()的作用是将管道中处理过的文件流重新输出到某位置(路径下);
    参数格式:gulp.dest(path[, options])
    path 类型: String or Function
    文件将被写入的路径(输出目录)。也可以传入一个函数,在函数中返回相应路径,这个函数也可以由 vinyl 文件实例 来提供。
    options 类型: Object

options.cwd
类型: String 默认值: process.cwd()
输出目录的 cwd 参数,只在所给的输出目录是相对路径时候有效。
options.mode
类型: String 默认值: 0777
八进制权限字符,用以定义所有在输出目录中所创建的目录的权限。
  • D.gulp.dest() 可以将它 pipe 到多个文件夹。如果某文件夹不存在,将会自动创建它;
gulp.src('./client/templates/*.jade')
  .pipe(jade())
  .pipe(gulp.dest('./build/templates'))
  .pipe(minify())
  .pipe(gulp.dest('./build/minified_templates'));
  • 4) 运行任务
Paste_Image.png
  • 5) 运行结果
Paste_Image.png

能否将类库文件和普通js文件分别合并?

代码

//调用gulp模块
var gulp = require('gulp')
var concat = require('gulp-concat');
var sourcemaps = require('gulp-sourcemaps');

//用gulp建立一个javascript任务 依赖 lib 任务
gulp.task('javascript',['lib'], function() {
  return gulp.src(['scripts/**/*.js','!scripts/lib/*.js'])
    .pipe(concat('index.js'))
    .pipe(gulp.dest('js'));
});

//用gulp建立一个合并类库文件的任务
gulp.task('lib', function() {
  return gulp.src('scripts/lib/*.js')
    .pipe(concat('vendor.js'))
    .pipe(gulp.dest('js'));
});

运行任务(javascript 任务依赖 lib 任务 所以 lib 任务会先执行,然后再执行 javascript任务)

Paste_Image.png

运行结果

Paste_Image.png

OK ! 文件已生成,接下来引用文件,不用我再废话了吧~~~

<script src="js/vendor.js"></script>
<script src="js/index.js"></script>

注:本系列文章只做简单入门,深入了解请自行修行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容