本人前端用惯了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. 解决外部编辑器修改Eclipse文件延迟刷新【补充】

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

  2. 使用gulp解决外部编辑器修改Eclipse文件延迟更新的问题

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

  3. 修改 eclipse 文件编码格式

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

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

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

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

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

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

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

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

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

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

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

  9. MyEclipse如何修改XML文件默认打开的编辑器

    1.MyEclipse如何修改XML文件默认打开的编辑器 Windows--->Preferences--->General--->Editors--->File Associ ...

随机推荐

  1. Android 线程+Handler的使用

    1.介绍 2.线程的使用 (1)启动 (2)执行 3.xml布局 <?xml version="1.0" encoding="utf-8"?> &l ...

  2. Apache Shiro(四)-登录认证和权限管理WEB支持(Servlet)

    新建web项目 web.xml 修改web.xml,在里面加了个过滤器. 这个过滤器的作用,简单的说,就是 Shiro 入门里的TestShiro 这部分的工作,悄悄的干了. //加载配置文件,并获取 ...

  3. mysql一些简单操作

    创建数据库,删除数据库 create database databasename charset utf8 collate utf8_general_ci;设置字符集utf8,校对规则utf8_gen ...

  4. Python Flask框架之页面跳转

    IDE用的PyCharm(还是vs强大啊). 项目结构: 2:页面: <!doctype html> <html lang="zh"> <head&g ...

  5. nginx 地址重写

    例如, www.baidu.com    跳到   www.baidu.com/index.html #if ( $http_host ~* "^(.*)\.baidu\.com$" ...

  6. sql server优化思路

    查询速度慢的原因很多,常见如下几种:    1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)    2.I/O吞吐量小,形成了瓶颈效应.    3.没有创建计算列导致查询不优化 ...

  7. 1.nginx安装和配置

    1.安装 1.1安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel wget 1. ...

  8. Python 中的反射和自省

    本文主要介绍Python中的反射和自省,以及该机制的简单应用 熟悉Java的程序员,一定经常和Class.forName打交道.即使不是经常亲自调用这个方法,但是在很多框架中(spring,eclip ...

  9. TOJ 1883 Domino Effect

    Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...

  10. mongodb连接失败原因排查

    安装了mongodb,添加了管理员root和test数据库的用户rex,并且开启的用户认证. 按照说明文档连接mongodb数据库:$mongo = new Mongo("mongodb:/ ...