gulp配置实现修改js、css、html自动刷新

写在前面:

本配置支持es6、less、react

1.首先

给出初始的目录结构

给出执行gulp后的目录结构

给出执行gulp --p后的目录结构

2.package.json里是一个写入。文件描述了npm包的相关配置信息(作者、简介、包依赖等)和所需模块。

{"name": "gruntTest", "version": "1.0.0","description": "","main": "Gulpfile.js"
}

3.Gulpfile.js添加要执行的任务

var gulp = require('gulp');
var uglify = require('gulp-uglify');  //js压缩
var concat = require('gulp-concat');  //合并文件
var minifyCSS = require('gulp-minify-css');  //css压缩
var less = require('gulp-less');  //less
var changedInPlace = require('gulp-changed-in-place');//不管修改哪个文件,gulp会简化DEST里的html文件
var minifyHTML = require('gulp-htmlmin');  //简化html
var browserSync = require('browser-sync').create(); //自动刷新
var babel = require('gulp-babel'); //支持es6
var argv = require('yargs').argv; //支持不同环境
var sequence = require('gulp-sequence'); //按照顺序执行
var watch = require('watch');  //监听
var clean = require('gulp-clean');  //监听
//npm install --save-dev gulp-babel babel-preset-es2015
var DEST = 'dest/';
var HTML_PATH = './src/*.html';gulp.task('minify-js', function(){if(argv.p){gulp.src('src/source/*.js').pipe(babel({presets: ['es2015','react']})).pipe(uglify()).pipe(concat('gruntTest.min.js')).pipe(gulp.dest(DEST+'js'))}else{gulp.src('src/source/*.js').pipe(babel({presets: ['es2015','react']})).pipe(uglify()).pipe(concat('gruntTest.min.js')).pipe(gulp.dest('src/js'))		}		
});
gulp.task('minify-css', function(){if(argv.p){gulp.src('src/less/*.less')  //或者用['src/less/p1.less','src/less/p2.less'].pipe(less()).pipe(minifyCSS()).pipe(concat('style.min.css')).pipe(gulp.dest(DEST+'css')).pipe(browserSync.stream());	}else{gulp.src('src/less/*.less')  //或者用['src/less/p1.less','src/less/p2.less'].pipe(less()).pipe(minifyCSS()).pipe(concat('style.min.css')).pipe(gulp.dest('src/css')).pipe(browserSync.stream());}
});
gulp.task('minify-html', function(){gulp.src(HTML_PATH).pipe(changedInPlace({firstPass: true})).pipe(minifyHTML({collapseWhitespace: true})).pipe(gulp.dest(DEST)).pipe(browserSync.stream());
});
gulp.task('clean', function () {gulp.src(['./src/css/*.css','./src/js/*.js'], {read: false}).pipe(clean());
});
var files = ['./src/css/*.css','./src/js/*.js'
];
gulp.task('browser-sync', function(){browserSync.init(files,{server: {baseDir: './'},port: 9999});
});
gulp.task('watch', function() {gulp.watch('./src/source/*.js',['minify-js']);gulp.watch('./src/less/*.less',['minify-css']);	
});
if(argv.p){//productgulp.task('default', sequence('minify-js','minify-css','minify-html','browser-sync'));
}else{//developgulp.task('default', sequence('clean','minify-js','minify-css','watch','browser-sync'));
}

4.扩展

(1)上面一堆require看着好烦人,也很庞大。此处可以引入“gulp-load-plugins”插件

var gulpLoadPlugins = require('gulp-load-plugins'),plugins = gulpLoadPlugins();plugins.uglify();即可执行相应任务

(2)若某个文件夹下好多文件,那么watch监听时需要一一列举,可以目录写成json格式(例如src.source.*.js)。通过引入“fs”插件,用fs.freaddirSync()方法去读路径。循环即可,此处的实现纯属写js代码。

 

  

  

转载于:https://www.cnblogs.com/lixuemin/p/5611690.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256934.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作为程序员之正则表达式

目录 正则表达式基础语法标准字符集合自定义的字符集合多行、单行模式高级语法选择符和分组反向引用预搜索/零宽断言例子匹配邮箱正则表达式 基础语法 标准字符集合 \D 和[^\d]意思一样,就是与 \d 相反 REG意义\ddigital表示 0 到 9 之间任意的一个数字\wworld表示任…

javascript 的dateObj.getTime() 在为C#的获取方式

publicstringGetTime() { Int64 retval 0; DateTime st newDateTime(1970, 1, 1); TimeSpan t (DateTime.Now.ToUniversalTime() -st); retval (Int64)(t.TotalMilliseconds 0.5); returnretval.ToString(); } 在Net中的实际测试代码 MSScriptControl.Scri…

Jmeter服务器监控插件使用

Jmeter服务器监控插件使用 Jmeter-Plugins支持CPU、Memory、Swap、Disk和Network的监控,在测试过程中更加方便进行结果收集和统计分析。 一、准备工作: 1、下载Jmeter-Plugins插件,下载Server端ServerAgent插件; 2、解压Jmeter-Pl…

CCNA系列课程(4)交换技术

第四节课 交换技术杜飞2009-06-28咱们今天来看一下局域网交换技术,也称为层2交换技术,内容主要包括层2交换的工作原理、网络环路、如何利用Spanning-Tree Protocol 来解决网络环路、VLAN及VTP技术,闲话少说,书归正传。我们在…

python学习之路基础篇(第八篇)

一、作业(对象的封装)     要点分析 1.封装,对象中嵌套对象 2.pickle,load,切记,一定要先导入相关的类二、上节内容回顾和补充      面向对象基本知识: 1.类和对象的…

Ubuntu实现树莓派交叉编译

一、交叉编译 在一个平台上生成另一个平台上的可执行代码。为什么要大费周折的进行交叉编译呢?一句话:不得已而为之。有时是因为目的平台上不允许或不能够安装所需要的编译器,而又需要这个编译器的某些特征;有时是因为目的平台上的…

ubuntu系统安装vscode教程

方法一: 依次输入如下命令 1、sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make 2、sudo apt-get update 3、sudo apt-get install ubuntu-make 4、umake ide visual-studio-code 提示输入a即可 方法二: 在windows系统下载安装包&#xff0c…

Vue2 源码漫游(一)

Vue2 源码漫游(一) 描述: Vue框架中的基本原理可能大家都基本了解了,但是还没有漫游一下源码。 所以,觉得还是有必要跑一下。 由于是代码漫游,所以大部分为关键性代码,以主线路和主要分支的代码…

神经网络中的反向传播算法

神经网络中的方向传播算法讲得复杂难懂。简单地说明它的原理: 神经网络:输入层,隐藏层,输出层。根据线性关系,激活函数,并最终根据监督学习写出误差表达式。此时,误差函数可写成,那么…

有限元笔记02:第三章

1.局部坐标到全局坐标变换 2.

Android 抽屉布局

目前部分APP使用一种类似抽屉式的布局,像QQ那种,感觉很炫,自己也一直想做一个像那样的布局,(ps网上很多这样的例子,我下面做的就是参考网上的改变的) 废话不就不说了,直接上代码 1、…

双目标定算法

坐标系基础知识: > 1.1. 从像素坐标系(u,v) 到 世界坐标系(Xw,Yw,Yw) 这里直接拿上篇博文的结果,中间省去了其它坐标系直接的关系,直接给出,如下所示: 公式如下: > 1.2. 符号规定( Notation ) 为了…

Excel使用控件创建动态地图图表

[本文软件Excel 2010] 效果图: 首先我们看一下数据源 数据源中第二列是对应图形的名称。首先创建图形,我们可能在网络中找到各个地图的矢量图形。不过不是每个地图图形都适合我们,或许企业划分非按照行政区划分。因此可以尝试自己绘制&#x…

使用Configuration Manager部署及管理软件更新(2)

承接上一篇文章:http://ericxuting.blog.51cto.com/8995534/1543835 一、 确定软件更新符合性 1. 打开Configuration Manager管理控制台,点击软件库,展开软件更新,点击所有软件更新 2. 点击主页中的运行摘要,等待对话框…

Fiddler 域名过滤

原来一直没意识到Fiddler过滤,导致每次抓包都要自己判断、搜索好多东西,真是呵呵! 过滤设置很简单,看懂一张图就解决问题了。 箭头 那两处设置下,圆圈处保存再进行抓包即可 转载于:https://www.cnblogs.com/eejron/p/4…

windows中VS卸载opencv配置,重新安装其他版本

1、找到工程的属性管理器,电机Debug64和Release64下面的 包含目录和库目录,删掉其原由配置的oepncv路径; 找到链接器中的附加依赖项,删掉原有的配置;

学习笔记(36):Python网络编程并发编程-IO模型介绍

立即学习:https://edu.csdn.net/course/play/24458/296460?utm_sourceblogtoedu I/O模型介绍:I/O模型表示处于等待状态的模型,如套接字通讯的accept和recv函数一样 1.同步I/O 2.异步I/O 3.阻塞I/O 4.非阻塞I/O

AD9 如何画4层pcb板

新建的PCB文件默认的是2层板,教你怎么设置4层甚至更多层板。在工具栏点击Design-->Layer Stack Manager.进入之后显示的是两层板,添加为4层板,一般是先点top layer, 再点Add Layer,再点Add Layer,这样就成了4层板。见下图。 有…

windows上使用cmake 编译yaml-cpp源码,生成yam-cpp.lib

1、打开cmake-gui 2、添加CmakeList 3、建立build 4、进入工程中生成debug和release版本的lib

BZOJ 3039: 玉蟾宫( 悬线法 )

最大子矩阵...悬线法..时间复杂度O(nm)悬线法就是记录一个H向上延伸的最大长度(悬线), L, R向左向右延伸的最大长度, 然后通过递推来得到. ------------------------------------------------------------------#include<bits/stdc.h>using namespace std;#define ok(c) …