使用gulp解决外部编辑器修改Eclipse文件延迟刷新
本人前端用惯了Hbuilder,修改了eclipse项目中的文件后,由于是外部编辑器修改过的,eclipse不会自动部署更新,一般按F5刷新项目,或者在 preferences > general > workspace 设置更新,但这个方法也需要等7、8秒才能被部署更新。本节介绍用gulp解决这个问题。
先睹为快,猛戳链接下载Demo :http://pan.baidu.com/s/1o8pmrH4
由于是在gulp环境下才能运行,不熟悉gulp的同学,可以参考这个比较详细的教程:http://www.ydcss.com/archives/18
需要说明,我的项目是在E盘下,因此gulp也安装在E盘下,这样可以加快gulp运行速度。不建议在项目下面安装gulp,因为gulp生成的node_modules目录文件很多,会造成项目每次启动很慢,并且对svn或者git也不友好。
运行cnpm install --save-dev 安装gulp
gulpfile.js文件如下:
var gulp = require('gulp'),
changed = require('gulp-changed'),
sass = require('gulp-sass'),
cssmin = require('gulp-clean-css'), //压缩css
autoprefixer = require('gulp-autoprefixer'), //添加浏览器前缀
clean = require('gulp-clean'), //清理文目标文件夹
csso = require('gulp-csso'), //合并css属性
csslint = require('gulp-csslint'), //css语法检查
csscomb = require('gulp-csscomb'), //css 样式表的各属性的顺序
cache = require('gulp-cache')
;
var target = 'E:/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/TalentAuction/';
//target = 'F:/test/';
var srcFile = 'E:/TalentAuction/WebRoot/',
srcFileView = srcFile+'views/**/*.html',
srcFileViews2 = srcFile+'views2/**/*.html',
srcFileJs = srcFile+'js/**/*.js',
srcFileCss = srcFile+'css/**/*.css',
srcFileSassCommon = srcFile+'sass2/common/**/*.scss',
srcFileSassController = srcFile+'sass2/controller/**/*.scss',
srcFileSassWap = srcFile+'sass2/wap/**/*.scss',
srcFileImg = srcFile+'css/img/**/*.{jpg,png}'
;
/*由于外部编辑器修改后,需要七八秒eclipse才能监听到文件,因此直接复制文件到eclipse发布的目录*/
gulp.task('copyViews', function() {
gulp.src(srcFileView)
.pipe(changed(target+'views'))
.pipe(gulp.dest(target+'views'));
});
gulp.task('copyViews2', function() {
gulp.src(srcFileViews2)
.pipe(changed(srcFileViews2))
.pipe(gulp.dest(target+'views2'));
});
gulp.task('copyJs', function() {
gulp.src(srcFileJs)
.pipe(changed(srcFileJs))
.pipe(gulp.dest(target+'js'));
});
gulp.task('copyCss', function() {
gulp.src(srcFileCss)
.pipe(changed(srcFileCss))
.pipe(gulp.dest(target+'css'));
});
gulp.task('copyImg', function() {
gulp.src(srcFileImg)
.pipe(changed(srcFileImg))
.pipe(gulp.dest(target+'css/img'));
});
gulp.task('sassCommon',function () {
gulp.src(srcFileSassCommon)
.pipe(sass())
.pipe(cssmin())
.pipe(autoprefixer())
.pipe(csso())
.pipe(csslint())
.pipe(gulp.dest(srcFile+'css/common2'))
.pipe(gulp.dest(target+'css/common2')); //同时更改到eclipse发布的目录下
});
gulp.task('sassController',function () {
gulp.src(srcFileSassController)
.pipe(sass())
.pipe(cssmin())
.pipe(autoprefixer())
.pipe(csso())
.pipe(csslint())
.pipe(gulp.dest(srcFile+'css/common2'))
.pipe(gulp.dest(target+'css/common2'));
});
gulp.task('sassWap',function () {
gulp.src(srcFileSassWap)
.pipe(sass())
.pipe(cssmin())
.pipe(autoprefixer())
.pipe(csso())
.pipe(csslint())
.pipe(gulp.dest(srcFile+'css/mobile'))
.pipe(gulp.dest(target+'css/mobile'));
});
gulp.task("autowatch",function(){
gulp.watch([srcFileView],['copyViews']);
gulp.watch([srcFileViews2],['copyViews2']);
gulp.watch([srcFileJs],['copyJs']);
//gulp.watch([srcFileCss],['copyCss']);
gulp.watch([srcFileSassCommon],['sassCommon']);
gulp.watch([srcFileSassController],['sassController']);
gulp.watch([srcFileSassWap],['sassWap']);
gulp.watch([srcFileImg],['copyImg']);
});
gulp.task('default',['autowatch']);//定义默认任务
下面开始解剖:
var gulp = require('gulp'),
changed = require('gulp-changed'),
sass = require('gulp-sass'),
cssmin = require('gulp-clean-css'), //压缩css
autoprefixer = require('gulp-autoprefixer'), //添加浏览器前缀
clean = require('gulp-clean'), //清理文目标文件夹
csso = require('gulp-csso'), //合并css属性
csslint = require('gulp-csslint'), //css语法检查
csscomb = require('gulp-csscomb'), //css 样式表的各属性的顺序
cache = require('gulp-cache')
;
这个是需要安装的插件,由于我项目用的sass,才需要这么多css相关的东西,没用过sass的同学可以先忽略,不影响后面的阅读。
项目目录以及发布目录:
var target = 'E:/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/TalentAuction/';
//target = 'F:/test/';
var srcFile = 'E:/TalentAuction/WebRoot/',
srcFileView = srcFile+'views/**/*.html',
srcFileViews2 = srcFile+'views2/**/*.html',
srcFileJs = srcFile+'js/**/*.js',
srcFileCss = srcFile+'css/**/*.css',
srcFileSassCommon = srcFile+'sass2/common/**/*.scss',
srcFileSassController = srcFile+'sass2/controller/**/*.scss',
srcFileSassWap = srcFile+'sass2/wap/**/*.scss',
srcFileImg = srcFile+'css/img/**/*.{jpg,png}'
;
target变量存放的是eclipse部署的目录,在eclipse启动完项目后,可以在console查看:

