Choosing a static site generator

    cloud storage

    In recent years, among web developers and designers, there has been a significant increase in interest in static sites. We also did not stand aside from this trend and a few months ago published an article in which we described how our cloud storage can be used as a platform for hosting such sites. Quite unexpectedly, a very interesting discussion started around this article, and readers asked us to talk about static sites in more detail. Today we fulfill this request and begin a series of articles on static sites based on our repository.

    The first publication in this series will be devoted to a comparative analysis of static site generators.

    Comparison criteria


    A static website generator is a software tool that turns text records (with or without markup) into static HTML pages. All tools of this kind work approximately the same: content is taken, glued to the template, and then sent to the hosting. The number of existing static site generators is hundreds, if not thousands.

    How to choose a really worthwhile product from all this set? We decided to prepare our comparative review, which. as we hope. will help one of you make a choice. For comparison, we selected generators, which, firstly, can be made friends with our cloud storage. Secondly, we also took into account the following criteria:
    • ease of installation and configuration;
    • the presence of additional extensions and plugins;
    • level of support (how the product is developing, how often it is updated; is there detailed documentation);
    • supported deployment methods.


    Generator Overview


    MiddleMan, Jekyll, Octopress


    All three of these generators are written in Ruby and in many respects are similar in terms of their set of functions. That is why we decided to combine them into one group.

    The installation procedure for all these products is fraught with some difficulties: the version of Ruby included in the official repositories of Linux systems is most likely not enough - you will have to upgrade it to the latest. You will also need to install the RubyGems package manager and the Rbenv version manager. We actively use

    MiddleMan in our own practice: it is on it that the cloud storage promo site works , as well as selectel.io . Its undoubted advantage is a good and detailed documentation written in a simple and understandable language. A lot of extensions and plugins have been written for Middlemanwhose list is constantly updated.

    Deployment is supported using FTP, SFTP, rsync, git (scripts for automating the deployment procedure are posted on the official website; another extension is published on GitHub ). Deployment to AWS and BitBalloon is also possible (there are corresponding plugins).

    Jekyll (see also the article on Habré ) is known primarily for being used as the default engine for static sites based on GitHub Pages. Very often it is used for blogging. The undoubted advantage of Jekyll is its support for Liquid markup: this makes it possible to create templates using constructs exclusively of the markup language, and not the programming language.

    There are quite a lot of extensions and plug-ins for Jekyll (see information on the official website , as well as here and  here ). The official plugins are “tailored” mainly to work with GitHub Pages. The plugins published on GitHub are for the most part designed to enhance blogging capabilities ( adding a tag cloud , full-text blog search, and even a specialized plugin for scientific and educational blogs ).

    Support for FTP is supported, as well as using rsync and git.

    Unlike the previous two products, Octopressis a specialized generator: it is essentially an add-on for Jekyll with additional plug-ins and a responsive-template, which provide more convenient blogging.

    The default markup format for posts is Markdown., but you can use plain HTML. An undoubted advantage of Octopress is the support for moving from other sites: for example, all entries from a Wordpress blog can be transferred to a new static blog using a special script (although it’s very likely that after the transfer the design of some texts may “break” and they need to be edited manually). Out of the Box support is also supported by the Disqus service, which simplifies the transfer of comments. Octopress-based blog can be integrated with social networks (Facebook, Twitter, Google Plus and others).

    There are plugins that implement, for example, inserting calendars (similar to those that are sometimes found on Wordpress blogs), a list of similar posts, a tag cloud, and so on.

    By default, deploy is supported using git (on GitHub Pages or Heroku) or rsync (on any hosting service where you can configure SFTP or run rsync). You can configure the deployment via FTP (you can read about how to do this, for example, here ).

    Hyde


    This generator of static sites was originally intended as a complete analogue of Jekyll, only written in Python - hence the name that refers to the famous novel by R.L. Stevenson "The Strange Story of Dr. Jekyll and Mr. Hyde."

    It is necessary to distinguish between the old and the new version of Hyde. The old version is based on Django templates; its development is currently paused (recent commits on the GitHub repository date from 2009-2010). The new Hyde (see also the repository on GitHub ) is currently under active development.

    In terms of functionality, the new Hyde is no different from MiddleMan and Jekyll. We tested him a little, and he made a very good impression on us. Of the detected shortcomings, we single out only one: the project, as mentioned above, is in the stage of active development. That is why the documentation for it is presented so far in a very concise and concise form, and there are very few plugins and extensions (here is a short list on the official website).
    Deployment is supported on GitHub Pages and Amazon S3.

    Let's hope that in the future this tool will be further developed and become more convenient in work.

    Pelican


    Pelican is also written in Python. Compared to many static site generators, it has an exceptionally wide range of functions: working with drafts, integration with social networks, adding images, converting HTML pages to PDF, multilingual support, and much more. It is very well suited for blogging (there is a plugin for porting blogs to Wordpress).

    Posts can be written in Markdown, as well as in reStructuredText and  Asciidoc formats .

    Installed by Pelican via pip. During installation, the user will be asked several questions: where to store the site files, how the site will be called, where and in what way it needs to be deployed. There are many supported deployment methods: FTP, SSH, Amazon S3, GitHub Pages, Dropbox and RackSpace Cloud Files.

    Grow


    Grow (see also the official repository on GitHub ) is a very interesting and promising tool that we recently discovered. It is written in Python. To install Grow, just download the script from the official site - all the necessary packages will be installed automatically.

    Grow is based on a “configuration, not code” approach. What does it mean? To create a new project (in the terminology Grow, projects are called pods), you need to clone the theme on the local machine, which is a repository on GitHub. The theme includes a set of configuration files that describe the entire architecture of the website. No programming code is required.

    All project settings are stored in the podspec.yaml configuration file. It indicates the following parameters:

    • project metadata (name, etc.);
    • pre-processing tools used in the project (for example, SASS, Closure Compliler or others);
    • information on the localization of the site (in particular, the list of locales in which the site will be available);
    • information about static files and special pages;
    • deployment settings.

    How is content work done in Grow? All editable content (it can be presented both in Markdown format and in HTML) is stored in the / content directory. The page structure is described in the configuration files in the YAML format (see the example here ). During site building, Grow generates pages based on the specified settings.

    Grow can automatically translate text fragments - for this, the Goslate library working with Google Translate is used. To translate a site, just run the translate command.

    You can specify any web server as a deployment platform. Support for Dropbox, Google Cloud Storage, Amazon S3, Dropbox, Google AppEngine is supported.

    Of course, as part of a quick review, it is hardly possible to talk about all the features of working with Grow. We recommend you try it - the tool is very promising.

    Nanoblogger


    This blogging-oriented static site generator is notable for being written in bash. He uses the cat, grep, and sed command-line utilities as the primary tools for creating static HTML pages.

    For all its simplicity, Nanoblogger is not inferior in capabilities to many generators written in Python or Ruby. Among its useful functions, one can single out Atom / RSS support, the ability to create a calendar on a website, sort posts by categories, create an archive of posts, and others.

    Installing Nanoblogger is extremely simple: it is included in the official repository of most popular Linux distributions and is installed using the standard package manager.

    It is convenient to work with Nanoblogger from the command line. All commands are described in detail in documentation , their syntax is simple and straightforward.

    The source code is also written very simply, if necessary, it can always be modified and “tailored” to the needs of a particular project (see, for example, a publication in which the author shares his own experience in configuring a blog based on Nanoblogger).

    There are plugins and extensions for nanoblogger. The official set of plugins (nanoblogger extras) is also included in the official repositories and installed in the standard way.

    Unfortunately, in 2013, work on the development and improvement of Nanoblogger was suspended for an indefinite period (see information on the official website ).

    Docpad


    DocPad is written in CoffeeScript. To work with it, NodeJS must be installed on the client machine.

    It is used by many for blogs, but the real possibilities of its application are much wider. This product is not a pure generator of static sites: it can be used both as a generator, and as an engine, and as a template engine. DocPad is equipped with a fairly convenient API that allows you to use only those functions that are needed at the moment; the rest can always be implemented independently.

    The undoubted advantage of DocPad is, of course, a very detailed documentation. In addition, the so-called "skeletons" are published on the official website - blanks on the basis of which users can create their own sites.

    There are a lot of different plugins written for DocPad . Of the most interesting extensions, we mention WYSIWYG editors and web interfaces that facilitate the publication of posts on a static blog.

    On the official website, scripts have been published that automate deployment to various sites: Heroku, Appfog, Windows Azure, Docker, GitHub Pages, and others. There is also a  specialized script for deploying to cloud storage - Amazon S3 and GoogleStorage.

    Conclusion


    The results of the review can be summarized in the following table:
    GeneratorTongueLicenseInstallationSupportExtensionsDeploy
    MiddleMan
    3.3.5
    RubyMITRequires the latest version of Ruby, RubyGemsDetailed documentation is available, updates come out regularlyMany plugins and extensions, new ones appear regularlyFTP, SFTP, rsync, Git, AWS, BitBalloon
    Jekyll
    2.3.0
    RubyMITRequires the latest version of Ruby, RubyGems, RbenvDetailed documentation is available, updates come out regularlyMany plugins and extensionsGit, FTP. SFTP, rsync, Amazon S3, Heroku
    Octopress
    3.0
    RubyMITRequires the latest version of Ruby, RubyGems, RbenvDetailed documentation is available, updates come out regularlyMany plugins and extensionsGitHub Pages, Heroku, FTP, SFTP, rsync
    Hyde
    0.8.8
    PythonMITInstalled via pipMinimumVery few pluginsGitHub Pages, Amazon S3, SFTP
    Pelican
    3.4
    PythonGNU GPLInstalled via pipDetailed documentation, actively developed and maintainedA large number of plugins for bloggingFTP, SSH, Dropbox, Amazon S3, Rackspace Cloudfiles
    Grow SDK
    0.0.31
    PythonMITInstalled via scriptDetailed documentation with videosNo plugins. Additional themes and templates are available.Dropbox, Google Cloud Storage, Amazon S3, Google AppEngine
    Nanoblogger
    3.5
    BashGNU GPLInstalled via package managerDevelopment and support pausedFew extensionsrsync FTP
    DocPad
    6.69
    CoffeeScriptMITInstallation requires NodeJS and NPMDetailed documentation is available, updates come out regularlyMany different extensions and pluginsHeroku, Appfog, Windows Azure, Docker, GitHub Pages
    All of these generators are interesting and unique, however, the Growth SDK seemed to be the most interesting project to date.

    For those who want to delve into the topic a couple of useful links:



    What experience do you have with static site generators, Habrausers?

    If you can not leave comments here - welcome to our blog .

    Also popular now: