在很多场合都会听到前端工和 node 程师推荐 Grunt 来实现项目的自动化,自动化可以自动完成 javascript/coffee/sass/less 等文件的的测试、检查、合并、压缩、格式化、部署文件生成,并监听文件在改动后重复指定的这些步骤。

  得益于 Grunt 基于任务的设计模式,这些步骤可以很好的归类执行,让开发效率得到了一次提升,但杀敌 1000,得自损 800 啊,学习曲线有点高,Gruntfile配置任务很难理解,经常容易忘记。

  Grunt.js 太复杂了,复杂到比使用和配置 Vim 都困难,之前写过得《前端自动化如何利用grunt优化项目?》,glup比较简单,配置逻辑便于理解,效率更高、健壮性更好。

  Gulp构建系统

  Gulp是一个构建系统,开发者可以使用它在网站开发过程中自动执行常见任务。

  比如编译预处理CSS,压缩JavaScript和刷新浏览器,来改进网站开发的过程。  

  官网:http://gulpjs.com/
  插件:http://gulpjs.com/plugins/ 或 http://npm.taobao.org/

  一、Gulp安装

  1.Gulp是基于Node.js构建的,所以要先安装node.js。

  2.安装Gulp的过程十分简单。首先,需要在全局安装Gulp包:

npm install -g gulp  //全局安装

  3.然后,在项目目录安装Gulp:

npm install --save-dev gulp

  4.查看gulp是否安装成功

gulp -v

  二、安装常用gulp插件

* sass的编译(gulp-ruby-sass)
* 自动添加css前缀(gulp-autoprefixer)
* 压缩css(gulp-minify-css)
* js代码校验(gulp-jshint)
* 合并js文件(gulp-concat)
* 压缩js代码(gulp-uglify)
* 压缩图片(gulp-imagemin)
* 自动刷新页面(gulp-livereload)
* 图片缓存,只有图片替换了才压缩(gulp-cache)
* 更改提醒(gulp-notify)
* 清除文件(del)

  三、创建配置文件 gulpfile.js

  在项目的根目录创建配置文件 gulpfile.js,Gulp 仅有 5 个方法就能组合出你需要的任务流程:task, run, watch, src, dest

//    js/app.js:指定确切的文件名。
//    js/*.js:某个目录所有后缀名为js的文件。
//    js/**/*.js:某个目录及其所有子目录中的所有后缀名为js的文件。
//    !js/app.js:除了js/app.js以外的所有文件。
//    *.+(js|css):匹配项目根目录下,所有后缀名为js或css的文件。//引入gulp插件node模块
var gulp = require('gulp'),sass = require('gulp-ruby-sass'),autoprefixer = require('gulp-autoprefixer'),//gminifycss = require('gulp-minify-css'),compass = require("gulp-compass"),jshint = require('gulp-jshint'),sourcemaps = require('gulp-sourcemaps'),minicss = require('gulp-mini-css'),connect = require('gulp-connect'),rename = require('gulp-rename'),uglify = require('gulp-uglify'),imagemin = require('gulp-imagemin'),concat = require('gulp-concat'),livereload = require('gulp-livereload'),notify = require('gulp-notify');//Gulp 仅有 5 个方法就能组合出你需要的任务流程:task, run, watch, src, dest// 定义web模块,类似于全局的http-servergulp.task('http-server', function() {connect.server({livereload: true});});//gulp.task(name, fn)gulp模块的task方法,用于定义具体的任务。它的第一个参数是任务名,第二个参数是任务函数。gulp.task('uglify',function(){//gulp.src(glob)返回了一个可读的stream,如此行返回了./js/*.js下的全部gulp.src('./js/*.js').pipe(uglify())//gulp.dest(glob)返回一个可写的stream,如此行是将文件流写入到 ./dist/js 里的对应路径下            .pipe(gulp.dest('./dist/js')).pipe(notify({message:'可以了 ok !'}))})//压缩样式gulp.task('mincss',function(){gulp.src('./css/*.css').pipe(mincss()).pipe(gulp.dest('./dist/js'))})// 创建Compass任务gulp.task('compass', function() {gulp.src('./scss/**').pipe(compass({comments: false,css: 'css',sass: 'scss',image: 'img'}));});    //编译sassgulp.task("sass",function(){gulp.src('./scss/.scss').pipe(sourcemaps.init()).pipe(sass()).pipe(mincss()).pipe(sourcemaps.write('/')).pipe(gulp.dest('./css/*.css'))})//检查jsgulp.task("jshint",function(){gulp.src("./js/.js").pipe(jshint()).pipe(jshint.reporter('default')); //导入到模块任务里面
    })// 合并、压缩文件gulp.task('scripts', function() {gulp.src('./js/*.js').pipe(concat('all.js')).pipe(gulp.dest('./dist/js')).pipe(rename('all.min.js')).pipe(uglify()).pipe(gulp.dest('./dist/js')).pipe(livereload())});    //压缩图片gulp.task('imagemin',function(){gulp.src('./image/*.*').pipe(imagemin()).pipe(gulp.dest('./dist/image')).pipe(notify({message:'compress ok !'}))})// 检测HTML变化并刷新gulp.task("html",function(){gulp.src('*.*').pipe(livereload());        })//定义名为"watch"的任务gulp.task('watch',function(){gulp.watch('./image/*.*');gulp.watch('./js/*.js');gulp.watch('./css/*.css');gulp.watch('./scss/*.scss');})    //每个gulpfile.js里都应当有一个dafault任务,它是缺省任务入口(类似C语言的main()入口),运行gulp的时候实际只是调用该任务(从而来调用其它的任务)gulp.task('default',function(){//gulp.run(tasks)表示运行对应的任务,这里表示执行名gulp.run('uglify','imagemin','compass');//执行'watch'监听任务gulp.run('watch');    // 监听文件变化
        gulp.watch(['*.*','./scss/**', './img/**','./js/*.js'], function() {livereload.listen();gulp.run('compass', 'lint', 'html', 'sass','imagemin','scripts');});        })

  四、运行gulp

  通过gulp+任务名称,就可以运行gulp例

