Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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).

like image 695
cboettig Avatar asked Aug 05 '13 21:08

cboettig


2 Answers

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.

like image 90
untra Avatar answered Nov 20 '22 01:11

untra


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.

like image 43
Sean Redmond Avatar answered Nov 20 '22 00:11

Sean Redmond