char1ee

a tool to build static autoreload(livereload) server

npm install char1ee
9 downloads in the last month

Puer

一个在当前(或指定目录)开启静态服务器的命令行工具,css刷新样式,其它刷新页面.是的,跟F5差不多

新版本去除了socket.io的依赖, 改为使用SSE代替, 所以IE不支持了

安装

npm -g install puer

当然你也可以fork一份自己折腾:

git clone https://github.com/leeluolee/puer

使用

命令行

90%的情况下, 你应该是这样用的...

cd path/to/your/static/dir #到你想去地方
puer #泡一杯普洱

或许你想更深入一点...

luobo(master) ✗> puer --help

Usage:  puer [options...]

Options:
  -a,--addon <file> your addon's path
  -p,--port <port>  server's listen port, 8000 default
  -d,--dir <dir>  your customer working dir. default current dir 
     --no-reload    close  auto-reload feature,(not recommended)
     --no-launch    close the auto launch feature
  -i,--ignored <regexp> ignored file under watching
  -t,--time <ms>  watching interval time (ms), default 500ms
  -h,--help     help list
           help list

其中, addon代表你可以传入一个自己的脚本(通常是路由定义用以测试, 也可以拦截.less这些资源请求), 这个模块输出一个函数, 可以获得当前的express的app实例,以及命令行传入的options(一般没啥用)



module.exports = function(app, options){
  app.get(/(.*\.less)/, function(req, res){
    res.send("less file") // 当然一般会编译了之后发送,这里只是实例
  })
}

其实就是加入了一些路由规则而已,具体测试请看test目录

仅作为connect中间件使用(> v0.0.6)

0.0.6版本的puer把监听部分抽了出来作为connect中间件require("puer").connect, 与connect.compress一样,因为拦截了res.write 你必须在static等可能发送html的中间件前的use这个中间件,这部分抽里出来主要是为了自动刷新NodeJS作为后台的动态网站(比如用模版输出),只要是content-type 是text/html的response就可以自动刷新

var connect = require("connect")
var path = require("path")
var http = require("http")
var puer = require("puer")
var app = connect()

// 可以配置三个参数, 以下为默认值
var options = {
    dir: "path/to/watch/folder", //__与命令行不同的是必须输入__
    interval: 500, // 监听文件的间隔,同上面的 -t --time参数
    ignored: /(\/|^)\..*|node_modules/  //忽略的监听文件,默认忽略dotfile 和 node_modules
}
// app 为你的connect 实例 或者 express 实例
// 这里的options就上面所示的三个参数
app.use(puer.connect(app, options))   //puer connect 中间件,要在static等可能发送请求的中间件之前
app.use("/", connect.static(__dirname))



http.createServer(app).listen(8001, function(){
    console.log("listen on 8001 port")
})

Changlog

  1. v0.0.6 可以作为connect中间件了, 改为使用更简单的HTML5的SSE实现推送, 解决了内存溢出的问题

LICENSE

MIT

npm loves you