由于项目中经常会使用到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. centos6-增加阿里yum源

    1.获取阿里的yum源覆盖本地官方yum源 wget -O /etc/yum.repos.d/CentOS-ali.repo http://mirrors.aliyun.com/repo/Centos ...

  2. 探索G1垃圾回收器

    前言 最近王子因为个人原因有些忙碌,导致文章更新比较慢,希望大家理解,之后也会持续和小伙伴们一起共同分享技术干货. 上篇JVM的文章中我们对ParNew和CMS垃圾回收器已经有了一个比较透彻的认识,感 ...

  3. 排序算法—快速排序(Quick Sort)

    快速排序(Quick Sort) 快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序. ...

  4. css 兼容性总结

    1.就是ie6双倍边距的问题,在使用了float的情况下,不管是向左还是向右都会出现双倍,最简单的解决方法就是用display:inline;加到css里面去. 2.文字本身的大小不兼容.同样是fon ...

  5. 【SpringCloud】03.微服务的设计原则

    微服务的设计原则: 一.AKF拆分原则 业界对于可扩展的系统架构设计有一个朴素的理念:通过加机器就可以解决容量和可用性问题(如果一台不行就两台). Y轴(功能)--关注应用中功能划分,基于不同的业务拆 ...

  6. Elasticsearch 注册windows服务后,服务启动失败,意外终止

    直接双击elasticsearch.bat可以成功启动,注册成服务后就启动失败 从网上查找问题,发现是jdk版本的问题,用ES自带的jdk就可以启动成功. 默认ES会先找JAVA_HOME环境变量,如 ...

  7. 三分钟快速解析GraphQL基本工作思路!

    欢迎阅读 本文会通过实际场景介绍一下 GraphQL,目的是让你快速了解 GraphQL 是什么,以及基本工作思路,不包含实际用法,所以阅读很轻松. 一.GraphQL 是什么? GraphQL 是后 ...

  8. Sentinel 的一些小扩展

    随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制.熔断降级.系统自适应保护等多个维度来帮助您保障微服务的稳定 ...

  9. 微信三方平台开发上传base64格式图片至临时素材

    1 public string UploadImgByB64(string b64) 2 { 3 //access_token 需要自己获取 4 string access_token = getTo ...

  10. Javascript 参数传递

    又一个基本概念出问题,参数传递都是值传递, var a={x:10} function test(obj){obj=1} test(a) console.log(a) 输出什么,如果你说1,那就错了, ...