srcFile变量存放的是源文件的路径,箭头指向的文件夹下面的所有文件只要有了更新,都需要重新部署的

文件有更改后,重新部署需要执行的任务:
gulp.task('copyViews', function() {
gulp.src(srcFileView)
.pipe(changed(target+'views'))
.pipe(gulp.dest(target+'views'));
});
gulp.task('copyViews2', function() {
gulp.src(srcFileViews2)
.pipe(changed(srcFileViews2))
.pipe(gulp.dest(target+'views2'));
});
gulp.task('copyJs', function() {
gulp.src(srcFileJs)
.pipe(changed(srcFileJs))
.pipe(gulp.dest(target+'js'));
});
gulp.task('copyCss', function() {
gulp.src(srcFileCss)
.pipe(changed(srcFileCss))
.pipe(gulp.dest(target+'css'));
});
gulp.task('copyImg', function() {
gulp.src(srcFileImg)
.pipe(changed(srcFileImg))
.pipe(gulp.dest(target+'css/img'));
});
由于项目用的是sass,因此监听的是scss文件的变化:
gulp.task('sassCommon',function () {
gulp.src(srcFileSassCommon)
.pipe(sass())
.pipe(cssmin())
.pipe(autoprefixer())
.pipe(csso())
.pipe(csslint())
.pipe(gulp.dest(srcFile+'css/common2'))
.pipe(gulp.dest(target+'css/common2')); //同时更改到eclipse发布的目录下
});
gulp.task('sassController',function () {
gulp.src(srcFileSassController)
.pipe(sass())
.pipe(cssmin())
.pipe(autoprefixer())
.pipe(csso())
.pipe(csslint())
.pipe(gulp.dest(srcFile+'css/common2'))
.pipe(gulp.dest(target+'css/common2'));
});
gulp.task('sassWap',function () {
gulp.src(srcFileSassWap)
.pipe(sass())
.pipe(cssmin())
.pipe(autoprefixer())
.pipe(csso())
.pipe(csslint())
.pipe(gulp.dest(srcFile+'css/mobile'))
.pipe(gulp.dest(target+'css/mobile'));
});
如果有的同学没有用相关的预处理框架,而是直接是用css,也可以直接监听css文件。
添加监听任务:
gulp.task("autowatch",function(){
gulp.watch([srcFileView],['copyViews']);
gulp.watch([srcFileViews2],['copyViews2']);
gulp.watch([srcFileJs],['copyJs']);
//gulp.watch([srcFileCss],['copyCss']);
gulp.watch([srcFileSassCommon],['sassCommon']);
gulp.watch([srcFileSassController],['sassController']);
gulp.watch([srcFileSassWap],['sassWap']);
gulp.watch([srcFileImg],['copyImg']);
});
gulp.task('default',['autowatch']);//定义默认任务
完成后,每天上班执行 gulp autowatch ,然后挂着即可。
补充:还有一种更直接方法,参考解决外部编辑器修改Eclipse文件延迟刷新【补充】
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
欢迎转载,转载请注明作者:飘飞的夏秋 和出处 http://www.cnblogs.com/chenchenghua/p/5957642.html
使用gulp解决外部编辑器修改Eclipse文件延迟刷新的更多相关文章
- 解决外部编辑器修改Eclipse文件延迟刷新【补充】
在之前的文章,使用gulp解决外部编辑器修改Eclipse文件延迟刷新,原理是用gulp把更改过的项目文件直接复制一份到Tomcat的webapp.root下, 现在补充另外一种方法,双击Server ...
- 使用gulp解决外部编辑器修改Eclipse文件延迟更新的问题
本人前端用惯了Hbuilder,修改了eclipse项目中的文件后,由于是外部编辑器修改过的,eclipse不会自动部署更新,一般按F5刷新项目,或者在 preferences > genera ...
- 修改 eclipse 文件编码格式
如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,Eclipse工作空间(workspace)的缺省字符编码是操作系统缺省的编码,简 ...
- Vi编辑器修改文件.bash_profile可解决backspace出现乱码问题,rlwrap 的安装。
Vi编辑器修改文件.bash_profile可解决backspace出现乱码问题 使用SecureCRT或是pietty_ch连接到一台安装有Oracle DB 10g的RHEL4.2的机器,linu ...
- net 编译报错:编辑器或项目正在尝试签出在内存中修改的文件,这将导致保存该文件
1,报错提示: 编辑器或项目正在尝试签出在内存中修改的文件,这将导致保存该文件. 在生成过程中保存文件是危险的,这可能会在将来导致不正确的生成输出. 是否仍然继续签出? 2,原因:licenses.l ...
- eclipse 修改js文件无法编译到项目中
1.场景重现 在今天修改js文件完善功能时,发现在eclipse中修改了文件后,刷新页面功能无法同步: 2.分析原因 查看编译路径,文件没有修改: 2.1 可能是缓存问题: 2.2 项目未编译: 3. ...
- Gulp解决发布线上文件(CSS和JS)缓存问题
Gulp解决发布线上文件(CSS和JS)缓存问题 本文的缘由:目前经常线上发布文件后要不断的刷新页面及过很长时间,页面上的CSS和JS文件才能生效,特别对于目前做微信商城的时候,微信内置的浏览器缓存非 ...
- eclipse工具类及插件(修改eclipse.ini文件及作者名字)
https://jingyan.baidu.com/album/9158e0005633c0a254122807.html?picindex=1 (修改eclipse.ini文件及作者名字) http ...
- MyEclipse如何修改XML文件默认打开的编辑器
1.MyEclipse如何修改XML文件默认打开的编辑器 Windows--->Preferences--->General--->Editors--->File Associ ...
随机推荐
- R语言批量生成变量(变量名中含有参数)
我们经常会需要生成这样一类的变量,比如a1,a2,a3...... 这时候我们需要用到这两个函数:get()和assign() get()用法 get()函数只是在环境中搜索该变量名的变量,如果该变量 ...
- npm 安装命令中的参数 --save-dev
为项目安装模块的npm命令一般是—— npm i module-name 执行完毕后,需要手动把模块名称连同版本号一同的添加到模块配置文件package.json中的依赖里(dependencies) ...
- Rebranding(模拟+思维)
The name of one small but proud corporation consists of n lowercase English letters. The Corporation ...
- 【AC自动机】【树状数组】【dfs序】洛谷 P2414 [NOI2011]阿狸的打字机 题解
这一题是对AC自动机的充分理解和树dfs序的巧妙运用. 题目背景 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机. 题目描述 打字机上只有28个按键,分别印有26个小写英文字母和' ...
- 获取数组中多个相加等于0的一组数字 javascript
//获取数组中两个相加等于0的一对数字,比如[ [ -10, 10 ], [ -5, 5 ] ] var arr=[-5,10,1,-10,3,4,5,9] //对数组进行排序 arr.sort(fu ...
- 零基础搭建 spring mvc 4 项目(本文基于 Servlet 3.0)
作者各必备工具的版本如下: Tomcat:apache-tomcat-7.0.63 (下载链接) Java EE - Eclipse:Luna Service Release 1 v4.4.1 (下载 ...
- Quartz.NET 作业调度使用
Quartz.NET的使用方法有很多,今天使用Quartz.NET3.0.6的时候发现和2.0版本的语法不太一样,百度上找了一圈也没有找到解决办法 后来在GitHub上下载源代码解决了 实现每隔10s ...
- Murano Weekly Meeting 2016.08.16
Meeting time: 2016.August.16 1:00~2:00 Chairperson: Kirill Zaitsev, from Mirantis Meeting summary: ...
- Zookeeper概念学习系列之zookeeper是什么?
1. Zookeeper是Hadoop的分布式协调服务. 2. 分布式应用程序可以基于它,来实现同步服务,配置维护和命名服务等. 3. zookeeper可以保证数据在zookeeper集群之间的数据 ...
- 关于Json字符串"反序列化Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path..."
描述的很清楚就是说给它的不是一个对象,而是一个数组,所以他在建议你用JArray去解析,但是你明明就是给它的一个对象,并不是一个数组 这是我下意识的去把我的json字符串中的"[ ]&quo ...