最近做项目,因为每次做完后都要手动压缩CSS、JS 等文件,压缩后另存为 *.min.xxx。 Less 还要手动输入命令进行编译,调整页面也经常要手动刷新页面看效果,很麻烦,就尝试用 gulp 去处理下我的工作流程,让事情变得更加简单可靠。

首先要先确保 node、npm 已经安装到电脑里。

//  全局安装

$ npm install --global gulp

//  作为项目的开发依赖安装

$ npm install --save-dev gulp

//  在项目的根目录下 创建 gulpfile.js

//  然后运行 gulp 即可完成

$ gulp

1、构建实时重载的服务器

var gulp = require('gulp');
var browserSync = require('browser-sync');
var reload = browserSync.reload; gulp.task('serve',function(){
//  非服务器环境下
     browserSync({
server:{
// 需要监控的目录
baseDir:'index'
}
});
     //  服务器环境下
     browserSync.init({
       proxy:'localhost/index.php',
   });
// 监视文件内容
gulp.watch(['*.html','static/style/*.less','static/script/*.js'],{cwd:'index'},reload);
});

  $ gulp serve  //启动服务

2、自动压缩 JavaScript文件

var rename = require('gulp-rename');
var uglify = require('gulp-uglify'); // 设置输出目录
var DEST = 'my';
gulp.task('out',function(){
// 指定 JS 文件
return gulp.src('index/**/**/common.js')
// 输出 JS 文件
.pipe(gulp.dest(DEST))
// 压缩 JS 文件
.pipe(uglify())
// 重命名被压缩的 JS 文件
.pipe(rename({extname:'.min.js'}))
// 输出被压缩的 JS 文件
.pipe(gulp.dest(DEST));
});

  $ gulp out  //执行压缩 JS

3、自动编译 .less => .css

var less = require('gulp-less');
// 设置输出目录
var DEST = 'my'; gulp.task('less',function(){
gulp.src('index/**/**/*.less')
.pipe(less({compress:true}))
.pipe(gulp.dest(DEST));
});

  $ gulp less  //执行编译 less

4、自动编译 .scss => .css

gulp.task('sass',function(){
return gulp.src('./style.scss')
.pipe(sass().on('error',sass.logError))
.pipe(gulp.dest('./css'));
});

  $ gulp sass  //执行编译 sass

利用 Gulp 处理前端工作流程的更多相关文章

  1. Yeoman+Bower+gulp web前端自动化工作流程(初级教程)

    Yeoman包括了三个部分yo(脚手架工具).grunt/gulp(构建工具).bower(包管理器).听说gulp更容易上手,所以我就没用grunt而选的gulp 什么是开发流程? 在我看来一个完整 ...

  2. 前端发展态势 && 前端工作流程个人浅析

    于在未开启cleartype的情况下,一些中文字体在非偶数字号下的显示效果欠佳,所以一般建议使用12.14.16.18.22px等偶数字号.也就 是对某个分辨率选择离它最近的偶数字号.例如:屏幕横向分 ...

  3. 前端工作流程自动化——Grunt/Gulp 自动化

    什么是自动化 先来说说为什么要自动化.凡是要考虑到自动化时,你所做的工作必然是存在很多重复乏味的劳作,很有必要通过程序来完成这些任务.这样一来就可以解放生产力,将更多的精力和时间投入到更多有意义的事情 ...

  4. 如何利用gulp构建前端自动化

    1,使用 gulp.watch 来监听文件自动打包 在上篇文章中,介绍了如何利用webpack来为项目做打包编译等工作,其中介绍到在我们开发的时候,经常改动js,因为我们文件是引用编译后的js文件,若 ...

  5. 写了交互给后台后来不能用?bug多多多又找不到文件效率低?工作流程帮你优化起来~~~~

    前端工作流程(多方交互篇) 新的网页: 1.跟美工沟通,跟产品沟通,跟后台沟通.前两者主要是页面样式.后者主要是表单交互.用哪个框架之类的. 2.实现.(写清楚哪块是用什么验证方式的)→ 给后台. 3 ...

  6. gulp——用自动化构建工具增强你的工作流程

    想要使用gulp,就要了解gulp,就像追自己的爱豆,你要知道爱豆的喜好.兴趣 简单的了解你的新爱豆———安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 ...

  7. Git 分支-利用分支进行开发的工作流程

    3.4 Git 分支 - 利用分支进行开发的工作流程 利用分支进行开发的工作流程 现在我们已经学会了新建分支和合并分支,可以(或应该)用它来做点什么呢?在本节,我们会介绍一些利用分支进行开发的工作流程 ...

  8. Angular07 路由的工作流程、路由参数、子路由、利用路由加载模块、模块懒加载???

    1 Angular路由的工作流程 用户在浏览器输入一个URL -> Angular将获取到这个URL并将其解析成一个UrlTree实例 -> Angular会到路由配置中去寻找并激活与Ur ...

  9. 前端工作面试问题--摘取自github

    前端工作面试问题 本文包含了一些用于考查候选者的前端面试问题.不建议对单个候选者问及每个问题 (那需要好几个小时).只要从列表里挑选一些,就能帮助你考查候选者是否具备所需要的技能. 备注: 这些问题中 ...

