gulp 教程

gulp.js 是基于node.js构建的。利用nodejs流的威力

1.

安装nodejs http://www.gezila.com/tutorials/40873.html

2.

安装gulp  http://www.th7.cn/system/mac/201505/104211.shtml

{sudo npm install -g gulp            gulp -v以确认安装成功}                                               

sudo npm install gulp//在项目目录下安装


3.

web项目初使用      项目根目录下 npm init  {生成package.json}          在项目根目录下新建 gulpfile.js

{

var gulp=require('gulp');

gulp.task('default',function() {

console.log('hello gulp');

})

}

4.

安装gulp-uglify(样式压缩) 插件  sudo npm install --save-dev gulp-uglify (作用:压缩js文件等,--save-dev 将uglify注入到package.json中的dependencies中)

使用:在gulpfile.js总填写代码

```

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

gulp.task('script',function() {

gulp.src('js/*.js')//源文件 *表示所有

.pipe(uglify())  //对通道中的文件进行处理

.pipe(gulp.dest('build'));//将处理后的文件输出到文件夹 build 中

})

````

5.

jshint  gulp-jshint(检查js错误)插件 安装:sudo npm install jshint gulp-jshint --save-dev

使用:var jshint=require('gulp-jshint');

gulp.task('jshint',function() {

gulp.src('js/*.js')

.pipe(jshint())

.pipe(jshint.reporter('default'));

})

6.

jshint-stylish(错误样式报告)插件   安装: sudo npm install --save-dev jshint-stylish【作用 错误报告采用更容易看得懂的样式】

使用:varjshintStylish=require('jshint-stylish');

将4中最后一句改为:.pipe(jshint.reporter(jshintStylish));

或者:直接将最后一句改为.pipe(jshint.reporter('jshint-stylish'));

结果:js 文件中警告用蓝色,错误用红色。并在该js文件后给出警告和错误的数量。

7.

map-stream(自定义报告样式 属于nodejs 的包) 安装:sudo npm install --save-dev map-stream

使用:

1.自定义样式

var map=require('map-stream');

var customerReporter=map(function(file,cb) {

if(!file.jshint.success){

console.log('jshint failed in '+file.path);

file.jshint.results.forEach(function(err) {

if(err){

// console.log(err);

console.log("在 "+file.path+" 中第 "+ err.error.line+" 行,"+

"第 "+err.error.character+' 列,有'+err.error.reason+"的错误");

}

})

}

cb(null,file);

});

/*

err 对象

{ file: 'js/tableModel.js',

error:

{ id: '(error)',

raw: 'Missing semicolon.',

code: 'W033',

evidence: '}',

line: 48,

character: 2,

scope: '(main)',

a: undefined,

b: undefined,

c: undefined,

d: undefined,

reason: 'Missing semicolon.' } }

*/

2.使用自定义样式(将4中最后一句修改)

gulp.task('jshint',function() {

gulp.src('js/tableModel.js')

.pipe(jshint())

.pipe(customerReporter);

//.pipe(jshint.reporter(jshintStylish));

});

8

src 的参数  1.*.js 匹配当前目录下的素有js文件。 2.*/*.js 匹配第一次子文件目录下的所有js,第二层使用*/*/*.js        3.**/*.js匹配所有文件夹目录下的所有js文件,包括当前文件。

9.

gulp-concat (合并文件)插件安装:sudo npm install --save-dev gulp-concat

使用:

var gulpConcat=require('gulp-concat');

gulp.task('concat',function() {

gulp.src('build/*.js')//源文件

.pipe(gulpConcat('all.js'))//对pipe中的文件进行合并

.pipe(gulp.dest('jsmin'));//输出到指定目录

});

10.

clean task (清除一个目录下的所有文件)

使用:

gulp.task('clean',function() {

return del('build/*.js');

});

11.

gulp-imagemin (图片压缩插件)安装:sudo npm install --save-dev gulp-imagemin

使用:

var imagemim=require('gulp-imagemin');

gulp.task('imgmin',function() {

gulp.src('pic/*')

.pipe(imagemim())

.pipe(gulp.dest('pic-min'));

});

12

gulp-clean-css(将css压缩为企业文件)  安装:npm install gulp-clean-css --save-dev 

使用:var cssclean=require('gulp-clean-css');

gulp.task('cssClean',function() {

gulp.src('css/*')

.pipe(cssclean({compatibility:'ie8'}))

.pipe(gulp.dest('build'))

});

clean-css 参数

var gulp=require('gulp'),

cssmin=require('gulp-minify-css');

gulp.task('testCssmin',function(){

gulp.src('src/css/*.css')

.pipe(cssmin({

advanced:false,//类型:Boolean 默认:true [是否开启高级优化(合并选择器等)]

compatibility:'ie7',//保留ie7及以下兼容写法 类型:String 默认:''or'*' [启用兼容模式; 'ie7':IE7兼容模式,'ie8':IE8兼容模式,'*':IE9+兼容模式]

keepBreaks:true,//类型:Boolean 默认:false [是否保留换行]

keepSpecialComments:'*'

//保留所有特殊前缀 当你用autoprefixer生成的浏览器前缀,如果不加这个参数,有可能将会删除你的部分前缀

}))

.pipe(gulp.dest('dist/css'));

});

13

gulp-csslint(检查css 错误)  安装:sudo npm install --save-dev gulp-csslint

使用:var csslint=require('gulp-csslint');

gulp.task('cssLint',function() {

gulp.src('css/*.css')

.pipe(csslint())

.pipe(csslint.formatter());

});

14.

csslint-stylish(css 检查报告样式)安装:sudo npm install --save-dev csslint-stylish

使用:{修改13}

var csslint=require('gulp-csslint');

csslint.addFormatter('csslint-stylish');

gulp.task('cssLint',function() {

gulp.src('css/*.css')

.pipe(csslint())

.pipe(csslint.formatter('stylish'))

//.pipe(csslint.formatter());

});

结果:不同错误显示不同颜色

15.

自定义css样式报告

16.

gulp-rename (重命名)插件  安装:npm install --save-dev gulp-rename

使用

varrename=require("gulp-rename");

//rename via string

gulp.src("./src/main/text/hello.txt")

.pipe(rename("main/text/ciao/goodbye.md"))

.pipe(gulp.dest("./dist"));//./dist/main/text/ciao/goodbye.md

//rename via function

gulp.src("./src/**/hello.txt")

.pipe(rename(function(path){

path.dirname+="/ciao";

path.basename+="-goodbye";

path.extname=".md"

}))

.pipe(gulp.dest("./dist"));//./dist/main/text/ciao/hello-goodbye.md

//rename via hash

gulp.src("./src/main/text/hello.txt",{base:process.cwd()})

.pipe(rename({

dirname:"main/text/ciao",

basename:"aloha",

prefix:"bonjour-",

suffix:"-hola",

extname:".md"

}))

.pipe(gulp.dest("./dist"));

17.

gulp-htmlmin (html 压缩) 安装 :npm install --save-dev gulp-htmlmin

使用:

var htmlmin=require('gulp-htmlmin');

gulp.task('htmlMin',function() {

gulp.src('index.html')

.pipe(htmlmin({collapseWhitespace:true}))

.pipe(gulp.dest('html.min'));

});





17.

gulp-sourcemaps  安装 npm install --save-dev gulp-sourcemaps

使用:

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

推荐阅读更多精彩内容

  • 前言 本文默认你已经安装好node环境,并且熟悉node命令,和window cd命令。 gulp简介 基于nod...
    9I阅读 1,942评论 4 50
  • gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学...
    依依玖玥阅读 3,123评论 7 55
  • 对网站资源进行优化,并使用不同浏览器测试并不是网站设计过程中最有意思的部分,但是这个过程中的很多重复的任务能够使用...
    懵逼js阅读 1,026评论 0 8
  • gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学...
    小裁缝sun阅读 897评论 0 3
  • gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学...
    build1024阅读 518评论 0 0