gulp例子:https://github.com/Aquarius1993/gulpDemo
淘宝镜像:$ npm install -g cnpm --registry=https://registry.npm.taobao.org
 
一 入门:
         npm: node package manager(前提是安装了node)
          1.1 全局安装   npm install --global gulp
          1.2 作为项目依赖安装  npm install --save--dev gulp
          1.3 在项目根目录下创建一个名为  gulpfiel.js  的文件   
                   var gulp = require('gulp');
gulp.task('defalut',function () {
     // body... 
});  
mac用户需要管理员的身份才能全局安装,所以:sudo npm install gulp -g
   
二 选择gulp组件
通过gulp plugins,寻找对于的gulp组件
gulp-imagemin: 压缩图片
gulp-ruby-sass: 支持sass
gulp-less:编译less
gulp-minify-css: 压缩css   在minicss()中加

"compatibility": "ie7"
gulp-cssnano:压缩css
gulp-jshint: 检查js     
gulp-uglify: 压缩js
gulp-concat: 合并文件
gulp-rename: 重命名文件
gulp-htmlmin: 压缩html
gulp-clean: 清空文件夹
gulp-livereload: 服务器控制客户端同步刷新(需配合chrome插件LiveReloadtiny-lr
gulp-cssnano:压缩css
Browser Sync 帮助我们搭建简单的本地服务器并能实时刷新浏览器 它还能 同时刷新多个设备
gulp-useref会将多个文件拼接成单一文件,并输出到相应目录。
安装组件: npm install gulp-util gulp-imagemin gulp-ruby-sass gulp-minify-css gulp-jshint gulp-uglify gulp-rename gulp-concat gulp-clean gulp-livereload tiny-lr --save-dev
三 项目目录结构
project(项目名称)
|–.git 通过git管理项目会生成这个文件夹
|–node_modules 组件目录
|–dist 发布环境
    |–css 样式文件(style.css style.min.css)
    |–images 图片文件(压缩图片)
    |–js js文件(main.js main.min.js)
    |–index.html 静态文件(压缩html)
|–src 生产环境
    |–sass sass文件
    |–images 图片文件
    |–js js文件
    |–index.html 静态文件
|–.jshintrc jshint配置文件
|–gulpfile.js gulp任务文件
 
四 基础语法
gulp通过gulpfile.js文件来完成相关任务,所以项目中必须包含gulpfile.js
gulp有5个方法:src  dest task run watch
src dest:指定源文件和处理后文件的路径
watch 用来监听文件的变化
task 指定任务
run 执行任务
五 创建Gulp项目
     在项目文件夹下执行  npm init 
     作用是:会在项目本地建立一个package.json文件,用来保存项目的各种依赖,终端的提示都可默认。

创建完之后,我们执行下面的命令:npm install gulp --save-dev(在package中添加gulp依赖)

 
六 编写gulp任务
/*
* @Author: liheyao
* @Date: 2016-10-25 10:56:42
* @Last Modified by: liheyao
* @Last Modified time: 2016-10-25 16:15:32
*/
//引入gulp和组件
var gulp = require('gulp'),//gulp基础库
gulpLoadPlugins = require('gulp-load-plugins'),//引入依赖插件
del = require('del'),// 文件夹删除清空
// 实时刷新
tinylr = require('tiny-lr'),
browerSync = require('browser-sync'),
server = tinylr(),
port = 3080;
// load all gulp plugins
var plugins = gulpLoadPlugins(), //package.json中的gulp依赖项
env = process.env.NODE_ENV || 'development',//开发环境 dev 还是pro
isProduction = env == 'production',
ipJS = isProduction ? "src/js/dev.js":"src/js/pro.js";//根据不同的开放环境引入不同的js
/** css,js缓存配置 **/
var time = new Date();
var timeStamp = dateToString(time);
var timeStamp_prod = time.valueOf();
function dateToString(time) {
var year = time.getYear() + 1900;
var month = time.getMonth() + 1; //月
var day = time.getDate(); //日
var hh = time.getHours(); //时
var mm = time.getMinutes(); //分
var str= year + "-";
if(month < 10){
str += "0";
}
str += month + "-";
if(day < 10)
str += "0";
str += day + " ";
str += hh + ':';
str += mm;
return(str);
}
//html处理
gulp.task('html',function(){
gulp.src('src/*.html')
// 判断 如果是pro 压缩html
.pipe(plugins.if(isProduction, plugins.htmlmin({
collapseWhitespace: true,//空白
removeComments: true//注释
})))
// 判断 如果是pro 加时间戳
.pipe(plugins.if(isProduction, plugins.replace(/_VERSION_/gi, '.min_'+timeStamp_prod), plugins.replace(/_VERSION_/gi, '.min')))
.pipe(gulp.dest('dist/'))
// 实时监听
.pipe(browerSync.reload({
stream: true
}));
});
//sass
gulp.task('sass',function () {
// 多个路径用中括号
gulp.src(['src/sass/*.scss','!src/sass/_*.scss'])
// 编辑scss
.pipe(plugins.sass())
// 合并css
.pipe(plugins.concat('index.css'))
// 判断 如果是pro 压缩
.pipe(plugins.if(isProduction,plugins.minifyCss()))
// 判断 如果是pro 加时间戳
.pipe(plugins.if(isProduction,plugins.rename({suffix:'.min_'+timeStamp_prod}),plugins.rename({suffix:'.min'})))
.pipe(gulp.dest('dist/css'))
.pipe(browerSync.reload({
stream: true
}));
});
//图片处理
gulp.task('image',function(){
gulp.src('src/images/*.*')
.pipe(plugins.imagemin())
.pipe(gulp.dest('dist/images'))
.pipe(browerSync.reload({
stream: true
}));
});
//js处理
gulp.task('js',function () {
gulp.src(['src/js/*.js',"!"+ipJS+""])
.pipe(plugins.babel())
.pipe(plugins.concat('main.js'))
.pipe(plugins.if(isProduction,plugins.uglify()))
.pipe(plugins.if(isProduction,plugins.rename({suffix:'.min_'+timeStamp_prod}),plugins.rename({suffix:'.min'})))
.pipe(gulp.dest('dist/js'))
.pipe(browerSync.reload({
stream:true
}));
});
gulp.task('libs',function() {
gulp.src('src/libs/**/*')
.pipe(gulp.dest('dist/libs'))
.pipe(browerSync.reload({
stream:true
}));
})
//清空图片 样式 js
gulp.task('clean', del.bind(null, ['dist/*']));
// 实时监听
gulp.task('serve',function(){
browerSync({
server:{
baseDir:['dist']
},
port: port
},function(err,bs){
console.log(bs.options.getIn(["urls", "local"]));
});
gulp.watch('src/sass/*.scss',['sass']);
gulp.watch('src/js/*.js',['js']);
gulp.watch('src/*.html',['html']);
gulp.watch('src/images/*.*',['image']);
});
gulp.task('build',['clean'],function() {
gulp.start('libs','sass','js','html','image')
})

package.json

{
"name": "gulp",
"version": "1.0.0",
"description": "",
"main": "gulpfile.js",
"scripts": {
"watch": "gulp serve",
"dev": "cross-env gulp build",
"build": "cross-env NODE_ENV=production gulp build"
},
"author": "lhy",
"license": "ISC",
"devDependencies": {
"babel-preset-es2015": "^6.16.0",
"browser-sync": "^2.17.5",
"cross-env": "^3.1.2",
"del": "^2.2.2",
"gulp": "^3.9.1",
"gulp-babel": "^6.1.2",
"gulp-clean": "^0.3.2",
"gulp-concat": "^2.6.0",
"gulp-htmlmin": "^3.0.0",
"gulp-if": "^2.0.1",
"gulp-imagemin": "^3.0.3",
"gulp-load-plugins": "^1.3.0",
"gulp-minify-css": "^1.2.4",
"gulp-rename": "^1.2.2",
"gulp-replace": "^0.5.4",
"gulp-sass": "^2.3.2",
"gulp-sourcemaps": "^2.2.0",
"gulp-uglify": "^2.0.0",
"rename": "^1.0.3",
"tiny-lr": "^1.0.2"
}
}

  

 

 
 
启动监听的另一种方法:http://www.dbpoo.com/getting-started-with-gulp/ 网站上提到的
http-server方式
 
 
gulp 自动化编程

1.命令行创建npm的配置文件

nam init

2.添加一个gulp的依赖

npm install gulp  - - save-dev

3.在项目根目录下添加一个gulpfile.js文件 ,这个文件名是固定不变的

4.在gulpfile.js中添加任务

eg: 1.less编译 压缩 合并(没有必要,一般预处理css都是导包)

2.js合并  压缩  混淆

3.img复制

4.html压缩

//先载入gulp的包  

var gulp =    require(‘gulp’);

//注册任务

//安装 gulp-less  gulp-concat  等包

//引入gulp-less 包   转css用的

var less = require(‘gulp-less’);

//引入gulp-cssnano包   压缩用的

var cssnano = require(‘gulp-cssnano’);

gulp.task(‘style’,function(){

gulp.src([’src/styles/*.less’,’!src/styles/_*.less’])

.pipe(less())//转css

.pipe(cssnano())//压缩

//合并

.pipe(gulp.dest(‘dist/styles’));

});

  

gulp使用 实现文件修改实时刷新的更多相关文章

  1. gulp 图片、样式、js、实时刷新等压缩gulpfile.js文件各个模块

    1.压缩tinypng图片   gulp-tinypng-nokey,但不压缩gif格式(另外一个gulp-imagemin压缩率不高,可以压缩gif格式) // 获取 gulp var gulp = ...

  2. 使用gulp解决外部编辑器修改Eclipse文件延迟刷新

    本人前端用惯了Hbuilder,修改了eclipse项目中的文件后,由于是外部编辑器修改过的,eclipse不会自动部署更新,一般按F5刷新项目,或者在 preferences > genera ...

  3. 使用gulp解决外部编辑器修改Eclipse文件延迟更新的问题

    本人前端用惯了Hbuilder,修改了eclipse项目中的文件后,由于是外部编辑器修改过的,eclipse不会自动部署更新,一般按F5刷新项目,或者在 preferences > genera ...

  4. grunt实现修改代码实时刷新浏览器

    grunt例子:https://github.com/Aquarius1993/gruntDemo grunt 实时刷新1:           1.安装chrome浏览器插件:liveReload ...

  5. 分享Grunt.js配置: watch + liveReload 实时监测文件变化自动刷新浏览器

    http://www.tuicool.com/articles/2eaQJn 用Grunt配置watch和liveReload组件,可以实时检测指定的文件变化并自动刷新浏览器.目前基本已经成为了我的必 ...

  6. Gulp-livereload:实时刷新编码

    实现功能 监听指定目录下的所有文件,实时动态刷新页面 安装(Install) 功能的实现是借助 gulp-connect 插件完成的;所以,首先通过下面命令完成插件安装: npm install -- ...

  7. webpack-dev-server 搭建本地服务以及浏览器实时刷新

    一.概述开发项目中为了保证上线,开发项目是都需要使用localhost进行开发,以前的做法就是本地搭建Apache或者Tomcat服务器.有的前端开发人员 对服务器的搭建和配置并不熟悉,这个时候需要后 ...

  8. eclipse 使用tomcat运行JavaWeb项目,文件修改后为何不用重启tomcat? (运行web项目的4种方式)探究

                    1.情景说明 在eclipse中,为什么Java文件修改后,重启tomcat class文件才能生效? 为什么jsp修改后,不需重启tomcat就能立即生效? 为什么静 ...

  9. FusionCharts制作实时刷新图

    转自:http://yklovejava-163-com.iteye.com/blog/1889949 下面介绍的是用FusionCharts制作实时刷新图的过程(FusionCharts确实太好用了 ...

随机推荐

  1. Mac下需要安装的一些软件及常用的配置文件

    常用软件配置文件 1..gitconfig # This is Git's per-user configuration file. [user] name = 张文 email = zhangwen ...

  2. 【转】获取Windows系统明文密码神器

    前序 电脑密码忘记了可以用本工具找回,前提是你能进入系统,例如本机保存了远程服务器登录的密码或借别人的电脑,而忘记了密码:mimikatz 2.0工具正好解决了你的问题. 工具下载 binaires ...

  3. 解决IE6已终止操作问题

    令人崩溃的IE6问题再次出现,打开某个页面时,弹出提示框“Internet Explorer无法打开Internet 站点...已终止操作”.    查了一下资料,感觉“因为js(一个比较复杂的js) ...

  4. Linux系统CentOS使用yum方式安装指定版本的PHP 添加yum源 从PHP5.3升级到5.4/5.5/5.6

    默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 首先删除旧版本的PHP, 通过yum list installed | grep php可以查看所有已安装的php软件 使 ...

  5. mybatis的一级缓存和二级缓存(1)

    1.mybatis一级缓存,sqlSesion级别的缓存,一级缓存默认一直开启的,sqlSession级别的一个Map,把查询的数据放到一个Map中,以后需要相同的数据,直接从Map中去取 与数据库一 ...

  6. eclipse隐藏关闭的工程

    打开上面这个视图

  7. springMVC入门案例

    1.配置文件的web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xs ...

  8. 简单易用的分页类实例代码PHP

    <?php /*********************************************** * @类名: page * @参数: $myde_total - 总记录数 * $m ...

  9. 用cookies判断用户首次登录

    要求:判断24小时内用户是否是首次登录,如果是则显示弹窗,如果不是则不再显示弹窗 (function() { //是否是新访客 function isNewVisitor() { //从cookie读 ...

  10. Delphi编码转换

    1.Delphi 的 Utf-8 转换 - findumars - 博客园.html https://www.cnblogs.com/findumars/archive/2013/12/26/3492 ...