【问题标题】:How to make a refresh in browser with gulp如何使用 gulp 在浏览器中进行刷新
【发布时间】:2017-04-14 16:28:17
【问题描述】:

我有一个应用在 iis 中,它是一个用 angularjs 和 webapi C# 2.0 制作的应用,我想创建一个任务,在我保存任何 js 文件后立即更新浏览器。

gulp 版本:3.9.1

gulp.task('livereload', function () {
    gulp.watch(config.files.js);
});

【问题讨论】:

    标签: javascript gulp


    【解决方案1】:

    gulp-livereload

    用于 livereload 的轻量级 gulp 插件,可与 livereload chrome extensionlivereload middleware

    设置简单:

    var gulp = require('gulp'),
        less = require('gulp-less'),
        livereload = require('gulp-livereload');
    
    gulp.task('less', function() {
      gulp.src('less/*.less')
        .pipe(less())
        .pipe(gulp.dest('dist'))
        .pipe(livereload());
    });
    
    gulp.task('watch', function() {
      livereload.listen();
      gulp.watch('less/*.less', ['less']);
    });
    

    Browsersync

    Gulp 没有官方的 Browsersync 插件,因为它不是 需要!您只需require 模块,使用API 并配置 它与options.

    新来的酷小孩,大部分人都已经搬过来了。

    Browsersync 支持流,因此您可以在以下位置调用 reload 任务期间的特定点,所有浏览器都将被告知 变化。因为 Browsersync 只关心你的 CSS 完成编译 - 确保在 gulp.dest 之后调用 .stream()

    var gulp = require('gulp'),
        browserSync = require('browser-sync').create(),
        sass = require('gulp-sass');
    
    // Static Server + watching scss/html files
    gulp.task('serve', ['sass'], function() {
    
        browserSync.init({
            server: "./app"
            // or
            // proxy: 'yourserver.dev'
        });
    
        gulp.watch("app/scss/*.scss", ['sass']);
        gulp.watch("app/*.html").on('change', browserSync.reload);
    });
    
    // Compile sass into CSS & auto-inject into browsers
    gulp.task('sass', function() {
        return gulp.src("app/scss/*.scss")
            .pipe(sass())
            .pipe(gulp.dest("app/css"))
            .pipe(browserSync.stream());
    });
    
    gulp.task('default', ['serve']);
    

    对于手动重新加载:

    // ...
    var reload = browserSync.reload;
    
    // Save a reference to the `reload` method
    
    // Watch scss AND html files, doing different things with each.
    gulp.task('serve', function () {
    
        // Serve files from the root of this project
        browserSync.init({/* ... */});
    
        gulp.watch("*.html").on("change", reload);
    });
    

    Why Browsersync is better?

    它不限于单个设备,它可以跨桌面和 同时移动设备。它将更新代码更改, 自动同步滚动位置和表单输入 浏览器和设备。

    【讨论】:

    • 非常感谢。我被浏览器同步卡住了,在编译后没有监听 .css 中所做的更改(在此处使用 less),但后来你告诉我我错过了 .pipe(browserSync.stream())。每当我需要创建一个监听方法时,我都会记住这个!
    • @Emile Bergson 我想尝试 livereload,因为我在过去设置浏览器同步时遇到了麻烦,这对于我需要的东西来说有点矫枉过正,但它似乎不起作用。您知道过去几年 livereload 是否发生了变化吗?
    • @DavidA.French 从未使用过这些库。我只知道它们存在。现在,大多数人使用的是带有开发服务器和热模块重新加载的 Webpack。
    • @EmileBergeron 是的,我以前使用过 webpack。对于静态 html 内容或简单的 wp 主题来说,这有点痛苦,所以我也一直在学习 gulp,因为我发现它更轻量级。无论如何,谢谢!
    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    相关资源
    最近更新 更多