All Projects → noflo → Noflo Jekyll

noflo / Noflo Jekyll

Flow-based reimplementation of the Jekyll static site generator

Programming Languages

coffeescript
4710 projects

Projects that are alternatives of or similar to Noflo Jekyll

Bulma Clean Theme
A clean and modern Jekyll theme based on Bulma
Stars: ✭ 194 (-11.42%)
Mutual labels:  jekyll
Choosealicense.com
A site to provide non-judgmental guidance on choosing a license for your open source project
Stars: ✭ 2,648 (+1109.13%)
Mutual labels:  jekyll
Jekyll Toc
Jekyll plugin which generates a table of contents.
Stars: ✭ 211 (-3.65%)
Mutual labels:  jekyll
Slate
Slate is a Jekyll theme for GitHub Pages
Stars: ✭ 195 (-10.96%)
Mutual labels:  jekyll
Fastpages
An easy to use blogging platform, with enhanced support for Jupyter Notebooks.
Stars: ✭ 2,888 (+1218.72%)
Mutual labels:  jekyll
Jmcglone.github.io
Data for jmcglone.com. Includes customization of Bootstrap 3.0. Blog and pages generated by Jekyll. Hosted on GitHub.
Stars: ✭ 203 (-7.31%)
Mutual labels:  jekyll
Material Jekyll Theme
Material Design inspired Jekyll Theme
Stars: ✭ 193 (-11.87%)
Mutual labels:  jekyll
Jekyll Admin
A Jekyll plugin that provides users with a traditional CMS-style graphical interface to author content and administer Jekyll sites.
Stars: ✭ 2,531 (+1055.71%)
Mutual labels:  jekyll
Hardcandy Jekyll
一款清新 糖果色🍬 的 ‘Jekyll’ 主题。A candy-colored 🍬 ‘Jekyll’ theme.
Stars: ✭ 202 (-7.76%)
Mutual labels:  jekyll
Mobile App Landingpage Template
📱 Free to use static generated website template for your mobile app
Stars: ✭ 208 (-5.02%)
Mutual labels:  jekyll
White Paper
Simple, elegant and clean jekyll theme.
Stars: ✭ 195 (-10.96%)
Mutual labels:  jekyll
Jekyll Spaceship
🚀 A Jekyll plugin to provide powerful supports for table, mathjax, plantuml, mermaid, emoji, video, audio, youtube, vimeo, dailymotion, soundcloud, spotify, etc.
Stars: ✭ 196 (-10.5%)
Mutual labels:  jekyll
Jekyll Doc Theme
Jekyll theme for creating project documentation websites
Stars: ✭ 203 (-7.31%)
Mutual labels:  jekyll
Docs
System76 documentation site
Stars: ✭ 193 (-11.87%)
Mutual labels:  jekyll
Marlindocumentation
Marlin Firmware Documentation Project
Stars: ✭ 215 (-1.83%)
Mutual labels:  jekyll
Cms
Multilingual PHP CMS built with Laravel and bootstrap
Stars: ✭ 2,342 (+969.41%)
Mutual labels:  website-builder
Good Clean Read
A Jekyll template for publishing clean, readable articles and single-page sites
Stars: ✭ 204 (-6.85%)
Mutual labels:  jekyll
Jekyll Gist
📃 Liquid tag for displaying GitHub Gists in Jekyll sites.
Stars: ✭ 218 (-0.46%)
Mutual labels:  jekyll
Jekyll Minifier
Jekyll HTML/XML/CSS/JS Minifier utilising yui-compressor, and htmlcompressor
Stars: ✭ 215 (-1.83%)
Mutual labels:  jekyll
Jekyll Twitter Plugin
A Liquid tag plugin for the Jekyll blogging engine that embeds Tweets, Timelines and more from Twitter API
Stars: ✭ 204 (-6.85%)
Mutual labels:  jekyll

noflo-jekyll Build Status

