Theme Setup
Overview
Installation
Minimal Mistakes now requires Jekyll 2.2+. Make sure to run gem update jekyll
if you aren't on the latest version or gem install jekyll
if this is your first time installing it.
If you are creating a new Jekyll site using Minimal Mistakes follow these steps:
- Fork the Minimal Mistakes repo.
- Clone the repo you just forked and rename it.
- Install Bundler
gem install bundler
and Runbundle install
to install all dependencies (Jekyll, Jekyll-Sitemap, Octopress, etc) - Update
config.yml
, add navigation, and replace demo posts and pages with your own. Full details below.
If you want to use Minimal Mistakes with an existing Jekyll site follow these steps:
- Download Minimal Mistakes and unzip.
- Rename
minimal-mistakes-master
to something meaningful ie:new-site
- Run
bundle install
to install all dependencies (Jekyll, Jekyll-Sitemap, Octopress, etc) - Remove demo posts/pages and replace with your own posts, pages, and any other content you want to move over.
- Update posts' and pages' YAML to match variables used by Minimal Mistakes. Full details below.
- Update
_config.yml
and add navigation links. Full details below.
Pro-tip: Delete the gh-pages
branch after cloning and start fresh by branching off master
. There is a bunch of garbage in gh-pages
used for the theme's demo site that I'm guessing you won't want.
{: .notice}
Running Jekyll
If jekyll build
and jekyll serve
throw errors you may have to run Jekyll with bundled exec
instead.
In some cases, running executables without bundle exec may work, if the executable happens to be installed in your system and does not pull in any gems that conflict with your bundle.
However, this is unreliable and is the source of considerable pain. Even if it looks like it works, it may not work in the future or on another machine.
bundle exec jekyll build
bundle exec jekyll serve
minimal-mistakes/
├── _includes/
| ├── _author-bio.html # bio stuff layout. pulls optional owner data from _config.yml
| ├── _browser-upgrade.html # prompt to install a modern browser for < IE9
| ├── _disqus_comments.html # Disqus comments script
| ├── _footer.html # site footer
| ├── _head.html # site head
| ├── _navigation.html # site top navigation
| ├── _open-graph.html # Twitter Cards and Open Graph meta data
| └── _scripts.html # site scripts
├── _layouts/
| ├── home.html # homepage layout
| ├── page.html # page layout
| ├── post-index.html # post index layout
| └── post.html # single post layout
├── _posts/ # MarkDown formatted posts
├── _sass/ # Sass stylesheets
├── _templates/ # used by Octopress to define YAML variables for new posts/pages
├── about/ # sample about page
├── assets/
| ├── css/ # compiled stylesheets
| ├── fonts/ # webfonts
| ├── js/
| | ├── _main.js # main JavaScript file, plugin settings, etc
| | ├── plugins/ # scripts and jQuery plugins to combine with _main.js
| | ├── scripts.min.js # concatenated and minified _main.js + plugin scripts
| | └── vendor/ # vendor scripts to leave alone and load as is
| └── less/
├── images/ # images for posts and pages
├── 404.md # 404 page
├── feed.xml # Atom feed template
├── index.md # sample homepage. lists 5 latest posts
├── posts/ # sample post index page. lists all posts in reverse chronology
└── theme-setup/ # theme setup page. safe to remove
url: http://mmistakes.github.io/minimal-mistakes
url: http://localhost:4000
url: //cooldude.github.io
url:
- title: Portfolio
url: /portfolio/
- title: Made Mistakes
url: http://mademistakes.com
$ gem install octopress --pre
$ octopress new post "Post Title"
$ octopress new post "New Post Title" --dir posts
$ octopress new page new-page/
links:
- title: Writing
url: /writing/
image:
feature: feature-image-filename.jpg
thumb: thumbnail-image.jpg #keep it square 200x200 px is good
image:
feature: feature-image-filename.jpg
credit: Michael Rose #name of the person or site you want to credit
creditlink: http://mademistakes.com #url to their site or licensing
# Authors
billy_rick:
name: Billy Rick
web: http://thewhip.com
email: billy@rick.com
bio: "What do you want, jewels? I am a very extravagant man."
avatar: bio-photo-2.jpg
twitter: extravagantman
google:
plus: +BillyRick
cornelius_fiddlebone:
name: Cornelius Fiddlebone
email: cornelius@thewhip.com
bio: "I ordered what?"
avatar: bio-photo.jpg
twitter: rhymeswithsackit
google:
plus: +CorneliusFiddlebone
author: billy_rick
<section id="table-of-contents" class="toc">
<header>
<h3>Overview</h3>
</header>
<div id="drawer" markdown="1">
* Auto generated table of contents
{:toc}
</div>
</section><!-- /#table-of-contents -->

To disable the indents and add spacing between paragraphs change the following line in _sass/variables.scss
from true !default
to false
like so.
$paragraph-indent: false;

Videos
Video embeds are responsive and scale with the width of the main content block with the help of FitVids.
Not sure if this only effects Kramdown or if it's an issue with Markdown in general. But adding YouTube video embeds causes errors when building your Jekyll site. To fix add a space between the <iframe>
tags and remove allowfullscreen
. Example below:
<iframe width="560" height="315" src="http://www.youtube.com/embed/PWf4WUoMXwg" frameborder="0"> </iframe>
Further Customization
Jekyll 2.x added support for Sass files making it much easier to modify a theme's fonts and colors. By editing values found in _sass/variables.scss
you can fine tune the site's colors and typography.
For example if you wanted a red background instead of white you'd change $bodycolor: #fff;
to $bodycolor: $cc0033;
.
To modify the site's JavaScript files I setup a Grunt build script to lint/concatenate/minify all scripts into scripts.min.js
. Install Node.js, then install Grunt, and then finally install the dependencies for the theme contained in package.json
:
npm install
From the theme's root, use grunt
concatenate JavaScript files, and optimize .jpg, .png, and .svg files in the images/
folder. You can also use grunt dev
in combination with jekyll build --watch
to watch for updates JS files that Grunt will then automatically re-build as you write your code which will in turn auto-generate your Jekyll site when developing locally.
Questions?
Found a bug or aren't quite sure how something works? By all means Ping me on Twitter @mmistakes or file a GitHub Issue. And if you make something cool with this theme feel free to let me know.
License
This theme is free and open source software, distributed under the MIT License. So feel free to use this Jekyll theme on your site without linking back to me or including a disclaimer.