博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从零开始用gulp
阅读量:6956 次
发布时间:2019-06-27

本文共 3537 字,大约阅读时间需要 11 分钟。

gulp是基于流的前端构件化工具。目前比较火的前端构建化工具还是挺多的,grunt gulp fis3等等。

这个鬼东西有什么用?请参考https://www.zhihu.com/question/35595198

为什么选择gulp,因为使用非常简单,学习成本低。以后想用别的工具再转去学也不难。

一个自动化构建工具都没用过的前端,何以谈人生?

 

以下是正题

1.要玩gulp,首先得安装node,因为npm跟随node的包安装管理工具。具体下载直接百度nodejs中文网,根据自身的环境(windows linux mac)下载安装包(msi)。直接进行傻瓜式安装。

2.安装完node后开始全局安装gulp, 在命令行输入命令 npm install -g gulp ,安装成功后就可以在命令行输入gulp相关的命令了,例如gulp -v查看当前版本号。(npm安装不成功建议在命令前加sudo 或将 npm 换 cnpm 再试试)

3.在项目中安装 npm install --save-dev gulp,安装成功后就可以开始写配置文件了。

4.在项目根目录中创建文件  gulpfile.js

以下是简单的gulpfile.js  demo代码

代码这种东西一开始不会写,就先抄,抄着抄着就懂怎么写了。

//引入插件var gulp = require('gulp');var less = require('gulp-less');//需要npm install --save-dev gulp-lessvar paths = ['./css/*.less'];  //定义一个数组,指定文件路径 //下面开始编写一个任务//less编译任务 gulp.task('less', function() {   //创建一个gulp任务,任务名字是'less',然后一个回调函数    return gulp.src(paths)    //gulp任务操作的源文件'paths'           .pipe(less())         //执行less编译           .pipe(gulp.dest('./css'));  //gulp任务输出的新文件});//watch监听任务gulp.task('watch', function(){   //创建第二个gulp任务,任务名字是‘watch',然后一个回调函数    gulp.watch(paths,['less']);  //gulp的watch监听,文件改动后立即重新执行less任务 可参考http://www.gulpjs.com.cn/docs/api/});//gulp.watch('default',['less']);gulp.task('default', ['less','watch']);  //gulp的default任务,相当于glup的执行入口。然后把less任务和watch放进来,该脚本就会执行这两个任务

 

把以上代码写入gulpfile.js 后保存,然后项目根路径下执行命令 

gulp

就开始执行gulp完成你安排的任务。

日常开发中需要gulp做的有很多如合并文件(gulp-concat)压缩(gulp-uglify)重命名(gulp-rename)等等。

这就需要自己编写task来让gulp来执行。

最后总结一下,写好一个gulpfile.js很简单,结合demo代码和下面五个命令

gulp.task(name, fn)//新建一个gulp任务,name是任务名,fn回调函数gulp.run(tasks...)//尽可能多的并行运行多个task 新版本中的gulp中使用run会发出警告,这样的情况下我们可以用start代替gulp.watch(glob, fn//)当glob内容发生改变时,执行fngulp.src(glob)//返回一个可读的streamgulp.dest(glob)//返回一个可写的stream

 需要更多的说明或者操作可以去下面的网站逛一逛

gulp官方网址:

gulp插件地址:

最后简单写就几个常用的gulp task,方便日后调用

一、压缩css

var minifycss = require('gulp-minify-css');//引用插件,需npm install --save-dev gulp-minify-css

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

return gulp.src('src/css/*.css') //压缩的文件
.pipe(minifycss()) //执行压缩
.pipe(gulp.dest('dst/css')); //输出文件夹
});

 

二、压缩js

var concat = require('gulp-concat'),    uglify = require('gulp-uglify'),    rename = require('gulp-rename');  //引用插件,需npm install --save-dev xxxxxxgulp.task('minifyjs', function() {    return gulp.src('src/*.js')  //操作的源文件        .pipe(concat('main.js'))    //合并所有js到main.js        .pipe(gulp.dest('minified/js'))    //输出main.js到文件夹        .pipe(rename({suffix: '.min'}))   //rename压缩后的文件名        .pipe(uglify())    //压缩        .pipe(gulp.dest('minified/js'));  //输出});

 三、清空输出目录

var del =require('del'); gulp.task('clean', function() { return del(['dst']);  //'dst'是一个目录 });
四、压缩图片
const imagemin = require('gulp-imagemin'); gulp.task('default', function(){    return gulp.src('src/images/*')           .pipe(imagemin())           .pipe(gulp.dest('dist/images'));});

五、压缩html

var gulp = require('gulp'),    htmlmin = require('gulp-htmlmin'); gulp.task('htmlMin', function () {    var options = {        removeComments: true,//清除HTML注释        collapseWhitespace: true,//压缩HTML        collapseBooleanAttributes: true,//省略布尔属性的值  ==>         removeEmptyAttributes: true,//删除所有空格作属性值  ==>         removeScriptTypeAttributes: true,//删除

六、合并文件

var concat = require('gulp-concat'); gulp.task('concat', function () {    gulp.src('src/js/*.js')        .pipe(concat('all.js'))//合并后的文件名        .pipe(gulp.dest('dist/js'));});

七、css自动处理浏览器前缀,如添加-webkit-解决浏览器兼容问题

var autoprefixer = require('gulp-autoprefixer'); gulp.task('autoprefixer', function () {    gulp.src('css/index.css')        .pipe(autoprefixer())        .pipe(gulp.dest('dist/css'));});

 

转载地址:http://abvil.baihongyu.com/

你可能感兴趣的文章
linux下性能监控
查看>>
L4.三.元祖md
查看>>
Zabbix数据库表分区
查看>>
自动化运维工具之ansible
查看>>
XGBoost:在Python中使用XGBoost
查看>>
HDU 4687 Boke and Tsukkomi
查看>>
一个例子看懂所有nodejs的官方网络demo
查看>>
全文检索
查看>>
JSP三种常用注释
查看>>
iOS开发——高级技术&地图功能的实现
查看>>
SVN服务器搭建和使用(一)
查看>>
Android Studio 默认的快捷键
查看>>
FindWindow 查找窗口
查看>>
3027 线段覆盖 2
查看>>
JDBC处理文本和二进制文件
查看>>
菜单联动 加翻页
查看>>
GDB中打印ART基础类
查看>>
DFS-C
查看>>
POJ-2698-八皇后问题
查看>>
MySQL免安装版配置问题
查看>>