由于项目中经常会使用到gulp,而每次配置大概都差不多,所以将配置记录一下

项目结构

├─dist
│ ├─assets
│ ├─css
│ ├─images
│ └─js
├─node_modules
└─src
├─assets
│ ├─css
│ ├─echarts
│ ├─js
│ ├─odometer
│ └─插件等
├─less
├─images
└─js

配置文件 gulpfile.js

/*
* @gulp:自动化任务
*/
var gulp = require('gulp');
var rm = require('del'); //删除文件
var browserSync = require('browser-sync');
var reload = browserSync.reload; //自动刷新
var htmlmin = require('gulp-htmlmin'); //压缩html
var miniCSS = require('gulp-clean-css'); //压缩css
var miniJS = require('gulp-uglify'); //压缩js
var less = require('gulp-less'); //编译less
var autoprefixer = require('gulp-autoprefixer'); // 补全浏览器前缀
var babel = require('gulp-babel'); // es6 转 es5
var replace = require('gulp-replace'); // 替换
var proxyMiddleware = require('http-proxy-middleware'); // 代理跨域 /**
* 配置
*/
var config = {
path: {
src: './src/', // 工程目录
dist: './dist/' // 产出目录
}, // 代理设置
middleware: proxyMiddleware('/api', {
target: 'http://192.168.1.108:8080',
changeOrigin: true,
pathRewrite: {
'^/api': ''
},
})
}; /*清除产出目录*/
gulp.task('clear-dir', (done) => {
rm.sync([config.path.dist + '**']);
done();
}); /*图片产出*/
gulp.task('img', function () {
return gulp.src(config.path.src + 'images/**/*')
.pipe(gulp.dest(config.path.dist + 'images/'))
}); /**静态文件(不需要编译) */
gulp.task('assets', function () {
return gulp.src(config.path.src + 'assets/**/*')
.pipe(gulp.dest(config.path.dist + 'assets/'))
}); /**html处理 */
gulp.task('mini-html', function () {
return gulp.src(config.path.src + '**.html')
// 修改为源文件
// .pipe(replace('src="./script/', 'src="./js/'))
.pipe(htmlmin({
collapseBooleanAttributes: true, //省略布尔属性的值 <input checked="true"/> ==> <input />
removeEmptyAttributes: true, //删除所有空格作属性值 <input id="" /> ==> <input />
removeScriptTypeAttributes: true, //删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true, //删除<style>和<link>的type="text/css"
}))
.pipe(gulp.dest(config.path.dist))
// 注入浏览器
.pipe(reload({
stream: true
}));
}); /**less编译 */
gulp.task('less', function () {
return (gulp.src(config.path.src + 'less/*.less')
.pipe(less())
// 补全前缀
.pipe(autoprefixer({
cascade: false, // 是否美化属性值
overrideBrowserslist: [
'last 2 versions',
'Chrome >= 25'
],
}))
.pipe(gulp.dest(config.path.dist + 'css/'))
// 注入浏览器
.pipe(reload({
stream: true
}))
);
}); /**es6转es5 */
gulp.task('babel-js', function () {
return gulp.src(config.path.src + 'js/**.js')
.pipe(babel())
.pipe(gulp.dest(config.path.dist + 'js/'))
// 注入浏览器
.pipe(reload({
stream: true
}));
}); /**开启服务 */
gulp.task('server', function () {
browserSync.init({
server: {
baseDir: config.path.dist,
index: 'index.html', // 指定默认打开的文件
middleware: config.middleware
},
port:'8888', // 默认3000 });
/**监听 */
// gulp.watch(config.path.src + '**.html').on('change', reload);
gulp.watch(config.path.src + '**.html', gulp.series('mini-html'));
gulp.watch(config.path.src + 'js/**.js', gulp.series('babel-js'));
gulp.watch(config.path.src + 'less/**.less', gulp.series('less')); }); /**
* 开发:
* 开启代理服务器,
* 监听自动刷新,
* es6转换
* less编译补全前缀
*/
gulp.task('default', gulp.series('clear-dir','assets','img','mini-html', 'less', 'babel-js', 'server', (done) => {
done();
})); /**
* 生产:
* 合并,压缩等操作...
*/

gulp常用配置的更多相关文章

  1. 前端构建工具:gulp的配置与使用

    安装gulp 因为gulp是基于node的管理工具,所以要先安装nodejs安装nodejsnodejs下载地址:中文站:http://nodejs.cn/ 英文站:https://nodejs.or ...

  2. 精通gulp常用插件

    本文主要展示的是gulp常用插件的使用方法和用途,通过对插件的熟练运用达到精通gulp.不定期更新.可以到github上面下载DEMO. github地址:lin-xin/gulp-plugins 匹 ...

  3. gulp常用插件之gulp-eslint使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 ** gulp-eslint**这是一个用于识别和报告在ECMAScript/JavaScript代码中找到的模式的Gulp插件.. 更多使用文档 ...

  4. gulp常用插件之gulp-postcss使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 ** gulp-postcss**这是一款通过多个插件通过管道传递CSS,但是仅解析一次CSS. 更多使用文档请点击访问gulp-postcss工 ...

  5. gulp常用插件之cssnano使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 cssnano这是一款将你的 CSS 文件做 多方面的的优化,以确保最终生成的文件 对生产环境来说体积是最小的插件. 更多使用文档请点击访问cha ...

  6. gulp常用插件之gulp-uglify使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-uglify这是一款使用UglifyJS缩小js文件. 更多使用文档请点击访问gulp-uglify工具官网. 安装 一键安装不多解释 ...

  7. gulp常用插件之gulp-inject使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-inject这个插件的作用与wiredep类似,不同的是可以自己任意指定需要插入文件的列表.它同样是利用注释来寻找插入的位置.获取源文件 ...

  8. gulp常用插件之gulp-sourcemaps使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-sourcemaps这是一款用来生成映射文件的一个插件,SourceMap 文件记录了一个存储源代码与编译代码对应位置映射的信息文件.我 ...

  9. gulp常用插件之bower使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 bower这是一款客户端技术的软件包管理器,它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源. 更多使用文档请点击访 ...

随机推荐

  1. FROM DELETE LIBRARY TO RUN の Django路由和视图

    一.requests安装 · requests是什么? request是python实现的简单易使用的http库 · 如何安装? pip install requests ·检测是否成功 import ...

  2. python框架Django使用xadmin管理后台数据

    Django使用xadmin管理后台数据 关注公众号"轻松学编程"了解更多. 作用:xadmin比Django内置的admin更美观.更方便. 一.导入xadmin(第三方库) 方 ...

  3. linux 的mysql 主从备份

    1.原理 mysql主从配置的流程大体如图: 1)master会将变动记录到二进制日志里面: 2)master有一个I/O线程将二进制日志发送到slave; 3) slave有一个I/O线程把mast ...

  4. 聊一聊C#基本类型

    C#基本类型 闲来无事,重新温习了下C#基本类型.以下讲的基本类型主要是包括基本的值类型类型和string.struct和class不包含其中. C#基本类型------值类型: bool,byte, ...

  5. 【SpringCloud】06.Eureka 总结

    1.两个注解: @EnableEurekaServer--在启动类上添加 @EnableDiscoveryClient或@EnableEurekaClient--启动类加 因为Eureka支持多种注册 ...

  6. 论文解读 - Relational Pooling for Graph Representations

    1 简介 本文着眼于对Weisfeiler-Lehman算法(WL Test)和WL-GNN模型的分析,针对于WL测试以及WL-GNN所不能解决的环形跳跃连接图(circulant skip link ...

  7. Jave正则的实现

    java的正则实现需要先导入 java.util.regex. java.util.regex 包主要包括以下三个类: Pattern 类: pattern 对象是一个正则表达式的编译表示.Patte ...

  8. 三:登录功能实现,servlet

    1)servlet 2)request 请求对象 3)response响应对象 4)转发 5)重定向 1.servlet就是用来处理客户端的请求的 1.1去官网下载 1.2 在STS上添加该包ctrl ...

  9. 加速OSD的启动

    ceph是目前开源分布式存储里面最好的一个,但是在高负载下会有很多异常的情况会发生,有些问题无法完全避免,但是可以进行一定的控制,比如:在虚拟化场景下,重启osd会让虚拟机挂起的情况 重新启动osd会 ...

  10. RestPack Java实现Html转PDF文件

    最近公司需要将前端一个图表统计导出为pdf.前端导出显示的pdf还是可以的,但是将会导致页面不可用与卡死状态.所以由后端寻找解决方案. 以下为解决方案调研 https://www.cnblogs.co ...