cboettig
cboettig

Reputation: 12697

jekyll serve (locally) without building

Jekyll generates a static site in a given directory (by default, _site). Running jekyll serve builds the site and then sets up a server such that the site can be viewed locally on the specified port (e.g. localhost:4000 by default). I'm wondering if there is a way to activate this serve behavior without triggering the gem to recompile the site first.

Alternatively, it would be sufficient to use some other tool to serve the site from a localhost port without using jekyll, but I'm not sure how to do that (node.js?). While I can open the static files directly in a browser, this doesn't find all the relative url links (to css, etc) correctly, defaulting links such as /css/default.css to the root file://css/default.css instead, which of course does not exist there.

(This would be useful, for instance, because Jekyll takes quite some time to build a large site, and certain plugins I use need internet access to various APIs. It would be nice to view the site offline without triggering these).

Upvotes: 9

Views: 3183

Answers (2)

untra
untra

Reputation: 116

jekyll serve --skip-initial-build 

This will serve the site, skipping the initial build process. Additional configuration options for building and serving the site can be found here.

Upvotes: 10

Sean Redmond
Sean Redmond

Reputation: 4114

If you just want to serve an already built _site directory, there are any number of ways to quickly run a web server locally. With ruby you can just cd into _site and use WEBrick like so:

ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port=>4000,:DocumentRoot=>".").start'

or python's SimpleHTTPServer:

python -mSimpleHTTPServer 4000

Both these set the port to 4000, but that could be any number.

Upvotes: 7

Related Questions