本人前端用惯了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. useful commands for docker beginner

    You may want to add my wechat public account or add my technical blog's RSS feed This list is meant ...

  2. 分布式理论之一:Paxos算法的通俗理解

    维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性 ...

  3. ABP(现代ASP.NET样板开发框架)系列之12、ABP领域层——工作单元(Unit Of work)

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之12.ABP领域层——工作单元(Unit Of work) ABP是“ASP.NET Boilerplate Pr ...

  4. Entity Framework 6 Recipes 2nd Edition(11-11)译 -> 在LINQ中调用数据库函数

    11-11. 在LINQ中调用数据库函数 问题 相要在一个LINQ 查询中调用数据库函数. 解决方案 假设有一个任命(Appointment )实体模型,如Figure 11-11.所示, 我们想要查 ...

  5. xamarin android,UWP 网络类型和IP地址

    App开发经常要判断网络连通情况,并判断网络类型,获取网络IP.xamarin中可以使用Dependencies提供各平台下的方法,现把各平台代码记录如下: using System; using S ...

  6. webService学习之路(二):springMVC集成CXF快速发布webService

    继上一篇webService入门之后,http://www.cnblogs.com/xiaochangwei/p/4969448.html ,现在我将我周六在家研究的结果公布出来 本次集成是基于之前已 ...

  7. JSON(及其在ajax前后端交互的过程)小识

    一. json介绍 json是一种轻量级的数据交换格式,规则很简单: 并列的数据之间用逗号(,)分隔: 映射用冒号(:)表示: 并列数据的集合(数组)用方括号([])表示: 映射的集合(对象)用大括号 ...

  8. Laravel学习--关于Relation的坑

    前段时间比较忙,就没有坚持写博客,但发现这周末再想捡起来,好难,一直到了今天晚上,才决定坐下来写一篇,哈哈哈-- 最近在用 Laravel 5.2,踩了几个关于 Relation 的坑,在这里用博客记 ...

  9. Vertica数据库常用管理命令汇总

    1.查询数据库是否有等待 select * from resource_queues where node_name=(select node_name from nodes order by nod ...

  10. jquery dataTable汉化(插件形式)

    1.jquery dataTable.js 官网:http://datatables.net/ 中文:http://dt.thxopen.com/ 2.汉化提示信息(放到xx.js中,引入即可) 注: ...