I wrote something similar, called Slinky [0], which also transparently compiles various compiled web langauges (SASS, HAML, CoffeeScript, TypeScript, etc.).
The issue with these systems is that they lie in between something like Python's SimpleHTTPServer and a complete frontend development tool like Grunt or Gulp. They're great for small projects, but have trouble scaling up.
Slinky looks very neat! I do feel it inhabits a very different niche from devd, though. I have no ambitions for devd to compete with tools like Grunt, Gulp or Slinky.
Devd has a simple job: it just serves files and triggers livereload when files change, and is completely agnostic about the build process. That means it works very well as a complement to Gulp - in fact, this is one of my primary use cases for devd. My gulp setups are simpler now: I've ditched Connect and node livereload libraries, and instead gulp JUST renders files to disk. It's early days, but having two sharp tools each doing what they do best seems to work well.
I should add that I definitely don't think there's one "right way" to do this stuff. I love the fact that we're free to explore variations to see what works and what doesn't. The more things we try the merrier!
Do you have an example gulpfile that uses devd? I've had a lot of trouble getting connect + nodemon to work well together and would love a better solution.
Devd doesn't appear in my gulpfiles at all, actually. Gulp literally just renders to disk. I then start devd separately with the appropriate livereload flags to handle the service end of things.
For instance, here's a devd command-line from the docs (https://github.com/cortesi/devd) that handles proxying local services, with a static directory overlaid. Gulp would be rendering assets into that static directory, the change would be noticed by devd, and liverload would be triggered.
While livereload is a very cool feature, I doubt that it brings a lot to the table in terms of functionality and user-friendliness. After all, web-users are accustomed to reloading a page when they want fresh results. What scenario do you have in mind where the use of livereload warrants the complications in the protocol?
I think you're confusing the who the "user" is in this case. It's not Joe Bloggs out on the internet who wants to see fresh content on your site; it's you, the web developer, working on your local machine, building a web site or application.
The live-reload functionality is there as a development workflow tool, to automatically reload the page to see the results of the latest code change, rather than manually switching to the browser and hitting ⌘R/F5.
I don't understand why developers like these small web server tools that you have to remember to start on every project you work with. Setting up Apache or Nginx is harder but you have to do it 1 time ever and then you're done. Just server your entire dev folder and be done with it, never have to worry about static file serving again.
I have never known Apache or Nginx to offer live reloading of changed assets. Sure, it only removes 4-5 keystrokes from your workflow, but if I were developing assets live, I could certainly see the value in my changes appearing live in a second window.
The simple (multi-endpoint) reverse proxying is certainly a nice-to-have when developing as well.
> Want to know what it's like to use your fancy 5mb HTML5 app from a mobile phone in Botswana? Look up the bandwidth and latency here [0]
In my experience I would take this listing as a grain of salt. Maybe that's what you get on a decent business connection, but a home or mobile connection is likely going to have a much higher latency. It also doesn't take into account where your servers are - latency from Europe to West US on a good connection is 200ms+.
Just what I need, even has the folder-index view that I need. Python SimpleHTTPServer has been getting stuck sometimes for me lately when used through Chrome. Maybe the way it loads resources in parallel changed or something.
Technically OP should have prefixed with "Show HN:" which is what it is perhaps.
Not all "Show HN:" posts exhibit brilliance or originality or solve a problem or as in this case solve a problem for the OP for which there is already an outstanding solution (I guess originality), but the existing solution doesn't fit their use-case.
And you know as hackers (I still am at 48 yrs old) if there's an itch needing to be scratched why not show off a bit of code, it's one of the best things about HN, we learn so much from each other this way, either through (constructive) criticism or just looking at a nice bunch of code.
Searching Caddy's Github repo, 0 hits on 'livereload'. I usually do the python or ruby one-liner when I need a quick webserver, but if devd does dead simple LiveReload I might start using it just for that.
This seems to be exactly what I needed for some of my projects. A simple application that can be used on my dev-system to be used as reverse-proxy for different servers.
Of course, I could use nginx, but fiddling with configuration files on dev-systems is not so cool. Also even nginx is not lightweight enough to me.
Devd is a single statically compiled binary with no external dependencies, and is released for OSX, Linux and Windows. Don't want to install Node or Python in that light-weight Docker instance you're hacking in? Just copy over the devd binary and be done with it.
The issue with these systems is that they lie in between something like Python's SimpleHTTPServer and a complete frontend development tool like Grunt or Gulp. They're great for small projects, but have trouble scaling up.
[0] https://github.com/mwylde/slinky