Gulp-livereload,-webserver和-embedlr。如何一起使用它们?

时间:2015-01-28 21:06:19

标签: javascript gulp livereload gulp-watch gulp-livereload

我尝试了解如何使用gulp这些有用且流行的插件。有我所拥有的:

  • localhost:8000
  • 上运行go(lang)服务器
  • app 文件夹下的静态/本地html文件,服务器用于构建页面
  • scss文件在同一目录下,转换为css然后再转换为autoprefixed

这是我的gulpfile.js:

var gulp = require('gulp'),
    sass = require('gulp-sass'),
    watch = require('gulp-watch'),
    autoprefixer = require('gulp-autoprefixer'),
    livereload = require('gulp-livereload');

// "./" - it's "app" directory
gulp.task('default', function() {
    return gulp.src('./*.scss')
        .pipe(watch('./*.scss'))
        .pipe(sass())
        .pipe(autoprefixer('> 5%'))
        .pipe(gulp.dest('./'));
});

所以我需要的是:

  • 观看html,css / scss文件进行更改并在 localhost:8000 (chrome的打开标签页)上重新加载
  • 如果不需要使用它会很棒:
    • livereload chrome plugin
    • expressjs framework
  • 重新加载html页面,如果它直接打开就像没有服务器的文件一样

我读过可以通过 gulp-embedlr gulp-webserver 来实现这一目标。如果是的话,该怎么做?

1 个答案:

答案 0 :(得分:1)

好的,我找到的最佳解决方案是使用Gulp + BrowserSync!这是一个很好的解决方案。

以下是 gulpfile.js 的代码:

var gulp = require('gulp'),
    sourcemaps = require('gulp-sourcemaps'),
    sass = require('gulp-sass'),
    watch = require('gulp-watch'),
    autoprefixer = require('gulp-autoprefixer'),
    browserSync = require('browser-sync'),
    reload = browserSync.reload;

gulp.task('browserSync', function() {
    browserSync({
        //logConnections: false,
        //logFileChanges: false,
        notify: false,
        open: false,
        server: {
            baseDir: "./"
        }
    });
});

gulp.task('sass', function() {
    return gulp.src('./css/*.scss')
        .pipe(sourcemaps.init())
            .pipe(sass())
        .pipe(autoprefixer('> 5%'))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest('./css'))
        .pipe(reload({stream:true}));
});

gulp.task('watch', function() {
    gulp.watch('./css/*.scss', ['sass']);
    gulp.watch('./*.html', reload);
});

gulp.task('default', ['watch', 'sass', 'browserSync']);

解释上面的代码是没有意义的。请阅读:http://www.browsersync.io/docs/gulp/