1
0
mirror of https://github.com/danog/gojekyll.git synced 2024-11-30 09:49:00 +01:00
Go to file
2017-06-28 11:25:58 -04:00
cmd/gojekyll Create separate Pipeline struct 2017-06-24 13:30:01 -04:00
collections Collections holds a Container, not a RenderingPipeline 2017-06-24 12:03:33 -04:00
config Pipelines package 2017-06-24 14:00:19 -04:00
constants Fix some lint comments 2017-06-23 10:41:17 -04:00
example Improve example 2017-06-27 22:55:39 -04:00
helpers Reorganize server, sites, helpers files; fix some bugs 2017-06-23 09:32:08 -04:00
liquid Switch from acstech/liquid -> osteele/liquid 2017-06-28 11:25:58 -04:00
pages Pipelines package 2017-06-24 14:00:19 -04:00
pipelines Display filename for liquid render errors 2017-06-27 22:56:41 -04:00
scripts Add scripts/coverage 2017-06-22 17:37:32 -04:00
server Pipelines package 2017-06-24 14:00:19 -04:00
sites Pipelines package 2017-06-24 14:00:19 -04:00
templates Pipelines package 2017-06-24 14:00:19 -04:00
.gitignore Add scripts/coverage 2017-06-22 17:37:32 -04:00
.gometalinter.json Add a gometalinter config file 2017-06-21 10:53:50 -04:00
.travis.yml Add --deadline to travis lint 2017-06-22 15:53:34 -04:00
LICENSE Create LICENSE 2017-06-11 19:18:10 -04:00
Makefile Add scripts/coverage 2017-06-22 17:37:32 -04:00
README.md Switch to osteele/liquid 2017-06-27 22:59:53 -04:00

Go Jekyll

When I grow up, I want to be a Go implementation of Jekyll.

Status

Build Status Go Report Card

This project is missing more functionality than it implements. It may accidentally work on tiny or simple sites.

  • Content
    • Front Matter
    • Posts
      • Categories
      • Tags
      • Drafts
      • Future
      • Related
    • Static Files
    • Variables
    • Collections
    • Data Files
      • CSV
      • JSON
      • YAML
    • Assets
      • Coffeescript
      • Sass/SCSS
        • Sass caching
  • Customization
    • Templates
      • link tag
      • Remaining Jekyll Liquid tags
      • Jekyll Liquid filters
    • Includes
      • parameters
      • include_relative
    • Permalinks
    • Pagination
    • Themes
    • Layouts
  • Server
    • Directory watch
    • Live reload
  • Windows -- not tested

Intentional differences from Jekyll:

  • serve doesn't write to the file system
  • No .sass-cache. (When caching is added, it will go to a temporary directory.)
  • Server live reload is always on.

Install

go get -u osteele/gojekyll/cmd/gojekyll

Usage

gojekyll -s path/to/site build                # builds into ./_site
gojekyll -s path/to/site serve                # serves from memory, w/ live reload
gojekyll help
gojekyll help build

Contributing

Install package dependencies and development tools:

make setup

Testing

make test
make lint
gojekyll  -s path/to/site render index.md      # render a file to stdout
gojekyll  -s path/to/site render /             # render a URL to stdout
gojekyll  -s path/to/site variables /          # print a file or URL's variables
./scripts/coverage && go tool cover -html=coverage.out

./scripts/gojekyll is an alternative to the gojekyll executable, that uses go run each time it's invoked.

Profiling

gojekyll -s path/to/site profile
go tool pprof gojekyll gojekyll.prof

Credits

Jascha Ephraim's jaschaephraim/lrserver Live Reload server.

https://github.com/pkg/browser to open the URL in a browser.

The gopher image in the test directory is from Wikimedia Commons. It is used under the Creative Commons Attribution-Share Alike 3.0 Unported license.

Hugo isn't Jekyll-compatible (-), but actually works (+++).

Jekyll, of course.

This project is a clean-room implementation of Jekyll, based solely on Jekyll's documentation and testing it against a few sites. Hopefully this can pay off in contributing towards Jekyll's documentation.

License

MIT

Alternate Naming Possibilities

  • "Gekyll". (Hard or soft "g"? See gif.)
  • "Gekko"