本人前端用惯了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文件延迟更新的问题的更多相关文章

  1. 使用gulp解决外部编辑器修改Eclipse文件延迟刷新

    本人前端用惯了Hbuilder,修改了eclipse项目中的文件后,由于是外部编辑器修改过的,eclipse不会自动部署更新,一般按F5刷新项目,或者在 preferences > genera ...

  2. 解决外部编辑器修改Eclipse文件延迟刷新【补充】

    在之前的文章,使用gulp解决外部编辑器修改Eclipse文件延迟刷新,原理是用gulp把更改过的项目文件直接复制一份到Tomcat的webapp.root下, 现在补充另外一种方法,双击Server ...

  3. 修改 eclipse 文件编码格式

    如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,Eclipse工作空间(workspace)的缺省字符编码是操作系统缺省的编码,简 ...

  4. Intellij Idea修改css文件即时更新生成效果

    用来Idea也有一段时间了,觉得还是有很多地方没有用到,今天遇到了一个问题,百度了解决方法,正好在这里做一个小记录 主要问题是我在idea的项目里面修改了css文件,然后运行web文件,发现并没有做到 ...

  5. Vi编辑器修改文件.bash_profile可解决backspace出现乱码问题,rlwrap 的安装。

    Vi编辑器修改文件.bash_profile可解决backspace出现乱码问题 使用SecureCRT或是pietty_ch连接到一台安装有Oracle DB 10g的RHEL4.2的机器,linu ...

  6. net 编译报错:编辑器或项目正在尝试签出在内存中修改的文件,这将导致保存该文件

    1,报错提示: 编辑器或项目正在尝试签出在内存中修改的文件,这将导致保存该文件. 在生成过程中保存文件是危险的,这可能会在将来导致不正确的生成输出. 是否仍然继续签出? 2,原因:licenses.l ...

  7. eclipse 修改js文件无法编译到项目中

    1.场景重现 在今天修改js文件完善功能时,发现在eclipse中修改了文件后,刷新页面功能无法同步: 2.分析原因 查看编译路径,文件没有修改: 2.1 可能是缓存问题: 2.2 项目未编译: 3. ...

  8. Gulp解决发布线上文件(CSS和JS)缓存问题

    Gulp解决发布线上文件(CSS和JS)缓存问题 本文的缘由:目前经常线上发布文件后要不断的刷新页面及过很长时间,页面上的CSS和JS文件才能生效,特别对于目前做微信商城的时候,微信内置的浏览器缓存非 ...

  9. eclipse工具类及插件(修改eclipse.ini文件及作者名字)

    https://jingyan.baidu.com/album/9158e0005633c0a254122807.html?picindex=1 (修改eclipse.ini文件及作者名字) http ...

随机推荐

  1. MongoDB与PostgresQL无责任初步测试

    PostgresQL一秒能插入多少条记录,MongoDB呢?读取的情况又如何?我写了一些简单的程序,得出了一些简单的数据,贴在这里分享,继续往下阅读前请注意下本文标题中的“无责任”,这表示此测试结果不 ...

  2. ASP.NET MVC Model元数据(三)

    ASP.NET MVC Model元数据(三) 前言 在上篇中我们大概的讲解了Model元数据的生成过程,并没有对Model元数据本身和详细的生成过程有所描述,本篇将会对详细的生成过程进行讲解,并且会 ...

  3. Sass用法指南

    写在前面的话:随着CSS文件越来越大,内容越来越复杂,对其进行很好的维护将变的很困难.这时CSS预处理器就能够帮上大忙了,它们往往拥有变量.嵌套.继承等许多CSS不具备的特性.有很多CSS预处理器,这 ...

  4. PL/SQL快速选中一行并执行

    首先确认光标必须处在该行的位置 按下End键位 其次按下shift+home 最后按下F8执行

  5. [转]Fiddler抓取Android真机上的HTTPS包

    此篇文章转载自:http://blog.csdn.net/roland_sun/article/details/30078353 工作中经常会需要对一些app进行抓包, 但是每次默认都是只抓http请 ...

  6. C#设计模式-中介者模式

    在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室.QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解. 一. 中介者(Mediator)模式 从 ...

  7. android快捷开发之Retrofit网络加载框架的简单使用

    大家都知道,安卓最大的特点就是开源化,这自然会产生很多十分好用的第三方API,而基本每一个APP都会与网络操作和缓存处理机制打交道,当然,你可以自己通过HttpUrlConnection再通过返回数据 ...

  8. ASP.NET Core 中文文档 第三章 原理(13)管理应用程序状态

    原文:Managing Application State 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:高嵩 在 ASP.NET Core 中,有多种途径可以对应用程序的状态进行 ...

  9. 创建或打开解决方案时提示"DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x86"错误的解决方案

    提示"DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x86"错误的解决方案: 1.检查是否有C:\Program Files (x86)\d ...

  10. ICSharpCode.SharpZipLib 压缩、解压文件 附源码

    http://www.icsharpcode.net/opensource/sharpziplib/ 有SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, GZip, ...