2015-01-20 58 views
2

我已经建立了我的WordPress站点的本地副本,并吸引了Gulp来编译.less,JS等。 PHP的浏览器更新,但是当我保存.less文件时,.css被编译,但浏览器不更新。Gulp中的BrowserSync正在重新加载浏览器,但直播css不更新浏览器

当我在不同的网站上使用这个相同的gulp文件时,它完全可以正常工作。

谁能告诉我什么可能阻止BrowserSync更新CSS更改(但HTML/PHP更改更新正常),并会影响某些网站,但不是其他人? (我使用OSX Yosemite & Chrome浏览器FYI)。

这里是我的gulpfile:

/* config */ 
 
var PROXY_ADDR = 'playitinteractive.dev', 
 
\t ASSET_PATH = 'html/wp-content/themes/playitinteractive/assets'; 
 
\t 
 
var globs = { 
 
\t js: [ 
 
\t \t ASSET_PATH + '/js/src/**/*.js', 
 
\t ], 
 
\t less: [ 
 
\t \t ASSET_PATH + 'css/less/**/*.less', 
 
\t ], 
 
\t files: [ 
 
\t \t '**/.htaccess', 
 
\t \t '**/*.+(html|php|jpg|jpeg|gif|png)', 
 
\t ], 
 
}; 
 
var dests = { 
 
\t js: ASSET_PATH + '/js', 
 
\t less: ASSET_PATH + '/css', 
 
} 
 

 
/* includes */ 
 
var gulp   = require('gulp'), 
 
\t gutil  = require('gulp-util'), 
 
\t rename  = require('gulp-rename'), 
 
\t 
 
\t // watching 
 
\t browserSync = require('browser-sync'), 
 
\t \t 
 
\t // js 
 
\t concat  = require('gulp-concat'), 
 
\t uglify  = require('gulp-uglify'), 
 
\t ngAnnotate = require('gulp-ng-annotate'), 
 
\t 
 
\t // css 
 
\t less   = require('gulp-less'), 
 
\t autoprefixer = require('gulp-autoprefixer'), 
 
\t minifyCss = require('gulp-minify-css'); 
 

 

 
/* tasks */ 
 
gulp 
 
\t // build 
 
\t .task('js', function(){ 
 
\t \t return gulp.src(globs.js) 
 
\t \t \t .pipe(concat('base.js')) 
 
\t \t \t .pipe(ngAnnotate()) 
 
\t \t \t .pipe(gulp.dest(dests.js)) 
 
\t \t \t 
 
\t \t \t .pipe(rename({suffix: '.min'})) 
 
\t \t \t .pipe(uglify()) 
 
\t \t \t .pipe(gulp.dest(dests.js)) 
 
\t \t \t 
 
\t \t \t .pipe(browserSync.reload({stream:true})); 
 
\t }) 
 
\t .task('less', function(){ 
 
\t \t return gulp.src(globs.less.concat(['!' + ASSET_PATH + '/less/**/*.inc.less'])) 
 
\t \t \t .pipe(less()) 
 
\t \t \t .pipe(autoprefixer('last 2 versions')) 
 
\t \t \t .pipe(minifyCss()) 
 
\t \t \t .pipe(gulp.dest(dests.less)) 
 
\t \t \t 
 
\t \t \t .pipe(browserSync.reload({stream:true})); 
 
\t }) 
 
\t .task('build', ['js','less']) 
 
\t 
 
\t 
 
\t // watch 
 
\t .task('js.watch', ['js'], function(){ 
 
\t \t gulp.watch(globs.js, ['js']); 
 
\t }) 
 
\t .task('less.watch', ['less'], function(){ 
 
\t \t gulp.watch(globs.less, ['less']); 
 
\t }) 
 
\t .task('watch', ['js.watch','less.watch'], function(){ 
 
\t \t browserSync.init({ 
 
\t \t \t files: globs.files, 
 
\t \t \t proxy: PROXY_ADDR, 
 
\t \t \t watchOptions: {debounce: 400}, 
 
\t \t \t ghostMode: false, 
 
\t \t \t notify: false, 
 
\t \t \t open: !! gutil.env.open, // call `gulp --open` to start gulp and also open a new browser window 
 
\t \t }); 
 
\t }) 
 
\t 
 
\t // default 
 
\t .task('default', ['watch']) 
 
\t

{ 
 
    "devDependencies": { 
 
    "browser-sync": "^1.3.0", 
 
    "gulp": "^3.8.6", 
 
    "gulp-autoprefixer": "0.0.8", 
 
    "gulp-concat": "^2.3.4", 
 
    "gulp-less": "^1.3.3", 
 
    "gulp-minify-css": "^0.3.7", 
 
    "gulp-ng-annotate": "^0.2.0", 
 
    "gulp-rename": "^1.2.0", 
 
    "gulp-uglify": "^0.3.1", 
 
    "gulp-util": "^3.0.0" 
 
    } 
 
}

+0

你能检查你使用的浏览器同步的实际版本是什么?最新的是1.9.1。它的文档没有列出'browserSync.init'语法。 – Heikki 2015-01-21 14:32:23

+0

http://www.browsersync.io/docs/gulp/ – Heikki 2015-01-21 14:33:41

回答

1

发现看的CSS/.LESS变化的时候,发出─咽不重新加载页面(它只活着更新该特定文件) - 在我的主要主题文件夹styles.css加载我的实际.css机智h

@import url(“assets/css/base.css”);

由于页面并未刷新所有文件,因此此@import从未将新的base.css加载到自身中。

为了解决这个问题,我添加了第二个gulp-concat任务,以手动将base.css添加到文件中而不是@import规则(第二个concat不会缩小,从而保留主题信息)。