Flow-based reimplementation of the Jekyll static site generator. This provides several advantages for Node.js and especially NoFlo developers:

  • Pure JavaScript, no need for Ruby or other runtimes in your environment. Especially handy if you're using Grunt for site generation
  • Other data sources, in NoFlo everything is just a flow of data. You could easily plug in other data sources than the file system. For example, database query results
  • Different converters, don't want to use Markdown? Just plug in your own mark-up processor component
  • Different template engines, don't want to use Liquid? Just plug in your own template processor component
  • Use as library or executable, this Jekyll implementation is just a NoFlo graph. You can use it in other NoFlo applications, as a Node.js module, or as a command-line executable

However, as with any reimplementation of a application being actively developed, there are also some potential caveats to observe.

Structure

NoFlo Jekyll has been implemented as a NoFlo graph. Most of the logic is handled by various existing NoFlo components, but there are also some places where implementing things as a custom component made sense. Over 85% of the codebase is completely reusable, however.

Here is how the main flow looks like when visualized using NoFlo UI:

Main process flow

You can find the main flow and the different subgraphs from the graphs folder.

Installation

If you want to use this as a command-line executable, then the easiest option is to install it globally with:

$ npm install -g noflo-jekyll

If you want to use it as a library inside a bigger application, then just install it as a dependency by:

$ npm install noflo-jekyll --save

Command-line usage

Since this project aims for feature parity with Jekyll, the command-line usage is similar. To generate a site, run:

$ noflo-jekyll source_dir target_dir

Usage in Node.js applications

The site generation graph can also be used as a library in Node.js applications.

var Jekyll, generator;
Jekyll = require('noflo-jekyll').Jekyll;

// Prepare the site generator
generator = new Jekyll('source_dir', 'target_dir');

// Event handling
generator.on('start', function () {
  console.log("Build started");
});

generator.on('error', console.error);

generator.on('end', function (end) {
  var seconds = end.uptime / 1000;
  console.log("Build finished in " + seconds);
});

// Start the process
generator.run();

Usage in NoFlo graphs

The main site generation flow is exposed as the jekyll/Jekyll graph. Here is a simple example of using it in another graph:

# Directory setup
'/some/source/directory' -> SOURCE Generator(jekyll/Jekyll)
'/some/target/directory' -> DESTINATION Generator()

# Outputs
Generator() GENERATED -> IN Drop(Drop)
Generator() ERRORS -> IN Display(Output)

Known issues and differences with Ruby Jekyll

Template incompatibilities

The Liquid Templating library we use, liquid-node does not cover 100% of the Liquid spec, so some template parameters that work with Jekyll might not yet work.

We're working with the liquid-node developers to improve the coverage, and this is something you can also help with. Please report an issue if you are using something that doesn't work!

Newer Jekyll features

When this project was started, Jekyll was still in the pre-1.0 stage, and its development had stopped. Since then, its development resumed, and 1.0 added features that we don't yet provide. These include:

  • Draft posts
  • Timezones
  • Baseurl

Please report any issues you encounter with these or other Jekyll features.

No web server

The Ruby Jekyll includes a rudimentary web server for testing purposes. As that is outside of the scope of static site generation, this feature was not included into the NoFlo Jekyll implementation. You can serve the generated pages in many ways, including grunt-contrib-connect, simple-server, or NoFlo webserver.

Testing and development

Pull requests are welcome for any missing Jekyll features or other issues! If you want to work with the repository, it is best to be able to test it locally.

Our main body of tests consists of a Jekyll website source in test/fixtures/source that we have generated to a static site with the Ruby Jekyll. We run NoFlo Jekyll against the same sources, and check that the results are identical (save for some whitespace differences).

If you find things NoFlo Jekyll doesn't handle correctly, add them to that Jekyll site source, and then run Ruby Jekyll fixture regeneration with:

$ grunt jekyll

After this you should be able to run the tests with:

$ grunt test
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].