gulp浅显易懂的入门

gulp是什么?

gulp是工具链、构建工具,可以配合各种插件做js压缩,css压缩,less编译 替代手工实现自动化工作。

1.构建工具
2.自动化
3.提高效率用

基于流(streaming)的方式构建,首先读取文件,编译压缩文件(流的方式),最终将结果生成到配置的文件目录下。

初步使用 (先简单压缩CSS,JS体验一下)

环境配置

1.首先,安装nodejs.去官网,download.根据自己的系统版本下载安装.
安装好node以后,自带安装好npm。推荐使用cnpm,速度快一点。

2.我们接下来的步骤需要使用命令行,推荐使用git bash。
在你要运行gulp的文件夹目录里,右键,使用git bash,开始敲命令。


git bash here.png

先敲个node -vnpm -v 检测一下安装好了没有。
如果出现版本号就是对的。

看一下版本号.png

因为使用的git bash,所以在哪里右键的就会在哪个菜单定位。如果是使用windows自带命令行的话,需要使用cd命令进入菜单,查看文件目录需要使用dir。

3.接下来全局安装gulp
cnpm install -g gulp
需要管理员权限,我是win10系统,右键开始菜单以管理员身份运行命令行,执行该命令。后面如果安装什么插件的时候提醒需要管理员权限,也是以同样的方式。
接下来进入项目文件,将gulp安装到开发环境。
执行cnpm install --save-dev gulp
我们使用-save-dev来更新package.json文件,更新devDependencies值,以表明项目需要依赖gulp。

4.新建gulpfile文件
在项目的根目录新建gulpfile.js文件。待会写入内容。
先介绍一下,gulp只有五个方法:

task(用来定义任务)
run(执行某任务,在后面定义default或者.watch监听任务变动时会用到)
watch(监听,当有文件变化时,会运行回调定义的其他任务)
src(用来定义要编译的源文件路径)
dest(定义编译完的文件输出路径)

5.安装插件。
gulp-minify-css: 压缩css
gulp-jshint: 检查js
gulp-uglify: 压缩js
gulp-concat: 合并文件
gulp-rename: 重命名文件
gulp-clean: 清空文件夹
gulp-notify:提示
安装gulp-jshint可能会遇到一些问题,需要先安装jshint。

cnpm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename --save-dev

我的文件夹目录新建了一个assets用来存放编译过的文件,
stylesheets存放样式文件,javascripts存放js文件。

在gulpfile.js里写入:

// 引入 gulp及组件
var gulp=require('gulp'),  //gulp基础库
    minifycss=require('gulp-minify-css'),   //css压缩
    concat=require('gulp-concat'),   //合并文件
    uglify=require('gulp-uglify'),   //js压缩
    rename=require('gulp-rename'),   //文件重命名
    jshint=require('gulp-jshint'),   //js检查
    notify=require('gulp-notify');   //提示


 
//css处理
gulp.task('minifycss',function(){
   return gulp.src('stylesheets/*.css')      //设置css
       .pipe(concat('order_query.css'))      //合并css文件到"order_query"
       .pipe(gulp.dest('assets/styles'))           //设置输出路径
       .pipe(rename({suffix:'.min'}))         //修改文件名
       .pipe(minifycss())                    //压缩文件
       .pipe(gulp.dest('assets/styles'))            //输出文件目录
       .pipe(notify({message:'css task ok'}));   //提示成功
});

//JS处理
gulp.task('minifyjs',function(){
   return gulp.src(['javascripts/*.js'])  //选择合并的JS
       .pipe(concat('order_query.js'))  //合并js
       .pipe(gulp.dest('assets/js'))       //输出文件目录
       .pipe(rename({suffix:'.min'}))    //重命名
       .pipe(uglify())                    //压缩
       .pipe(gulp.dest('assets/js'))            //输出 
       .pipe(notify({message:"js task ok"}));    //提示
});

gulp.task('default',function(){
    gulp.start('minifycss','minifyjs');
});

运行,命令行里输入gulp
或者gulp 任务名可以单运行某一个任务,例如 gulp minifyjs
到这里初步可以看到压缩的成果啦。

如果想要更改了文件后自动监听到变化并重新编译,可以使用.watch()方法。

定义default任务。这个任务是基于其他任务的。命令行只写一个gulp时,会自动运行default里的命令,可以用它将所有的任务关联起来,加入监听.watch,这样当文件出现修改变动时,将会自动重新编译。
注意一点坑的是:写文件路径,我一开始多写了一个斜杠,写成了'/stylesheets/*.less',于是就没有运行成功。改好后果然每次修改都会重新编译。

gulp.task('default', function(){
    gulp.start('minifycss','minifyjs','testLess');
    gulp.watch('stylesheets/*.less', function(){
        gulp.start('testLess');
    });
});



更新几个新的发现

gulp-changed

只对修改过的文件进行编译或者打包,没动过的直接输出(我遇到了问题,changed似乎不生效,每次修改后重新编译仍然会运行所有的文件)

var gulp   = require('gulp');
var changed = require('gulp-changed');
var uglify = require('gulp-uglify');

gulp.task('changed',function(){
  return gulp.src('./js/*.js') // 监视文件:js目录下所有的js文件
    .pipe(changed('./dist'))  // 过滤未修改文件,需要指定文件输出目录
    .pipe(gulp.dest('./dist'));  // 输出文件
});

gulp.task('compress',['changed'], function() {
  return gulp.src('./js/*.js') // 压缩文件:js目录下所有的js文件
    .pipe(plumer()) //异常处理
    .pipe(uglify())  // 使用uglify插件执行压缩操作
    .pipe(gulp.dest('./dist'));  // 输出压缩后的文件
});

gulp-plumber

使用gulp watch 对文件进行热监控时,如果出现问题,会直接停止watch,还需要在控制台再次运行。
用gulp-pumber后出现异常会在控制台显示错误,但并不中断watch,当错误修改好后还可以继续执行watch。

npm install --save-dev gulp-plumber
gulp.task('compress',['changed'], function() {
  return gulp.src('./js/*.js') // 压缩文件:js目录下所有的js文件
  .pipe(plumer()) //异常处理
    .pipe(uglify())  // 使用uglify插件执行压缩操作
    .pipe(gulp.dest('./dist'));  // 输出压缩后的文件
});

browersync

可以在pc、手机、pad上多端同时查看页面效果并且不用手动刷新!
炒鸡方便!

cnpm install -gd browser-sync

安装好后进入项目的根路径,输入

brower-sync start --server --files "**"

会启动一个小型的web应用服务器。--files "**"表示监视根路径下所有文件的修改情况,当文件被修改保存时,修改内容会实时同步到web浏览器中,控制台会显示url信息。

localhost:3000 默认地址
localhost:3001 访问设置页面

gulp也有插件.只是我这里装了gulp的插件后需要手动刷新
安装

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

推荐阅读更多精彩内容

  • 对网站资源进行优化,并使用不同浏览器测试并不是网站设计过程中最有意思的部分,但是这个过程中的很多重复的任务能够使用...
    懵逼js阅读 1,053评论 0 8
  • gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学...
    小裁缝sun阅读 916评论 0 3
  • 1、gulp的安装 首先确保你已经正确安装了nodejs环境。然后以全局方式安装gulp: npm install...
    F_imok阅读 2,344评论 1 11
  • 编辑于2015年 转载自某作者的译文 作者要是看到请联系我注明出处 对网站资源进行优化,并使用不同浏览器测试并不是...
    krock01阅读 444评论 0 2
  • gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学...
    依依玖玥阅读 3,146评论 7 55