All Projects → osteele → Gojekyll

osteele / Gojekyll

Licence: mit
A fast clone of the Jekyll blogging engine, in Go

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Gojekyll

Jekyll
🌐 Jekyll is a blog-aware static site generator in Ruby
Stars: ✭ 43,803 (+70550%)
Mutual labels:  jekyll, static-site-generator, blog-engine, liquid
Glim
Static site generator which is semi-compatible with Jekyll
Stars: ✭ 76 (+22.58%)
Mutual labels:  jekyll, static-site-generator, liquid
Heckle
✒️ Jekyll in Haskell (feat. LaTeX)
Stars: ✭ 80 (+29.03%)
Mutual labels:  jekyll, static-site-generator, blog-engine
Zola
A fast static site generator in a single binary with everything built-in. https://www.getzola.org
Stars: ✭ 7,823 (+12517.74%)
Mutual labels:  static-site-generator, blog-engine
Jekyll Rss Feeds
Templates for rendering RSS feeds for your Jekyll blog
Stars: ✭ 627 (+911.29%)
Mutual labels:  jekyll, liquid
Wowchemy Hugo Modules
🔥 Hugo website builder, Hugo themes & Hugo CMS. No code, build with widgets! 创建在线课程,学术简历或初创网站。
Stars: ✭ 6,093 (+9727.42%)
Mutual labels:  static-site-generator, blog-engine
Assemble
Community
Stars: ✭ 3,995 (+6343.55%)
Mutual labels:  static-site-generator, blog-engine
Jekyll Scholar
jekyll extensions for the blogging scholar
Stars: ✭ 872 (+1306.45%)
Mutual labels:  jekyll, static-site-generator
Nextein
A static site generator with markdown + react for Next.js
Stars: ✭ 825 (+1230.65%)
Mutual labels:  static-site-generator, blog-engine
Jekyll Liquify
A Jekyll filter that parses Liquid from front matter
Stars: ✭ 21 (-66.13%)
Mutual labels:  jekyll, liquid
Bengine
A Simple Data-Driven static site generator
Stars: ✭ 34 (-45.16%)
Mutual labels:  static-site-generator, blog-engine
Pretzel
A site generation tool (and then some) for .NET platforms
Stars: ✭ 592 (+854.84%)
Mutual labels:  jekyll, static-site-generator
Jekyll Lunr Js Search
[UNSUPPORTED] Jekyll + lunr.js = static websites with powerful full-text search using JavaScript
Stars: ✭ 536 (+764.52%)
Mutual labels:  jekyll, static-site-generator
Forty Jekyll Theme
A Jekyll version of the "Forty" theme by HTML5 UP.
Stars: ✭ 695 (+1020.97%)
Mutual labels:  jekyll, static-site-generator
Alembic
⚗️ A Jekyll boilerplate theme designed to be a starting point for any Jekyll website
Stars: ✭ 501 (+708.06%)
Mutual labels:  jekyll, liquid
Thenewdynamic.org
Resources for Designers and Developers using the JAMstack
Stars: ✭ 24 (-61.29%)
Mutual labels:  jekyll, static-site-generator
Jekyll Pug
Jekyll Plugin That Allows You To Use Pug
Stars: ✭ 30 (-51.61%)
Mutual labels:  jekyll, static-site-generator
Ng Static Site Generator
ng-static-site-generator is a webpack-based command line build tool that builds an Angular app and Jekyll-style blog entry html files into a static html and css website. It also supports building a client app so you can have static pages that are also capable of running dynamic functionality coded in Angular.
Stars: ✭ 42 (-32.26%)
Mutual labels:  jekyll, static-site-generator
Jekyll Timeline
Timeline / Résumé Theme with Jekyll
Stars: ✭ 46 (-25.81%)
Mutual labels:  jekyll, liquid
Vuepress
📝 Minimalistic Vue-powered static site generator
Stars: ✭ 19,730 (+31722.58%)
Mutual labels:  static-site-generator, blog-engine

Gojekyll

Gojekyll is a partially-compatible clone of the Jekyll static site generator, written in the Go programming language. It provides build and serve commands, with directory watch and live reload.

  Gojekyll Jekyll Hugo
Stable
Fast
(~20×Jekyll)
Template language Liquid Liquid Go templates
SASS
Jekyll compatibility partial
Plugins some yes ?
Windows support
Implementation language Go Ruby Go

Usage

gojekyll build       # builds the site in the current directory into _site
gojekyll serve       # serve the app at http://localhost:4000; reload on changes
gojekyll help
gojekyll help build

Installation

Binary Downloads

  1. Ubuntu (64-bit) and macOS binaries are available from the releases page.
  2. [Optional] Highlight. To use the {% highlight %} tag, you need Pygments: pip install Pygments.
  3. [Optional] Themes. To use a theme, you need to install Ruby and bundler. Create a Gemfile that lists the theme., and run bundle install. The Jekyll theme instructions provide more detail, and should work for Gojekyll too.

From Source

Pre-requisites:

  1. Install go (1) via Homebrew: brew install go; or (2) download.
  2. See items (2-3) under Binary Downloads, above, for optional installations.

First-time install:

go get github.com/osteele/gojekyll

Update to the latest version:

