gulp最佳实践(包含js,css,html预编译,合并,压缩,浏览器自动刷新)
gulp是基于流的自动化构建工具
官方网址:http://www.gulpjs.com.cn/
一、安装需要的模块
1、新建package.json,输入下面的内容
{
"name": "autopractice",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"browser-sync": "^2.10.1",
"coffee-script": "^1.10.0",
"gulp": "^3.9.0",
"gulp-clean": "^0.3.1",
"gulp-coffee": "^2.3.1",
"gulp-concat": "^2.6.0",
"gulp-connect": "^2.3.1",
"gulp-jade": "^1.1.0",
"gulp-jshint": "^2.0.0",
"gulp-less": "^3.0.5",
"gulp-livereload": "^3.8.1",
"gulp-minify-css": "^1.2.2",
"gulp-plumber": "^1.0.1",
"gulp-uglify": "^1.5.1",
"gulp-webpack": "^1.5.0",
"jade": "^1.11.0",
"jshint": "^2.8.0"
}
}
2、命令npm install
npm install
二、配置gulp
插件安装完毕后,我们需要新建一个gulpfile.js文件来指定gulp需要为我们完成什么任务。
代码说明看解释,如果有任何疑问请查看官方入门手册,网址在上面
// 导入需要的模块
var gulp = require('gulp'),
less = require('gulp-less'),
jade = require('gulp-jade'),
coffee = require('gulp-coffee'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
browserSync = require('browser-sync').create(),
plumber = require('gulp-plumber'),
minifyCss = require('gulp-minify-css'); // 编译less,其中plumber是防止出错崩溃的插件
gulp.task('less', function() {
gulp.src('src/less/*.less')
.pipe(plumber())
.pipe(less())
.pipe(gulp.dest('dist/css'));
}); // 编译jade
gulp.task('jade', function() {
gulp.src('src/jade/*.jade')
.pipe(plumber())
.pipe(jade())
.pipe(gulp.dest('public'));
}); // 编译coffee
gulp.task('coffee', function() {
gulp.src('src/coffee/*.coffee')
.pipe(plumber())
.pipe(coffee())
.pipe(gulp.dest('dist/js'));
}); // 将所有css文件连接为一个文件并压缩,存到public/css
gulp.task('concatCss', function() {
gulp.src(['dist/css/*.css'])
.pipe(concat('main.css'))
.pipe(minifyCss())
.pipe(gulp.dest('public/css'));
}); // 将所有js文件连接为一个文件并压缩,存到public/js
gulp.task('concatJs', function() {
gulp.src(['dist/js/*.js'])
.pipe(concat('main.js'))
.pipe(uglify())
.pipe(gulp.dest('public/js'));
}); // 默认任务
gulp.task('default', ['watch']); // 监听任务
gulp.task('watch', function() { // 建立浏览器自动刷新服务器
browserSync.init({
server: {
baseDir: "public"
}
}); // 预处理
gulp.watch('src/jade/**', ['jade']);
gulp.watch('src/coffee/**', ['coffee']);
gulp.watch('src/less/**', ['less']); // 合并压缩
gulp.watch('dist/css/*.css', ['concatCss']);
gulp.watch('dist/js/*.js', ['concatJs']); // 自动刷新
gulp.watch('public/**', function() {
browserSync.reload();
}); });
三、测试
控制台运行gulp
gulp
浏览器将自动打开
修改任意文件,浏览器自动刷新
转自:https://segmentfault.com/a/1190000004165055 有修改
gulp最佳实践(包含js,css,html预编译,合并,压缩,浏览器自动刷新)的更多相关文章
- 前端神器!!gulp livereload实现浏览器自动刷新
首先gulp是基于Node的,所以确保你已经安装 node.js,在Nodejs官方网站下载跟自己操作系统相对应的安装包. 先说一下gulp安装流程: 1:全局安装gulp,操作为: npm inst ...
- 前端-如何用gulp快速搭建项目(sass预编译,代码压缩,css前缀,浏览器自动刷新,雪碧图合成)
一:gulp优点: 易于使用 通过代码优于配置的策略,Gulp 让简单的任务简单,复杂的任务可管理: 插件高质 Gulp 严格的插件指南确保插件如你期望的那样简洁高质得工作. 构建快速 利用 Node ...
- Oracle创建新undo表空间最佳实践(包含段检查)
在处理一则ORA-600 [4194]案例时,参考MOS文档:Step by step to resolve ORA-600 4194 4193 4197 on database crash (文档 ...
- js中的预编译
预编译 js执行顺序: 词法/语法分析 预编译 解释执行 js中存在预编译 function demo() { console.log('I am demo'); } demo(); //I am d ...
- Gulp 搭建前端非SPA 项目, 修改文件浏览器自动刷新
起因:需要搭建一个自动打包处理 sass / js (es6),自动监听文件变化时浏览器自动刷新的开发环境 项目目录 project build -css -js *.html src -html - ...
- 【WEB前端开发最佳实践系列】CSS篇
一.有效组织CSS代码 规划组织CSS代码:组织CSS代码文件,所有的CSS都可以分为2类,通用类和业务类.代码的组织应该把通用类和业务类的代码放在不同的目录中. 模块内部的另一样式规则:样式声明的顺 ...
- 使用gulp对js、css、img进行合并压缩
1 概述 最新使用AngularJS框架做单页面项目,其中包括了很多库的和自已写的js.css.img文件,这些文件都不大,但是数量众多,导致web请求文件过多,一次性加载时比较慢.有尝试过使用异步加 ...
- gulp构建前端,压缩css,js文件,实现浏览器自动刷新
一.安装node nodejs下载地址:https://nodejs.org/ nodejs自带npm模块管理器,安装完成之后打开dos命令窗口输入 node -v就能查看nodejs是否安装成成功 ...
- 浅谈css的预编译---less语言
正如各位所知道的一样,css是一门标记性语言,语法相对简单,对使用者的要求也比较低 .不过可乐不知道友友们有没有发现,在使用css的时候需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤 ...
随机推荐
- Wbemtest查询
运行wbemtest,打开后连接命名空间,默认为“root\cimv2”,可以连接到”IIS管理命名空间(此为Windows Server 2008 R2)“ 查看该命名空间下所有可用的类:单击“枚举 ...
- 【转】C++中多重继承的二义性及解决办法
转自:http://www.cnblogs.com/lintong/archive/2012/07/28/2613002.html 1. 什么是多重继承的二义性 class A{ public: vo ...
- paip. mysql如何临时 暂时 禁用 关闭 触发器
paip. mysql如何临时 暂时 禁用 关闭 触发器 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn ...
- thickbox关闭子页后ajax局部刷新父页
1. 首先注意需要调用thickbox的js <script type="text/javascript" src="<%=path%>/js/jque ...
- nginx-systemtap-toolkit
https://github.com/openresty/nginx-systemtap-toolkit
- DW一些快捷键的使用
在键盘上敲空格的话可以使用shift+空格 如果要换行的话就可以使用的是 shift+enter
- rndc: connect failed: 127.0.0.1#953: connection refused
[root@localhost sbin]# ./named -v bind 9.5.1-p3-v3.0.9 问题现象: [root@localhost sbin]# ./rndc flush -p ...
- 【腾讯Bugly干货分享】总结一个技术总监的教训和经验
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/Ry-G0Nikh6m-h3ZVC2cLyQ 导语 20 ...
- 不需要软件让Windows7变身WIFI热点
很简单,就是把一台装有windows 7操作系统,并配有无线网卡的电脑变成一台无线路由器或无线AP,以便在没有路由器的环境中实现多台无线终端(比如支持wifi的手机.电脑等设备)共享无线网络.那么我们 ...
- MongoDB中的分组
一.MongoDB中的Count函数.Distinct函数以及分组 准备工作,插入一个班级的文档 > for(var i=0;i<10;i++){ ... db.Classes.inser ...