随机推荐

  1. 动手实现自己的 STL 容器《2》---- list

    1. 序: 本文参考了侯捷的 <STL 源码分析>一书,出于兴趣,自行实现了简单的 list 容器. 学习了 STL 的 list 容器的源代码,确实能够提高写链表代码的能力.其中的 so ...

  2. 三部曲一(数据结构)-1011-Sorting It All Out

    每次加入一个关系都要进行拓扑排序,不过在排序过程中需要判断是否出现多个入度为0的点,如果出现了就说明不能确定大小关系.不论出不出现多个入度为0的点拓扑排序都要进行到最后来判断是否出现环,因为一旦出现环 ...

  3. skynet的协程

    之前对skynet的印象,主要是来自于我对golang的理解,对gevent开发的经验,以及云风的blog.对于底层的代码,并没有仔细去阅读过.最近在实现业务系统的时候,发现有同事在同一个函数里做了一 ...

  4. poj1026 Cipher ——置换群

    link:http://poj.org/problem?id=1026 其实这道题目和poj2369这道题目一样. 都是基础的置换群题目.把那道题目理解了,这道题就没问题了. 不过我的方法貌似比较挫, ...

  5. 2009年到2013年甲子园ED

    2009年 2010年  最喜欢的一个!看过N遍 2011年 也不错! 2012年  超级好听啊~^_^比10年的还好,看过N+1遍……o(╯□╰)o 2013年春季甲子园 2013年夏季 印象最深的 ...

  6. iOS红马甲项目开发过程Bug总结(1)

    在上线审核时,重新检测自己的app发现报错:"was compiled with optimization - steppingmay behave oddly; variables may ...

  7. Linux学习方法

    应该如何提问? 先要尝试自己解决 - 帮助 - 文档 - 示例 提问的智慧 - 问题详尽 - 贴图

  8. linux crontab -r 导致no crontab for root的原因及解决方案

    使用方式 : crontab file [-u user]-用指定的文件替代目前的crontab. crontab-[-u user]-用标准输入替代目前的crontab. crontab-1[use ...

  9. WPA破解原理简要——无线网络破解续

    一.破解密码的基础 关于密码的破解我再重复一次好了.密码破解就两大类方法.一是字典解密,而是暴力解密. 暴力解密就是采用穷举的方法——你密码是怎么组成的呢?无非就是数字.字母.符号,暴力解密就是采用一 ...

  10. Spring源码学习之:ClassLoader学习(1)

    转载:http://longdick.iteye.com/blog/442213 java应用环境中不同的class分别由不同的ClassLoader负责加载. 一个jvm中默认的classloade ...