【问题标题】:Browser sync reloading but CSS not changing with LESS and Gulp浏览器同步重新加载,但 CSS 不随 LESS 和 Gulp 改变
【发布时间】:2015-04-27 22:38:00
【问题描述】:

我正在尝试弄清楚如何将浏览器同步与 gulp 和 less 结合使用,以使浏览器在编译后在 less 文件中发生更改时自动更新。我现在所得到的是导致系统中似乎重新加载并显示消息“已连接到浏览器同步”,但我没有看到浏览器中发生更改。在禁用缓存的完整手动重新加载中,我看到了预期的更改,因此 css / less 任务似乎部分工作,但我在浏览器同步上遗漏了一些东西。

哦,我在主 .less 文件中使用 @import 语句来为每个单独的模块提取更少的文件。感谢您的时间和帮助!

gulp.task('less', function(){
return gulp.src(basepath + 'styles/emma.less')
    .pipe(plumber())
    .pipe(sourcemaps.init())
        .pipe(less())
        .pipe(autoprefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(minifyCSS())
    .pipe(sourcemaps.write('./'))
    .pipe(filesize())
    .pipe(gulp.dest( paths.dest + '/css' ))
    .pipe(reload({stream: true}));
});
gulp.task('browser-sync', function() {
    browserSync({
        proxy: 'localhost:8080'
    });
});    
//dev task to compile things on the fly
gulp.task('dev', ['browser-sync'], function(){
    gulp.watch(paths.scripts, ['scripts']);
    gulp.watch(paths.less, ['less']);
    gulp.watch(paths.templates, ['templates']);
});

【问题讨论】:

    标签: less gulp browser-sync


    【解决方案1】:

    让 browserSync 以这种方式工作的一个好方法是对生成的文件设置一个新的侦听器。您将 LESS 编译为 CSS,

    gulp.task('less', function(){
    return gulp.src(basepath + 'styles/emma.less')
        .pipe(plumber())
        .pipe(sourcemaps.init())
            .pipe(less())
            .pipe(autoprefixer({
                browsers: ['last 2 versions']
            }))
            .pipe(minifyCSS())
        .pipe(sourcemaps.write('./'))
        .pipe(filesize())
        .pipe(gulp.dest( paths.dest + '/css' ));
    });
    

    并在结果上放置一个文件观察器,触发重新加载:

    gulp.task('dev', ['browser-sync'], function(){
        gulp.watch(paths.less, ['less']);
        gulp.watch(paths.dest + '/css/**/*.css', reload);
    });
    

    原始代码无法运行的一个原因可能是在编译后丢失了对源文件的引用(不过,这只是一种假设)

    【讨论】:

    • 感谢您的输入,我继续并更改为这种方法,并且浏览器在 less 任务后重新加载,因此在 css 编译后它似乎正在刷新。但是,即使禁用了缓存,它也需要在自动刷新后手动刷新才能在浏览器中显示更改。这是我从 gulp 得到的输出:[13:34:35] 开始“少”... [13:34:35] 大小 emma.css.map : 208.83 kB [13:34:35] 大小 emma.css :204 B [13:34:35] 在 396 毫秒后完成“少” [BS] 重新加载浏览器...
    • 你能不能也给我 Chrome 开发者控制台的输出.. 它也应该说些什么:-)
    • 或者如果不是控制台,那么网络选项卡?顺便说一句:我稍微更新了我的答案以使其更清楚。例如,此设置:gist.github.com/ddprrt/391c3ba29bd0ec05261d 非常适合我
    • 我 99% 确定我的问题是因为这是一个由 Intellij IDE 启动的 Java Spring / Angular 项目,并且 Intellij Tomcat 实例没有重新部署与 gulp 任务同步的资源完成的。我验证了您的答案有效,因此我接受了它,即使我的环境中仍然存在一些问题。
    猜你喜欢
    • 2017-11-08
    • 2016-03-26
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多