gulp watch

  参考资料:Gulp.js 参考手册,自动化构建利器

       是时候搁置Grunt,耍一耍gulp了

       Gulp前端自动化工具 

       Gulp:任务自动管理工具   

       yeoman自动化处理 

       BrowserSync,迅捷从免F5开始 

Gulp 自动化的项目构建工具相关推荐

  1. Java项目构建工具Gradle是否可以完全替代Maven?

    前言 在Java项目的开发中,需要引入自动化构建工具来帮助我们管理项目的外部依赖包.项目编译.打包等工作.Gradle和Maven是Java世界中两个重要的自动化构建工具,在项目中我们在两者之间如何选 ...

  2. Java技术:项目构建工具Maven最佳替代者gradle介绍

    Maven作为一款非常流行的项目构建工具.基本上是每个Java程序员必备的工具,当然Maven有一些地方不足之处: 1. Maven的配置文件是XML格式的,如果你的项目工程依赖的包很多,那么XML文 ...

  3. Maven项目构建工具

    目录 1.Maven介绍 1.1Maven是什么 1.2为什么要使用maven 2.Maven安装 2.1下载Maven: 2.2解压并配置 2.3编辑Maven环境变量 2.3.1检查JDK环境变量 ...

  4. 【Parcel 2 + Vue 3】从0到1搭建一款极快,零配置的Vue3项目构建工具

    前言 一周时间,没见了,大家有没有想我啊!哈哈!我知道肯定会有的.言归正传,我们切入正题.上一篇文章中我主要介绍了使用Vite2+Vue3+Ts如何更快的入手项目.那么,今天我将会带领大家认识一个新的 ...

  5. gulp 4.0--前端构建工具基本环境搭建及使用

    Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务: 搭建web服务器 文件保存时自动重载浏览器 使用预处理器如Sass,Less 优化资源,比如压缩CSS,JavaScript,压缩图片 ...

  6. Maven与Gradle项目构建工具

    目录 一.Maven介绍 一.maven介绍 二.分模块开发 继承!!!parent!!! 聚合!!! module!!! Dependencies和dependencyManagement Buil ...

  7. python 项目构建工具_python的构建工具setup.py

    一.构建工具setup.py的应用场景 在安装python的相关模块和库时,我们一般使用 "pip install 模块名" 或者 "python setup.py in ...

  8. JavaScript 项目构建工具 Grunt 实践:安装和创建项目框架

     Grunt 是一个基于任务的 JavaScript 项目命令行构建工具,运行于 Node.js 平台.Grunt 能够从模板快速创建项目,合并.压缩和校验 CSS & JS 文件,运行单元测 ...

  9. python项目构建工具zc.buildout

    转载:http://blog.csdn.net/u011630575/article/details/52940099 buildout简介 Buildout 是一个基于Python的构建工具, Bu ...

最新文章

  1. 应该使用c# 预定义类型 还是绝对不要使用预定义类型。
  2. mysql5.7多实例安装_MySQL数据库5.7多实例安装
  3. Windows 8让程序员们忧心忡忡
  4. linux 鬼精灵漏洞,鬼精灵Grinch:比Bash破壳(shellshock)更严重的Linux漏洞
  5. python网络通信框架_Python运维-Socket网络编程 (1)
  6. Python爬虫之Scrapy框架使用selenium
  7. GUI编程与CLI编程
  8. mac共享单个磁盘_如何与您的所有设备共享酒店的单个Wi-Fi连接
  9. 浅析 Sunday 算法
  10. 28--仅仅反转字母
  11. ubuntu要更新18.04了,lei了lei了~~~
  12. [Swift]LeetCode1017. 负二进制转换 | Convert to Base -2
  13. TimeOut 超时问题解决方案
  14. sort -nr作用 linux,【Linux高频命令专题(1)】sort
  15. [抄]使用网页进行展示而非PPT
  16. 将bin文件以16进制字符显示
  17. java全局校验拦截器
  18. PDF控件PDF Creator V5.5.2.3发布 | 支持插入PDF417条形码
  19. 谷歌翻译插件安装使用
  20. 微信小程序制作天气查询系统

热门文章

  1. 英国前首相:为什么欧洲没有诞生互联网巨头?
  2. 十年之后,数字孪生将这样改变我们的工作与生活
  3. 干货|120页精华PPT详解工业机器人本体设计运算及仿真
  4. 20岁的谷歌,和它“最成功”的大败笔
  5. 专家谈计算机体系架构研究获“图灵奖”
  6. 在这场人工智能“战争”中,这些国家都在做些什么?
  7. 天才黑客 Flanker 疑因拒绝做黑客被拼多多强行辞退
  8. Docker 学习6 Docker存储卷
  9. IBMDB2数据库软件安装教程
  10. vnx vmax分盘过程