gulp常用配置
由于项目中经常会使用到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常用配置的更多相关文章
- 前端构建工具:gulp的配置与使用
安装gulp 因为gulp是基于node的管理工具,所以要先安装nodejs安装nodejsnodejs下载地址:中文站:http://nodejs.cn/ 英文站:https://nodejs.or ...
- 精通gulp常用插件
本文主要展示的是gulp常用插件的使用方法和用途,通过对插件的熟练运用达到精通gulp.不定期更新.可以到github上面下载DEMO. github地址:lin-xin/gulp-plugins 匹 ...
- gulp常用插件之gulp-eslint使用
更多gulp常用插件使用请访问:gulp常用插件汇总 ** gulp-eslint**这是一个用于识别和报告在ECMAScript/JavaScript代码中找到的模式的Gulp插件.. 更多使用文档 ...
- gulp常用插件之gulp-postcss使用
更多gulp常用插件使用请访问:gulp常用插件汇总 ** gulp-postcss**这是一款通过多个插件通过管道传递CSS,但是仅解析一次CSS. 更多使用文档请点击访问gulp-postcss工 ...
- gulp常用插件之cssnano使用
更多gulp常用插件使用请访问:gulp常用插件汇总 cssnano这是一款将你的 CSS 文件做 多方面的的优化,以确保最终生成的文件 对生产环境来说体积是最小的插件. 更多使用文档请点击访问cha ...
- gulp常用插件之gulp-uglify使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-uglify这是一款使用UglifyJS缩小js文件. 更多使用文档请点击访问gulp-uglify工具官网. 安装 一键安装不多解释 ...
- gulp常用插件之gulp-inject使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-inject这个插件的作用与wiredep类似,不同的是可以自己任意指定需要插入文件的列表.它同样是利用注释来寻找插入的位置.获取源文件 ...
- gulp常用插件之gulp-sourcemaps使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-sourcemaps这是一款用来生成映射文件的一个插件,SourceMap 文件记录了一个存储源代码与编译代码对应位置映射的信息文件.我 ...
- gulp常用插件之bower使用
更多gulp常用插件使用请访问:gulp常用插件汇总 bower这是一款客户端技术的软件包管理器,它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源. 更多使用文档请点击访 ...
随机推荐
- active cab inf文件编写
最近做了一个网页下载控件.主要就是实现ActiveX控件功能. 由于自己是第一次做,不熟悉其过程.中间走了很多弯路.现在把走过得路程记录部分,希望对其他人可以有点用. 首先制作一个你自己的DLL文件. ...
- SQLServer连接cache数据库
开始文章之前首先要了解一下什么是Caché数据库. Caché数据库是美国Intersystems公司产品,后关系型数据库(Post Relational database)中的领头羊.Caché数据 ...
- Spring AOP实现注解式的Mybatis多数据源切换
一.为什么要使用多数据源切换? 多数据源切换是为了满足什么业务场景?正常情况下,一个微服务或者说一个WEB项目,在使用Mybatis作为数据库链接和操作框架的情况下通常只需要构建一个系统库,在该系统库 ...
- 实用fork/join框架提升程序效率
实用fork/join框架提成程序效率 原文地址:https://www.jianshu.com/p/9ce243796d4a 业务场景 最近再做一个接口,我是一个中央的消息接受方,当我接受到消息后要 ...
- Apache Kylin远程代码执行漏洞复现(CVE-2020-1956)
Apache Kylin远程代码执行(CVE-2020-1956) 简介 Apache Kylin 是美国 Apache 软件基金会的一款开源的分布式分析型数据仓库.该产品主要提供 Hadoop/Sp ...
- c#分割习题
2.从一个记录了学生成绩的文本文档,每个学生成绩是一行,每行是用 | 分割的数据,用 | 分割的域分别是姓名.年龄.成绩.年级,写程序取出各个年级成绩最高学生的成绩.年级放到集合中.提示:(1)使用 ...
- leetcode97:maximum -subarray
题目描述 请计算给出的数组(至少含有一个数字)中具有最大和的子数组(子数组要求在原数组中连续) 例如:给出的数组为[−2,1,−3,4,−1,2,1,−5,4], 子数组[−2,1,−3,4,−1,2 ...
- php curl 请求封装
/** * curl 封装函数 * @param string $url 请求地址 * @param string $data 请求数据 * @param string $type 请求方式 默认为G ...
- 【转】volatile和synchronized的区别
volatile和synchronized的区别 volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取: synchronized则是锁定当前变量,只有当前 ...
- 四、c++总结------linux多线程服务端编程