由于项目中经常会使用到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. 阅读源码,通过LinkedList回顾基础

    目录 前言 类签名 泛型 Serializable和Cloneable Deque List和AbstractList RandomAccess接口(没实现) 变量 构造函数 常用方法 List体系下 ...

  2. linux的mysql数据库创建和删除

    mysql -h localhost -u 用戶名 -p密碼                //连接数据库use desk_show;                                 ...

  3. c#提取

    string email = Console.ReadLine(); int atIndex = email.IndexOf('@'); string userName = email.Substri ...

  4. mysql触发

    create procedure agex(in addage1 int,in addage2 int)begindeclare curl_stu_id int; declare curl_stu_s ...

  5. 7、Django之模型层第二篇:多表操作

    一 表关系回顾 在讲解MySQL时,我们提到,把应用程序的所有数据都放在一张表里是极不合理的. 比如我们开发一个员工管理系统,在数据库里只创建一张员工信息表,该表有四个字段:工号.姓名.部门名.部门职 ...

  6. selenium-常用操作总结

    from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome ...

  7. Visual Studio空格变成点的快捷键切换

    [Ctrl + R + W] 效果如下图

  8. 内网渗透 day10-msfvenom免杀

    免杀2-msf免杀 目录 1. 生成shellcode 2. 生成python脚本 3. 自编码免杀 4. 自捆绑免杀(模版注入) 5. 自编码+自捆绑免杀 6. msf多重免杀 7. evasion ...

  9. JAVA中常见的阻塞队列详解

    在之前的线程池的介绍中我们看到了很多阻塞队列,这篇文章我们主要来说说阻塞队列的事. 阻塞队列也就是 BlockingQueue ,这个类是一个接 口,同时继承了 Queue 接口,这两个接口都是在JD ...

  10. 配置Ceph的IPV6集群

    前言 对于IPV6实在是非常的陌生,所以本篇开始会讲一下最基本的网络配置,首先让网络能通起来,最开始就是因为不熟悉IPV6,而直接使用了link local地址,造成了mon部署的时候进程无法绑定到I ...