我使用了gulp-webapp(来自yeoman的发生器)并添加了一些其他任务(如gulp-sass& gulp-coffee)。
但现在Livereload还没有开始。我需要看到像这样的东西
[gulp] Live reload server listening on: 35729
但输出看起来像
➜ app git:(master) ✗ gulp watch
[gulp] Using gulpfile ~/Dev/lsd/app/gulpfile.js
[gulp] Starting 'clean'...
[gulp] Starting 'styles'...
[gulp] Starting 'scripts'...
[gulp] Starting 'connect'...
[gulp] Finished 'connect' after 68 ms
Started connect web server on http://localhost:9000
[gulp] Finished 'scripts' after 181 ms
[gulp] gulp-size: total 128.75 kB
[gulp] Finished 'styles' after 806 ms
[gulp] Starting 'serve'...
[gulp] Finished 'serve' after 5.73 ms
我不明白,我的问题是什么。
我的gulpfile.coffee
:
"use strict"
gulp = require("gulp")
$ = require("gulp-load-plugins")()
gulp.task "styles", ->
gulp.src("app/styles/main.scss").pipe($.sass()).pipe($.autoprefixer("last 1 version")).pipe(gulp.dest(".tmp/styles")).pipe $.size()
gulp.task "scripts", ->
gulp.src("app/scripts/**/*.coffee").pipe($.coffee()).pipe gulp.dest(".tmp/scripts")
gulp.task "html", [
"styles"
"scripts"
], ->
jsFilter = $.filter("**/*.js")
cssFilter = $.filter("**/*.css")
gulp.src("app/*.html").pipe($.useref.assets()).pipe(jsFilter).pipe($.uglify()).pipe(jsFilter.restore()).pipe(cssFilter).pipe($.csso()).pipe(cssFilter.restore()).pipe($.useref.restore()).pipe($.useref()).pipe(gulp.dest("dist")).pipe $.size()
gulp.task "clean", ->
gulp.src([
".tmp"
"dist"
],
read: false
).pipe $.clean()
gulp.task "build", [
"html"
"fonts"
]
gulp.task "default", ["clean"], ->
gulp.start "build"
gulp.task "connect", ->
connect = require("connect")
app = connect().use(require("connect-livereload")(port: 35729)).use(connect.static("app")).use(connect.static(".tmp")).use(connect.directory("app"))
require("http").createServer(app).listen(9000).on "listening", ->
console.log "Started connect web server on http://localhost:9000"
gulp.task "serve", [
"styles"
"scripts"
"connect"
], ->
require("opn") "http://localhost:9000"
gulp.task "watch", [
"clean"
"serve"
], ->
server = $.livereload()
gulp.watch([
"app/*.html"
".tmp/styles/**/*.css"
".tmp/scripts/**/*.js"
]).on "change", (file) ->
server.changed file.path
gulp.watch "app/styles/**/*.scss", ["styles"]
gulp.watch "app/scripts/**/*.coffee", ["scripts"]
答案 0 :(得分:2)
我一直在使用gulp-webserver。它使得使用LiveReload变得非常简单。
gulp = require 'gulp'
webserver = 'gulp-webserver'
path = 'path'
gulp.task "webserver", ->
gulp.src(path.resolve("./dist")).pipe webserver(
port: "8080"
livereload: true
)
答案 1 :(得分:1)
我使用gulp和livereload,他们都很棒 看看here。 这是我用于开发目的的服务器任务。它完全有效。
此剪辑已经过测试
http = require "http"
path = require "path"
Promise = Promise or require("es6-promise").Promise
express = require "express"
gulp = require "gulp"
{log} = require("gulp-util")
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, ->
log "Started express server on http://localhost: #{PORT}"
lrUp = new Promise (resolve, reject) ->
lrServer = tinylr()
lrServer.listen PORT_LR, (err) ->
return reject(err) if err
resolve lrServer
gulp.watch GLOBS, (evt) ->
return if evt.type is "deleted"
lrUp.then (lrServer) ->
log "LR: reloading", path.relative(ROOT, evt.path)
gulp.src(evt.path).pipe livereload(lrServer)
注意我使用不同的端口进行livereload(9001),我这样做是因为你经常需要并行运行livereload服务器的多个实例。 建议使用端口35729仅在您使用浏览器扩展时,因为您使用的是连接中间件,所以不会这样做。
希望这有帮助
答案 2 :(得分:1)
实时重新加载非常容易使用gulp并表示代码在下面
var gulp = require('gulp');
gulp.task('express', function() {
var express = require('express');
var app = express();
app.use(require('connect-livereload')({port: 4002}));
app.use(express.static(__dirname));
app.listen(4000);
});
var tinylr;
gulp.task('livereload', function() {
tinylr = require('tiny-lr')();
tinylr.listen(4002);
});
function notifyLiveReload(event) {
var fileName = require('path').relative(__dirname, event.path);
tinylr.changed({
body: {
files: [fileName]
}
});
}
gulp.task('watch', function() {
gulp.watch('*.html', notifyLiveReload);
gulp.watch('js/*.js', notifyLiveReload);
gulp.watch('css/*.css', notifyLiveReload);
});
gulp.task('default', ['express', 'livereload', 'watch'], function() {
});
当您更改html,js和css文件时,它将重新加载
答案 3 :(得分:0)
我最初建议更改端口但是livereload并不喜欢这个选项。您需要做的是终止在端口35729上运行的服务,您可以通过从终端运行以下命令来执行此操作:
lsof -iTCP:35729
然后,这将为您提供在此端口上运行的过程列表,选择列表中的第一个PID,即3996然后运行此命令:
kill -9 3996
现在再次开始你的gulp脚本,它不会发生冲突。