Scales小谈gulp
gulp是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务。
外网:http://gulpjs.com/
中文官网:http://www.gulpjs.com.cn/

易于使用
通过代码优于配置的策略,Gulp 让简单的任务简单,复杂的任务可管理。
构建快速
利用 Node.js 流的威力,你可以快速构建项目并减少频繁的 IO 操作。
插件高质
Gulp 严格的插件指南确保插件如你期望的那样简洁高质得工作。
易于学习
通过最少的 API,掌握 Gulp 毫不费力,构建工作尽在掌握:如同一系列流管道。
gulp其功能就是将代码放在管道顶部,自由垂落,经过管道的每个片段处理过程,从而实现了对代码的整体处理,最后落入目标目录,一句话“流的感觉”
gulp安装:
gulp基于node,要先安装node,然后命令行输入 npm install -g gulp --save-dev (-g:全局安装;--save-dev将gulp加入package.json开发依赖项)
安装gulp常用插件:
npm install -g gulp-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache --save-dev
项目:
1、创建目录scale,在其下面创建learn-gulp项目目录,目录里存放css、js文件
2、安装局部gulp和局部gulp插件,安装方法与上面相同(不安装局部无法操作项目)
3、创建gulpfile.js文件
目录结构,如图:

编写gulpfile.js
多少年的老规矩了上代码:
var gulp = require("gulp"), //加载gulp模块
concat = require("gulp-concat"),
minify = require("gulp-minify-css"), //加载插件模块
uglify = require("gulp-uglify"),
livereload = require("gulp-livereload"),
rename = require("gulp-rename");
// 合并,压缩css文件
gulp.task('css', function() { //任务名(必须是字符串)
gulp.src('learn-gulp/*.css')
.pipe(concat('all.css'))
.pipe(minify())
.pipe(rename('all.min.css')) //{suffix:'.md'}(加后缀的)
.pipe(gulp.dest('dist'));
});
//合并,压缩js文件
gulp.task('script', function() {
gulp.src('learn-gulp/*.js')
.pipe(concat('all.js'))
.pipe(uglify())
.pipe(rename('all.min.js'))
.pipe(gulp.dest('dist'));
});
// 默认任务
gulp.task('default', ['css','script']); //默认执行的任务,可以为多个,写成数组即可
// 监听文件变化
gulp.watch(['learn-gulp/*.css', 'learn-gulp/*.js'], ['css','script']); //找到src源,监听其是否变化,若变化根据src源找到对应task执行
坑一:必须局部安装gulp、gulp插件(node.js command prompt 运行,即node的命令行gulp相关命令)
坑二:任务名必须是string,且不能用gulp的关键字
坑三:不同的任务必须分开写,不能写在一个任务里(不然执行不了)
Scales小谈gulp的更多相关文章
- scales小谈grunt
Grunt是基于Node.js的项目构建工具.它可以自动运行你所设定的任务.Grunt拥有数量庞大的插件,几乎任何你所要做的事情都可以用Grunt实现. 一头野猪映入眼帘,意:咕噜声 中文网站:htt ...
- DevStore开发人员服务有奖征文:小谈新浪微博开放平台
DevStore开发人员服务有奖征文:小谈新浪微博开放平台 笔者接入新浪微博开发平台也有一段时间了,对整个平台的接入也算比較熟悉,新浪提供了统一的API接口,能够让开发人员更方便的使用API来实现自己 ...
- 小谈Java里的线程
今天,我们来谈一谈Java里的线程. 一.进程与线程的基本概念 大家可能没听过线程这个概念,但是相信,用计算机的朋友都听过进程这个概念.打开电脑的任务管理器,我们就可以看到许多进程.它们主要分为三类, ...
- 微信小程序 - gulp插件压缩(代码、图片等)
最后更新时间: 2018.7.18 :更新了所有package.json插件版本以及修复极个别问题. 2018.8.12 : 增加提示,所有标签必须闭合(不然打包会报错) 2018.10.13:需要用 ...
- 微信小程序——gulp处理文件
懒癌直接贴代码,想写在写因为最近搞了一下小程序,直接使用微信的开发者工具搞感觉有点不习惯,并且看了几篇给小程序瘦身的博客,决定给自己的项目做一套配置文件,使用gulp来支持sass scss文件编译以 ...
- 小谈Scrum敏捷开发流程
一晃眼,有两年没有写博客了,回顾前两年,各种奔波,各种忙碌,也有不少的收获.从今天开始,我要把这些收获都分享在这里. 其实这两年,对我影响最大的是开发流程.总所周知,一个好的开发流程,对于项目的进行, ...
- iOS 小谈开发者中的个人、组织(公司、企业)账号
苹果对开发者主要分为3类:个人.组织(公司.企业).教育机构.即: 1.个人(Individual) 2.组织(Organizations) 组织类又分为2个小类: (1)公司(Company) (2 ...
- Http与Socket小谈
http与socket是网络编程中最为重要的概念,不管是客户端还是服务端,都是最为重要的部分,以下简述两者的关系和区别(个人见解). Http 定义 基于应用层的超文本传输协议.通常承载于TCP/IP ...
- 小谈 - web模仿手机打电话与正则表达式
昨天遇到了一个很棘手的问题,就是手机端调用web端的页面,如果用编辑器插入的内容页面中有电话的的数据就要变一下格式,让手机端可以实现拨号的功能. 研究了半天就是没一点头绪,但是偶尔看到数据中每一个电话 ...
随机推荐
- MySQL 的相关语句(增删改查)(SQLyog软件实现)
-- 创建雇员表:emp CREATE TABLE emp( empno INT, -- 员工编号 ename ), -- 员工姓名 job ), -- 员工工作 mgr INT, -- 领导编号 h ...
- 【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子
Android 开发了一段时间,一方面 ,感觉不留下点什么.有点对不起自己, 另一方面,好记性不如烂笔头,为了往后可以回头来看看,就当做是笔记,便决定开始写博客.废话不多说 ! 今天想搞一搞 ndk ...
- android handler传递消息机制
当工作线程给主线程发送消息时,因为主线程是有looper的,所以不需要初始化looper,注意给谁发消息就关联谁的handler,此时用的就是主线程的handler handler会把消息发送到Mes ...
- ThinkPHP3快速入门教程三:查询语言
一.查询语言简介: ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作,查询条件可以用于读取.更新和删除等操作,主要涉及到where方法等连贯相关方法操作即可, 此框架查询系统可以解 ...
- OAuth2.0 四种授权模式
OAuth2.0简单笔记(四种授权模式) 金天:坚持写东西,不是一件容易的事,换句话说其实坚持本身都不是一件容易的事.如果学习有捷径,那就是不断实践,不断积累.写笔记,其实是给自己看的,是体现积累的一 ...
- Linux下安装tar.gz类型的jdk,并配置环境变量
近期因要学习一门技术,必须在Linux下运行,故开始学习如何使用Linux. 在安装jdk时出现了困难,环境变量配置不成功,花了一天时间才搞定,特分享出来,供大家参考. Linux下安装jdk,步骤如 ...
- LINUX下的PHP
由于linux系统的稳定性,大部分的PHP服务器都被部署在linux上,而且像redis等扩展在linux能得到更好的支持,所以对于PHP程序员来说,使用linux的功底也相当重要,接下来总结一下我从 ...
- [转]html超链接打开的窗口大小
<a href="#" onclick="javascript:window.open('http://www.baidu.com','','height=20,w ...
- 使用Struts框架,实现用户登陆功能
前言:本篇文章是本人这周学习的一个小结,在自我总结的同时,希望也能够给其他同学带来一点帮助.本文主要知识是参照书本上的知识点以及网上其他博客文章,在上机操练后的所得,具体源码主要来自http://bl ...
- 【2016-11-6】【坚持学习】【Day21】【子窗口关闭时,同步关闭它的主窗口(方法二)】
根据上文,在子窗口设置一个委托.然后在子窗口关闭事件,执行委托实例,然后在主窗口增加监听委托的方法.... 想想,本事关闭事件就是一个特殊的委托.那么干嘛还要特意去声明一个新的呢?多此一举. 于是有下 ...