go get -u github.com/osteele/liquid github.com/osteele/gojekyll

[Optional] Install command-line autocompletion

Add this to your .bashrc or .zshrc:

# Bash:
eval "$(gojekyll --completion-script-bash)"
# Zsh:
eval "$(gojekyll --completion-script-zsh)"

Status

This project is at an early stage of development.

It works on the GitHub Pages sites that I care about, and it looks credible on a spot-check of other Jekyll sites.

Current Limitations

Missing features:

Also see the detailed status below.

Other Differences

These will probably not change:

By design:

  • Plugins must be listed in the config file, not a Gemfile.
  • The wrong type in a _config.yml file – for example, a list where a string is expected, or vice versa – is generally an error.
  • Server live reload is always on.
  • serve --watch (the default) reloads the _config.yml and data files too.
  • serve generates pages on the fly; it doesn't write to the file system.
  • Files are cached in /tmp/gojekyll-${USER}, not ./.sass-cache

Upstream:

  • Markdown:
    • < and > inside markdown is interpreted as HTML. For example, This is <b>bold</b> renders as bold. This behavior matches the Markdown spec, but differs from Jekyll's default Kramdown processor.
    • The autogenerated id of a header that includes HTML is computed from the text of the title, ignoring its attributes. For example, the id of ## Title (<a href="https://example.com/path/to/details">ref</a>)) is #title-ref, not #title-https-example-path-to-details-ref.
    • Autogenerated header ids replace punctuation by the hyphens, rather than the empty string. For example, the id of ## Either/or is #either-or not #eitheror; the id of ## I'm Lucky is #i-m-lucky not #im-lucky.

Muzukashii:

  • An extensible plugin mechanism – support for plugins that aren't compiled into the executable.

Feature Checklist

  • [ ] Content
    • [x] Front Matter
    • [x] Posts
    • [x] Static Files
    • [x] Variables
    • [x] Collections
    • [x] Data Files
    • [ ] Assets
      • [ ] Coffeescript
      • [x] Sass/SCSS
  • [ ] Customization
    • [x] Templates
      • [ ] Jekyll filters
        • [ ] scssify
        • [x] everything else
      • [x] Jekyll tags
    • [x] Includes
    • [x] Permalinks
    • [ ] Pagination
    • [ ] Plugins – partial; see here
    • [x] Themes
    • [x] Layouts
  • [x] Server
    • [x] Directory watch
  • [ ] Commands
    • [x] build
      • [x] --source, --destination, --drafts, --future, --unpublished
      • [x] --incremental, --watch, --force_polling, JEKYLL_ENV=production
      • [ ] --baseurl, --config, --lsi
      • [ ] --limit-posts
    • [x] clean
    • [x] help
    • [x] serve
      • [x] --open-uri, --host, --port
      • [x] --incremental, –watch, --force_polling
      • [ ] --baseurl, --config
      • [ ] --detach, --ssl-* – not planned
    • [ ] doctor, import, new, new-theme – not planned
  • [ ] Windows

Contributing

Bug reports, test cases, and code contributions are more than welcome.

Attribution

Gojekyll uses these libraries:

Package Author(s) Usage License
github.com/jaschaephraim/lrserver Jascha Ephraim Live Reload MIT License
github.com/kyokomi/emoji kyokomi jemoji plugin emulation MIT License
github.com/osteele/liquid yours truly Liquid processor MIT License
github.com/pkg/browser pkg serve --open-url option BSD 2-clause "Simplified" License
github.com/radovskyb/watcher Benjamin Radovsky Polling file watch (--force_polling) BSD 3-clause "New" or "Revised" License
github.com/russross/blackfriday Russ Ross Markdown processing Simplified BSD License
github.com/sass/libsass Listed here C port of the Ruby SASS compiler MIT License
github.com/tdewolff/minify Taco de Wolff CSS minimization MIT License
github.com/wellington/go-libsass Drew Wells Go bindings for libsass ???
gopkg.in/alecthomas/kingpin.v2 Alec Thomas command-line arguments MIT License
gopkg.in/yaml.v2 Canonical YAML support Apache License 2.0

In addition, the following pieces of text were taken from Jekyll and its plugins. They are used under the terms of the MIT License.

Source Use Description
Jekyll template documentation test cases filter examples
jekyll help command gojekyll help text help text
jekyll-feed plugin plugin emulation feed.xml template
jekyll-redirect-from plugin plugin emulation redirect page template
jekyll-sitemap plugin plugin emulation sitemap template
jekyll-seo-tag plugin plugin emulation feed template

The theme for in-browser error reporting was adapted from facebookincubator/create-react-app.

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

In addition to being totally and obviously inspired by Jekyll and its plugins, Jekyll's solid documentation was indispensible --- especially since I wanted to implement Jekyll as documented, not port its source code. The Jekyll docs were always open in at least one tab during development.

Related

Hugo is the pre-eminent Go static site generator. It isn't Jekyll-compatible (-), but it's highly polished, performant, and productized (+++).

jkl is another Go clone of Jekyll. If I'd found it sooner I might have started this project by forking that one. It's got a better name.

Liquid is a pure Go implementation of Liquid templates, that I finally caved and wrote in order to use in this project.

Jekyll, of course.

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].