获得gulp使用livereload

时间:2014-01-28 14:46:47

标签: sass livereload gulp

我已经让我的Gulpfile来编译我的sass,并且只是“live-reload远离转储codekit”。我正在努力让这种风格的注射工作。我想设置一下:https://github.com/vohof/gulp-livereload

当我在终端中运行gulp时,它似乎编译了sass,但它并没有注入样式。我究竟做错了什么?我在chrome +以下节点模块中安装了livereload扩展:

  "devDependencies": {
    "gulp": "~3.5.0",
    "gulp-sass": "~0.6.0"
  },
  "dependencies": {
    "gulp-livereload": "~0.2.0",
    "tiny-lr": "0.0.5"
  }

我的gulpfile看起来像这样:

var gulp = require('gulp');

//plugins
var sass = require('gulp-sass'),
    lr = require('tiny-lr'),
    livereload = require('gulp-livereload'),
    server = lr();

gulp.task('sass', function () {
    gulp.src('./scss/*.scss')
        .pipe(sass())
        .pipe(gulp.dest('./'))
        .pipe(livereload(server));
});


// Rerun tasks when a file changes
gulp.task('watch', function () {
    server.listen(35729, function (err) {

        if (err) return console.log(err);

        gulp.watch('scss/**/*.scss', ['sass']);

    });
});





// The default task (called when you run 'gulp' from cli)
// "sass" compiles the sass to css
// "watch" looks for filechanges, and runs tasks accordingly
gulp.task('default', ['sass', 'watch']);

非常感谢任何帮助。 谢谢!

6 个答案:

答案 0 :(得分:12)

你正在运行localhost吗?从Chrome中的插件进入设置,然后选中文件网址的选项:chrome:// extensions /

答案 1 :(得分:4)

如果您使用的是gulp-livereload,我认为使用tiny-lr毫无意义。

您可以在此处找到LiveReload集成的工作示例:

https://github.com/kriasoft/spa-seed.front-end - SPA前端入门套件

答案 2 :(得分:4)

刚刚遇到这个精彩的教程,解释了使用Gulp实现Livereload的所有要点:

http://rhumaric.com/2014/01/livereload-magic-gulp-style/

答案 3 :(得分:2)

这是我的解决方案

  • 只需要这个npm模块 npm install gulp gulp-sass gulp-livereload express --save-dev

  • /app/styles和Html文件中的Scss文件放在/app/

  • 为Chrome安装live-reload-plugin

  • 转到http://localhost:4000并激活当前标签的插件

完成: - )

(不要忘记更改项目的sass设置。如果您使用scss而不是sass,请将indentedSyntax设置为false

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

gulp.task('sass', function() {
  gulp.src('app/styles/*.sass')
    .pipe(sass({
      includePaths: ['app/styles'],
      indentedSyntax : true,
      errLogToConsole: true
    }))
    .pipe(gulp.dest('app/css'))
    .pipe(livereload());
});

gulp.task('serve', function(done) {
  var express = require('express');
  var app = express();
  app.use(express.static(__dirname + '/app'));
  app.listen(4000, function () {
     done();
  });
});

gulp.task('html', function() {
  gulp.src('app/**/*.html')
    .pipe(livereload());
});

gulp.task('watch', function() {
  gulp.watch('app/styles/*.sass', ['sass']);
  gulp.watch('app/**/*.html', ['html']);

  livereload.listen();
});

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

答案 4 :(得分:2)

我已通过浏览器扩展启用了livereload,但我需要做的最后一件事就是单击此按钮以在单个选项卡上“激活”它。 enter image description here

答案 5 :(得分:1)

我在没有浏览器插件的情况下运行了gulp和livereload。

var http = require('http')
, path = require('path')
, Promise = Promise || require('es6-promise').Promise
, express = require('express')
, gulp = require('gulp')
, log = require('gulp-util').log
, tinylr = require('tiny-lr')
, livereload = require('gulp-livereload')

, ROOT = 'dist'
, GLOBS = [path.join(ROOT, "/**/*")]
, PORT = 8000
, PORT_LR = PORT + 1

, app = express()
;

app.use(require('connect-livereload')({port: PORT_LR}))
app.use('/', express.static("./dist"))

http.createServer(app).listen(PORT, function() {
  log("Started express server on http://localhost:" + PORT);
});

lrUp = new Promise(function(resolve, reject) {
  lrServer = tinylr()
  lrServer.listen(PORT_LR, function(err) {
    if (err) return reject(err)
    resolve(lrServer)
  })
})

gulp.watch(GLOBS, function(evt) {
  if (evt.type === 'deleted') return

  lrUp.then(function(lrServer) {
    log("LR: reloading", path.relative(ROOT, evt.path));
    gulp.src(evt.path).pipe(livereload(lrServer))
  })
  .catch(console.log)
});

享受:)