diff --git a/.github/CONTRIBUTING.markdown b/.github/CONTRIBUTING.markdown index 9e9e479c..6a239fc7 100644 --- a/.github/CONTRIBUTING.markdown +++ b/.github/CONTRIBUTING.markdown @@ -66,6 +66,26 @@ You can find the documentation for jekyllrb.com in the [docs](https://github.com One gotcha, all pull requests should be directed at the `master` branch (the default branch). +### Updating FontAwesome iconset for jekyllrb.com + +We use a custom version of FontAwesome which contains just the icons we use. + +If you ever need to update our documentation with an icon that is not already available in our custom iconset, you'll have to regenerate the iconset using Icomoon's Generator: + +1. Go to . +2. Click `Import Icons` on the top-horizontal-bar and upload the existing `/docs/icomoon-selection.json`. +3. Click `Add Icons from Library..` further down on the page, and add 'Font Awesome'. +4. Select the required icon(s) from the Library (make sure its the 'FontAwesome' library instead of 'IcoMoon-Free' library). +5. Click `Generate Font` on the bottom-horizontal-bar. +6. Inspect the included icons and proceed by clicking `Download`. +7. Extract the font files and adapt the CSS to the paths we use in Jekyll: + - Copy the entire `fonts` directory over and overwrite existing ones at `/docs/`. + - Copy the contents of `selection.json` and overwrite existing content inside `/docs/icomoon-selection.json`. + - Copy the entire `@font-face {}` declaration and only the **new-icon(s)' css declarations** further below, to update the + `/docs/_sass/_font-awesome.scss` sass partial. + - Fix paths in the `@font-face {}` declaration by adding `../` before `fonts/FontAwesome.*` like so: + `('../fonts/Fontawesome.woff?9h6hxj')`. + ### Adding plugins If you want to add your plugin to the [list of plugins](https://jekyllrb.com/docs/plugins/#available-plugins), please submit a pull request modifying the [plugins page source file](https://github.com/jekyll/jekyll/blob/master/docs/_docs/plugins.md) by adding a link to your plugin under the proper subheading depending upon its type. diff --git a/Gemfile b/Gemfile index 464ab468..eda95e5e 100644 --- a/Gemfile +++ b/Gemfile @@ -1,10 +1,10 @@ source "https://rubygems.org" gemspec :name => "jekyll" -gem "rake", "~> 11.0" +gem "rake", "~> 12.0" # Dependency of jekyll-mentions. RubyGems in Ruby 2.1 doesn't shield us from this. -gem "activesupport", "~> 4.2", :groups => [:test_legacy, :site] if RUBY_VERSION < '2.2.2' +gem "activesupport", "~> 4.2", :groups => [:test_legacy, :site] if RUBY_VERSION < "2.2.2" group :development do gem "launchy", "~> 2.3" @@ -18,15 +18,15 @@ end # group :test do - gem "rubocop", "~> 0.44.1" + gem "codeclimate-test-reporter", "~> 0.6.0" gem "cucumber", "~> 2.1" gem "jekyll_test_plugin" gem "jekyll_test_plugin_malicious" - gem "codeclimate-test-reporter" - gem "rspec-mocks" gem "nokogiri" gem "rspec" - gem "test-theme", path: File.expand_path("./test/fixtures/test-theme", File.dirname(__FILE__)) + gem "rspec-mocks" + gem "rubocop", "~> 0.44.1" + gem "test-theme", :path => File.expand_path("./test/fixtures/test-theme", File.dirname(__FILE__)) gem "jruby-openssl" if RUBY_ENGINE == "jruby" end @@ -34,51 +34,54 @@ end # group :test_legacy do - if RUBY_PLATFORM =~ /cygwin/ || RUBY_VERSION.start_with?("2.2") - gem 'test-unit' + if RUBY_PLATFORM =~ %r!cygwin! || RUBY_VERSION.start_with?("2.2") + gem "test-unit" end - gem "redgreen" - gem "simplecov" - gem "minitest-reporters" - gem "minitest-profile" gem "minitest" + gem "minitest-profile" + gem "minitest-reporters" + gem "redgreen" gem "shoulda" + gem "simplecov" end # group :benchmark do if ENV["BENCHMARK"] - gem "ruby-prof" gem "benchmark-ips" - gem "stackprof" gem "rbtrace" + gem "ruby-prof" + gem "stackprof" end end # group :jekyll_optional_dependencies do - gem "toml", "~> 0.1.0" gem "coderay", "~> 1.1.0" - gem "jekyll-docs", :path => '../docs' if Dir.exist?('../docs') && ENV['JEKYLL_VERSION'] - gem "jekyll-gist" - gem "jekyll-feed" gem "jekyll-coffeescript" - gem "jekyll-redirect-from" + gem "jekyll-docs", :path => "../docs" if Dir.exist?("../docs") && ENV["JEKYLL_VERSION"] + gem "jekyll-feed" + gem "jekyll-gist" gem "jekyll-paginate" - gem "mime-types", "~> 3.0" + gem "jekyll-redirect-from" gem "kramdown", "~> 1.9" + gem "mime-types", "~> 3.0" gem "rdoc", "~> 4.2" + gem "toml", "~> 0.1.0" platform :ruby, :mswin, :mingw, :x64_mingw do - gem "rdiscount", "~> 2.0" - gem "pygments.rb", "~> 0.6.0" - gem "redcarpet", "~> 3.2", ">= 3.2.3" - gem "classifier-reborn", "~> 2.0" + gem "classifier-reborn", "~> 2.1.0" gem "liquid-c", "~> 3.0" + gem "pygments.rb", "~> 0.6.0" + gem "rdiscount", "~> 2.0" + gem "redcarpet", "~> 3.2", ">= 3.2.3" end + + # Windows does not include zoneinfo files, so bundle the tzinfo-data gem + gem "tzinfo-data", :platforms => [:mingw, :mswin, :x64_mingw, :jruby] end # @@ -88,9 +91,9 @@ group :site do gem "html-proofer", "~> 2.0" end - gem "jemoji", "0.5.1" - gem "jekyll-sitemap" - gem "jekyll-seo-tag" gem "jekyll-avatar" gem "jekyll-mentions" + gem "jekyll-seo-tag" + gem "jekyll-sitemap" + gem "jemoji", "0.5.1" end diff --git a/History.markdown b/History.markdown index d81fdbd3..9df69b01 100644 --- a/History.markdown +++ b/History.markdown @@ -1,10 +1,78 @@ ## HEAD - * Add permalinks to docs in '/maintaining/' (#5532) - ### Site Enhancements - * Documentation: {% link %} tag (#5449) + * Remove instructions to install Jekyll 2 on Windows (#5582) + * Fix example URL inconsistency (#5592) + * Replace backticks within HTML blocks with HTML tags (#5435) + * Add jekyll-migrate-permalink (#5600) + * Fix bad config YAML in collections example (#5587) + * Bring documentation on 'Directory Structure' up-to-date (#5573) + * Use only the used Font Awesome icons. (#5530) + * Switch to `https` when possible. (#5611) + * Update `_font-awesome.scss` to move .woff file before .ttf (#5614) + * Update documentation on updating FontAwesome Iconset (#5655) + * Improve quickstart docs (#5689) + * Add Jekyll-Post to list of plugins (#5705) + * Add jekyll-numbered-headings (#5688) + +### Minor Enhancements + + * Add connector param to array_to_sentence_string filter (#5597) + * Adds group_by_exp filter (#5513) + * Use the current year for the LICENSE of theme (#5712) + * Update License (#5713) + * Use Addressable instead of URI to decode (#5726) + +### Bug Fixes + + * Escaped regular expressions when using post_url. (#5605) + * fix date parsing in file names to be stricter (#5609) + * Add a module to re-define `ENV["TZ"]` in Windows (#5612) + * Use each instead of map to actually return nothing (#5668) + +### Development Fixes + + * clean unit-test names in `test/test_tags.rb` (#5608) + * Add cucumber feature to test for bonafide theme gems (#5384) + * Use `assert_nil` instead of `assert_equal nil` (#5652) + * Rubocop -a on lib/jekyll (#5666) + * Bump to rake 12.0 (#5670) + * Rubocop Gemfile (#5671) + * update Classifier-Reborn to 2.1.0 (#5711) + +### Documentation + + * Fixed typo (#5632) + * use backticks for Gemfile for consistency since in the next sentence … (#5641) + * Update Core team list in the README file (#5643) + * Improve Permalinks documentation. (#5653) + * Fix typo in Variables doc page (#5657) + * Fix a couple of typos in the docs (#5658) + * Update windows.md (#5683) + * Improve permalinks docs (#5693) + * Document --unpublished build option (#5720) + +## 3.3.1 / 2016-11-14 + +### Minor Enhancements + + * Collapse `gsub` for performance (#5494) + * URL: warn if key doesn't exist in url drop (#5524) + +### Bug Fixes + + * Fix typo in `theme_template` README (#5472) + * Do not swallow all exceptions on render (#5495) + * Site template: fixed `_config.yml` comment typo (#5511) + * `jekyll new-theme` should specify Jekyll as a runtime dependency for the theme (#5457) + * Be much more specific about ignoring specific vendored directories. (#5564) + * Only warn about auto-regeneration bug on Bash On Windows. (#5464) + * Allow permalink template to have underscores (#5572) + +### Site Enhancements + + * Documentation: `link` Liquid tag (#5449) * Updating install instruction link for Jekyll 3 on Windows (#5475) * Update normalize.css to v5.0.0 (#5471) * Add jekyll-data to the list of plugins (#5491) @@ -19,13 +87,15 @@ * Fix broken links in CONTRIBUTING (#5533) * Update documentation on jekyllrb.com (#5540) * Fix HTML rendering (#5536) - -### Bug Fixes - - * Fix typo in theme_template README (#5472) - * Do not swallow all exceptions on render (#5495) - * Site template: fixed `_config.yml` comment typo (#5511) - * `jekyll new-theme` should specify Jekyll as a runtime dependency for the theme (#5457) + * Remove outdated deployment information (#5557) + * no more invalid US-ASCII on lines 30 and 97 (#5520) + * Add permalinks to docs in '/maintaining/' (#5532) + * Add jekyll-pinboard to list of third-party plugins (#5514) + * Fix formatting in 2-to-3.md (#5507) + * Add two plugins to the plugins page (#5493) + * Use site.baseurl before link and post_url tags (#5559) + * Fix link to jekyll-pinboard plugin (#5570) + * mention `docs` folder as a way to deploy on GitHub Pages (#5571) ### Development Fixes @@ -34,10 +104,8 @@ * Restrict Rubocop version (#5496) * include a hashbang for all benchmark scripts & make them executable (#5505) * Update source in script/proof (#5538) - -### Minor Enhancements - - * Collapse `gsub` (#5494) + * Collections.feature: conditional steps to have it pass on Windows (#5546) + * Fix tests to get script/test to pass on Windows (#5526) ## 3.3.0 / 2016-10-06 diff --git a/LICENSE b/LICENSE index 94dbfc39..e177b1bf 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2008-2016 Tom Preston-Werner +Copyright (c) 2008-2017 Tom Preston-Werner and Jekyll contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.markdown b/README.markdown index cef53c5c..60f11c47 100644 --- a/README.markdown +++ b/README.markdown @@ -43,8 +43,7 @@ conduct. Please adhere to this code of conduct in any interactions you have in the Jekyll community. It is strictly enforced on all official Jekyll repositories, websites, and resources. If you encounter someone violating -these terms, please let a maintainer ([@parkr](https://github.com/parkr), [@envygeeks](https://github.com/envygeeks), or [@mattr-](https://github.com/mattr-)) know -and we will address it as soon as possible. +these terms, please let a maintainer ([@parkr](https://github.com/parkr), [@envygeeks](https://github.com/envygeeks), [@mattr-](https://github.com/mattr-), or [@alfredxing](https://github.com/alfredxing)) know and we will address it as soon as possible. ## Diving In diff --git a/benchmark/string-concat b/benchmark/string-concat index c5397088..2020bb51 100755 --- a/benchmark/string-concat +++ b/benchmark/string-concat @@ -1,7 +1,7 @@ #!/usr/bin/env ruby require 'benchmark/ips' -url = "http://jekyllrb.com" +url = "https://jekyllrb.com" Benchmark.ips do |x| x.report('+=') { url += '/' } diff --git a/docs/_docs/configuration.md b/docs/_docs/configuration.md index a244e1ab..9df1c85f 100644 --- a/docs/_docs/configuration.md +++ b/docs/_docs/configuration.md @@ -221,6 +221,16 @@ class="flag">flags (specified on the command-line) that control them.

--future

+ + +

Unpublished

+

Render posts that were marked as unpublished.

+ + +

unpublished: BOOL

+

--unpublished

+ +

LSI

@@ -513,8 +523,8 @@ With these defaults, all posts would use the `my-site` layout. Any html files th ```yaml collections: - - my_collection: - output: true + my_collection: + output: true defaults: - @@ -594,7 +604,7 @@ collections: # Handling Reading safe: false include: [".htaccess"] -exclude: ["node_modules", "vendor"] +exclude: ["node_modules", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"] keep_files: [".git", ".svn"] encoding: "utf-8" markdown_ext: "markdown,mkdown,mkdn,mkd,md" diff --git a/docs/_docs/contributing.md b/docs/_docs/contributing.md index c5a37722..9ccac293 100644 --- a/docs/_docs/contributing.md +++ b/docs/_docs/contributing.md @@ -71,6 +71,26 @@ You can find the documentation for jekyllrb.com in the [docs](https://github.com One gotcha, all pull requests should be directed at the `master` branch (the default branch). +### Updating FontAwesome iconset for jekyllrb.com + +We use a custom version of FontAwesome which contains just the icons we use. + +If you ever need to update our documentation with an icon that is not already available in our custom iconset, you'll have to regenerate the iconset using Icomoon's Generator: + +1. Go to . +2. Click `Import Icons` on the top-horizontal-bar and upload the existing `/docs/icomoon-selection.json`. +3. Click `Add Icons from Library..` further down on the page, and add 'Font Awesome'. +4. Select the required icon(s) from the Library (make sure its the 'FontAwesome' library instead of 'IcoMoon-Free' library). +5. Click `Generate Font` on the bottom-horizontal-bar. +6. Inspect the included icons and proceed by clicking `Download`. +7. Extract the font files and adapt the CSS to the paths we use in Jekyll: + - Copy the entire `fonts` directory over and overwrite existing ones at `/docs/`. + - Copy the contents of `selection.json` and overwrite existing content inside `/docs/icomoon-selection.json`. + - Copy the entire `@font-face {}` declaration and only the **new-icon(s)' css declarations** further below, to update the + `/docs/_sass/_font-awesome.scss` sass partial. + - Fix paths in the `@font-face {}` declaration by adding `../` before `fonts/FontAwesome.*` like so: + `('../fonts/Fontawesome.woff?9h6hxj')`. + ### Adding plugins If you want to add your plugin to the [list of plugins](https://jekyllrb.com/docs/plugins/#available-plugins), please submit a pull request modifying the [plugins page source file](https://github.com/jekyll/jekyll/blob/master/docs/_docs/plugins.md) by adding a link to your plugin under the proper subheading depending upon its type. diff --git a/docs/_docs/datafiles.md b/docs/_docs/datafiles.md index daf5e4b1..21799169 100644 --- a/docs/_docs/datafiles.md +++ b/docs/_docs/datafiles.md @@ -143,7 +143,7 @@ author: dave {% assign author = site.data.people[page.author] %} diff --git a/docs/_docs/deployment-methods.md b/docs/_docs/deployment-methods.md index 09116824..cefb4d32 100644 --- a/docs/_docs/deployment-methods.md +++ b/docs/_docs/deployment-methods.md @@ -208,12 +208,3 @@ Setting up Kickster is very easy, just install the gem and you are good to go. M Automating the build and deployment of a Jekyll site is just as simple as GitHub Pages - push your changes to your repo (excluding the `_site` directory) and within seconds a build will be triggered and your built site deployed to our highly- available, globally distributed hosting service. The build process will even install and execute custom Ruby plugins. See our [Jekyll docs](https://www.aerobatic.com/docs/static-generators#jekyll) for more details. -## PubStorm - -[PubStorm](https://www.pubstorm.com) is a free front-end and static-site publishing platform built by [Nitrous](https://www.nitrous.io). PubStorm is distributed as a node package and can be installed by running `npm install -g pubstorm`. You can create a free account by running `storm signup`. - -To publish your site, run `storm init` from the root of your project and enter `_site` as the project path when prompted. You can the run `jekyll build` to build your site and then run `storm deploy` to publish your site in seconds. - -PubStorm offers a pre-configured CDN, free custom domains, SSL certs, rollbacks, collaboration and more. To configure additional features, [follow the instructions on the PubStorm help site](http://help.pubstorm.com). - -You can also use the [Nitrous Jekyll Template](https://www.nitrous.io/quickstarts) to develop your Jekyll project and deploy to PubStorm directly from Nitrous. This is a great option for developing Jekyll projects on Windows. diff --git a/docs/_docs/github-pages.md b/docs/_docs/github-pages.md index 7a90b8bb..710f702e 100644 --- a/docs/_docs/github-pages.md +++ b/docs/_docs/github-pages.md @@ -27,7 +27,7 @@ site builds properly, use `site.github.url` in your URL's. -{{ page.title }} +[{{ page.title }}]("{{ page.url | prepend: site.github.url }}") {% endraw %} ``` @@ -42,17 +42,24 @@ There are two basic types available: user/organization pages and project pages. The way to deploy these two types of sites are nearly identical, except for a few minor details. -
-
Use the github-pages gem
-

- Our friends at GitHub have provided the - github-pages - gem which is used to manage Jekyll and its dependencies on - GitHub Pages. Using it in your projects means that when you deploy - your site to GitHub Pages, you will not be caught by unexpected - differences between various versions of the gems. To use the - currently-deployed version of the gem in your project, add the - following to your Gemfile: +

+
+
+ +##### Use the `github-pages` gem + +Our friends at GitHub have provided the +[github-pages](https://github.com/github/pages-gem) +gem which is used to manage Jekyll and its dependencies on +GitHub Pages. Using it in your projects means that when you deploy +your site to GitHub Pages, you will not be caught by unexpected +differences between various versions of the gems. To use the +currently-deployed version of the gem in your project, add the +following to your `Gemfile`: + +
+
+
```ruby source 'https://rubygems.org' @@ -63,22 +70,28 @@ versions = JSON.parse(open('https://pages.github.com/versions.json').read) gem 'github-pages', versions['github-pages'] ``` +
- This will ensure that when you run bundle install, you - have the correct version of the github-pages gem. +This will ensure that when you run `bundle install`, you +have the correct version of the `github-pages` gem. - If that fails, simplify it: +If that fails, simplify it: + +
+
+
```ruby source 'https://rubygems.org' gem 'github-pages' ``` +
- And be sure to run bundle update often. +And be sure to run `bundle update` often. - If you like to install pages-gem on Windows you can find instructions by Jens Willmer on how to install github-pages gem on Windows (x64). -

+If you like to install `pages-gem` on Windows you can find instructions by Jens Willmer on +[how to install github-pages gem on Windows (x64)]("https://jwillmer.de/blog/tutorial/how-to-install-jekyll-and-pages-gem-on-windows-10-x46#github-pages-and-plugins").
@@ -95,8 +108,7 @@ gem 'github-pages' User and organization pages live in a special GitHub repository dedicated to only the GitHub Pages files. This repository must be named after the account -name. For example, [@mojombo’s user page -repository](https://github.com/mojombo/mojombo.github.io) has the name +name. For example, [@mojombo’s user page repository](https://github.com/mojombo/mojombo.github.io) has the name `mojombo.github.io`. Content from the `master` branch of your repository will be used to build and @@ -115,10 +127,16 @@ publish the GitHub Pages site, so make sure your Jekyll site is stored there. Unlike user and organization Pages, Project Pages are kept in the same repository as the project they are for, except that the website content is -stored in a specially named `gh-pages` branch. The content of this branch will -be rendered using Jekyll, and the output will become available under a subpath -of your user pages subdomain, such as `username.github.io/project` (unless a -custom domain is specified—see below). +stored in a specially named `gh-pages` branch or in a `docs` folder on the +`master` branch. The content will be rendered using Jekyll, and the output +will become available under a subpath of your user pages subdomain, such as +`username.github.io/project` (unless a custom domain is specified). + +The Jekyll project repository itself is a perfect example: the +[master branch]({{ site.repository }}) contains the actual software project +for Jekyll, however the Jekyll website (that you’re looking at right now) is +contained in the [docs folder]({{ site.repository }}/tree/master/docs) of the +same repository. The Jekyll project repository itself is a perfect example of this branch structure—the [master branch]({{ site.repository }}) contains the @@ -126,10 +144,17 @@ actual software project for Jekyll, and the Jekyll website that you’re looking at right now is contained in the [docs folder]({{ site.repository }}/tree/master/docs) of the same repository. +Please refer to GitHub official documentation on +[user, organization and projets pages](https://help.github.com/articles/user-organization-and-project-pages/) +to see more detailed examples. +
Source Files Must be in the Root Directory

-GitHub Pages overrides the “Site Source” configuration value, so if you locate your files anywhere other than the root directory, your site may not build correctly. + GitHub Pages overrides + the “Site Source” + configuration value, so if you locate your files anywhere other than the + root directory, your site may not build correctly.

@@ -137,9 +162,8 @@ GitHub Pages GitHub’s Pages Help - section. If all else fails, you should contact GitHub Support. + troubleshooting guides, you should check out + GitHub’s Pages Help section. + If all else fails, you should contact GitHub Support.

diff --git a/docs/_docs/history.md b/docs/_docs/history.md index b272bd53..5d07eb40 100644 --- a/docs/_docs/history.md +++ b/docs/_docs/history.md @@ -5,6 +5,66 @@ permalink: "/docs/history/" note: This file is autogenerated. Edit /History.markdown instead. --- +## 3.3.1 / 2016-11-14 +{: #v3-3-1} + +### Minor Enhancements +{: #minor-enhancements-v3-3-1} + +- Collapse `gsub` for performance ([#5494]({{ site.repository }}/issues/5494)) +- URL: warn if key doesn't exist in url drop ([#5524]({{ site.repository }}/issues/5524)) + +### Bug Fixes +{: #bug-fixes-v3-3-1} + +- Fix typo in `theme_template` README ([#5472]({{ site.repository }}/issues/5472)) +- Do not swallow all exceptions on render ([#5495]({{ site.repository }}/issues/5495)) +- Site template: fixed `_config.yml` comment typo ([#5511]({{ site.repository }}/issues/5511)) +- `jekyll new-theme` should specify Jekyll as a runtime dependency for the theme ([#5457]({{ site.repository }}/issues/5457)) +- Be much more specific about ignoring specific vendored directories. ([#5564]({{ site.repository }}/issues/5564)) +- Only warn about auto-regeneration bug on Bash On Windows. ([#5464]({{ site.repository }}/issues/5464)) +- Allow permalink template to have underscores ([#5572]({{ site.repository }}/issues/5572)) + +### Site Enhancements +{: #site-enhancements-v3-3-1} + +- Documentation: `link` Liquid tag ([#5449]({{ site.repository }}/issues/5449)) +- Updating install instruction link for Jekyll 3 on Windows ([#5475]({{ site.repository }}/issues/5475)) +- Update normalize.css to v5.0.0 ([#5471]({{ site.repository }}/issues/5471)) +- Add jekyll-data to the list of plugins ([#5491]({{ site.repository }}/issues/5491)) +- Add info about checking version + updating ([#5497]({{ site.repository }}/issues/5497)) +- Add jekyll-include-absolute-plugin to list of third-party plugins ([#5492]({{ site.repository }}/issues/5492)) +- Remove jekyll-hook from deployment methods ([#5502]({{ site.repository }}/issues/5502)) +- Update deployment-methods.md ([#5504]({{ site.repository }}/issues/5504)) +- Ubuntu users should install ruby2.3-dev ([#5512]({{ site.repository }}/issues/5512)) +- Remove Glynn as deployment option ([#5519]({{ site.repository }}/issues/5519)) +- Fix broken forum link ([#5466]({{ site.repository }}/issues/5466)) +- Move documentation to docs folder ([#5459]({{ site.repository }}/issues/5459)) +- Fix broken links in CONTRIBUTING ([#5533]({{ site.repository }}/issues/5533)) +- Update documentation on jekyllrb.com ([#5540]({{ site.repository }}/issues/5540)) +- Fix HTML rendering ([#5536]({{ site.repository }}/issues/5536)) +- Remove outdated deployment information ([#5557]({{ site.repository }}/issues/5557)) +- no more invalid US-ASCII on lines 30 and 97 ([#5520]({{ site.repository }}/issues/5520)) +- Add permalinks to docs in '/maintaining/' ([#5532]({{ site.repository }}/issues/5532)) +- Add jekyll-pinboard to list of third-party plugins ([#5514]({{ site.repository }}/issues/5514)) +- Fix formatting in 2-to-3.md ([#5507]({{ site.repository }}/issues/5507)) +- Add two plugins to the plugins page ([#5493]({{ site.repository }}/issues/5493)) +- Use site.baseurl before link and post_url tags ([#5559]({{ site.repository }}/issues/5559)) +- Fix link to jekyll-pinboard plugin ([#5570]({{ site.repository }}/issues/5570)) +- mention `docs` folder as a way to deploy on GitHub Pages ([#5571]({{ site.repository }}/issues/5571)) + +### Development Fixes +{: #development-fixes-v3-3-1} + +- fix rubocop errors on testing with Rubocop 0.44 ([#5489]({{ site.repository }}/issues/5489)) +- script/test: add missing whitespace ([#5479]({{ site.repository }}/issues/5479)) +- Restrict Rubocop version ([#5496]({{ site.repository }}/issues/5496)) +- include a hashbang for all benchmark scripts & make them executable ([#5505]({{ site.repository }}/issues/5505)) +- Update source in script/proof ([#5538]({{ site.repository }}/issues/5538)) +- Collections.feature: conditional steps to have it pass on Windows ([#5546]({{ site.repository }}/issues/5546)) +- Fix tests to get script/test to pass on Windows ([#5526]({{ site.repository }}/issues/5526)) + + ## 3.3.0 / 2016-10-06 {: #v3-3-0} diff --git a/docs/_docs/installation.md b/docs/_docs/installation.md index ee27f15f..54dfd9fc 100644 --- a/docs/_docs/installation.md +++ b/docs/_docs/installation.md @@ -34,7 +34,7 @@ earlier, for CoffeeScript support). ## Install with RubyGems The best way to install Jekyll is via -[RubyGems](http://rubygems.org/pages/download). At the terminal prompt, +[RubyGems](https://rubygems.org/pages/download). At the terminal prompt, simply run the following command to install Jekyll: ```sh diff --git a/docs/_docs/maintaining/reviewing-a-pull-request.md b/docs/_docs/maintaining/reviewing-a-pull-request.md index ebdd7a3c..12f7a35f 100644 --- a/docs/_docs/maintaining/reviewing-a-pull-request.md +++ b/docs/_docs/maintaining/reviewing-a-pull-request.md @@ -8,7 +8,7 @@ layout: docs ## Respond Kindly -Above all else, please review a pull request kindly. Our community can only be strong if we make it a welcoming and inclusive environment. To further promote this, the Jekyll community is governed by a [Code of Conduct](/docs/conduct) by which all community members must abide. +Above all else, please review a pull request kindly. Our community can only be strong if we make it a welcoming and inclusive environment. To further promote this, the Jekyll community is governed by a [Code of Conduct](/docs/conduct/) by which all community members must abide. Use emoji liberally :heart: :tada: :sparkles: :confetti_ball: and feel free to be emotive!! Contributions keep this project moving forward and we're always happy to receive them, even if the pull request isn't ultimately merged. diff --git a/docs/_docs/permalinks.md b/docs/_docs/permalinks.md index 254c5d6d..b8fd5ec6 100644 --- a/docs/_docs/permalinks.md +++ b/docs/_docs/permalinks.md @@ -4,17 +4,54 @@ title: Permalinks permalink: /docs/permalinks/ --- -Jekyll supports a flexible way to build your site’s URLs. You can specify the -permalinks for your site through the [Configuration](../configuration/) or in -the [YAML Front Matter](../frontmatter/) for each post. You’re free to choose -one of the built-in styles to create your links or craft your own. The default -style is `date`. +Permalinks refer to the URLs (excluding the domain name or directory folder) for your pages, posts, or collections. +Jekyll supports a flexible way to build permalinks, allowing you to leverage various template variables or choose built-in permalink styles (such as `date`) that automatically use a template-variable pattern. -Permalinks are constructed by creating a template URL where dynamic elements -are represented by colon-prefixed keywords. For example, the default `date` -permalink is defined according to the format `/:categories/:year/:month/:day/:title.html`. +You construct permalinks by creating a template URL where dynamic elements are represented by colon-prefixed keywords. The default template permalink is `/:categories/:year/:month/:day/:title.html`. Each of the colon-prefixed keywords is a template variable. -## Template variables +## Where to configure permalinks + +You can configure your site's permalinks through the [Configuration]({% link _docs/configuration.md %}) file or in the [Front Matter]({% link _docs/frontmatter.md %}) for each post, page, or collection. + +Setting permalink styles in your configuration file applies the setting globally in your project. You configure permalinks in your `_config.yml` file like this: + +```yaml +permalink: /:categories/:year/:month/:day/:title.html +``` + +If you don't specify any permalink setting, Jekyll uses the above pattern as the default. + +The permalink can also be set using a built-in permalink style: + +```yaml +permalink: date +``` + +`date` is the same as `:categories/:year/:month/:day/:title.html`, the default. See [Built-in Permalink Styles](#builtinpermalinkstyles) below for more options. + +Setting the permalink in your post, page, or collection's front matter overrides any global settings. Here's an example: + +```yaml +--- +title: My page title +permalink: /mypageurl/ +--- +``` + +Even if your configuration file specifies the `date` style, the URL for this page would be `http://somedomain.com/mypageurl/`. + +When you use permalinks that omit the `.html` file extension (called "pretty URLs") Jekyll builds the file as index.html placed inside a folder with the page's name. For example: + +``` +├── mypageurl +│   └── index.html +``` + +With a URL such as `/mypageurl/`, servers automatically load the index.html file inside the folder, so users can simply navigate to `http://somedomain.com/mypageurl/` to get to `mypageurl/index.html`. + +## Template variables for permalinks {#template-variables} + +The following table lists the template variables available for permalinks. You can use these variables in the `permalink` property in your config file.
@@ -30,7 +67,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

year

@@ -38,7 +75,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

month

@@ -46,7 +83,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

i_month

@@ -54,7 +91,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

day

@@ -62,7 +99,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

i_day

@@ -70,7 +107,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

short_year

@@ -79,7 +116,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti @@ -89,7 +126,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti @@ -99,7 +136,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti @@ -120,8 +157,8 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti @@ -132,7 +169,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti
-

Year from the Post’s filename

+

Year from the post's filename

-

Month from the Post’s filename

+

Month from the post's filename

-

Month from the Post’s filename without leading zeros.

+

Month from the post's filename without leading zeros.

-

Day from the Post’s filename

+

Day from the post's filename

-

Day from the Post’s filename without leading zeros.

+

Day from the post's filename without leading zeros.

-

Year from the Post’s filename without the century.

+

Year from the post's filename without the century.

- Hour of the day, 24-hour clock, zero-padded from the post’s date front matter. (00..23) + Hour of the day, 24-hour clock, zero-padded from the post's date front matter. (00..23)

- Minute of the hour from the post’s date front matter. (00..59) + Minute of the hour from the post's date front matter. (00..59)

- Second of the minute from the post’s date front matter. (00..59) + Second of the minute from the post's date front matter. (00..59)

- Slugified title from the document’s filename ( any character - except numbers and letters is replaced as hyphen ). May be + Slugified title from the document’s filename (any character + except numbers and letters is replaced as hyphen). May be overridden via the document’s slug YAML front matter.

- The specified categories for this Post. If a post has multiple + The specified categories for this post. If a post has multiple categories, Jekyll will create a hierarchy (e.g. /category1/category2). Also Jekyll automatically parses out double slashes in the URLs, so if no categories are present, it will ignore this. @@ -143,10 +180,11 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

-## Built-in permalink styles +Note that all template variables relating to time or categories are available to posts only. -While you can specify a custom permalink style using [template variables](#template-variables), -Jekyll also provides the following built-in styles for convenience. +## Built-in permalink styles {#builtinpermalinkstyles} + +Although you can specify a custom permalink pattern using [template variables](#template-variables), Jekyll also provides the following built-in styles for convenience.
@@ -193,26 +231,16 @@ Jekyll also provides the following built-in styles for convenience.
-## Pages and collections +Rather than typing `permalink: /:categories/:year/:month/:day/:title/`, you can just type `permalink: date`. -The `permalink` configuration setting specifies the permalink style used for -posts. Pages and collections each have their own default permalink style; the -default style for pages is `/:path/:basename` and the default for collections is -`/:collection/:path`. +
+
Specifying permalinks through the YAML Front Matter
+

Built-in permalink styles are not recognized in YAML Front Matter. As a result, permalink: pretty will not work.

+
-These styles are modified to match the suffix style specified in the post -permalink setting. For example, a permalink style of `pretty`, which contains a -trailing slash, will update page permalinks to also contain a trailing slash: -`/:path/:basename/`. A permalink style of `date`, which contains a trailing -file extension, will update page permalinks to also contain a file extension: -`/:path/:basename:output_ext`. The same is true for any custom permalink style. +## Permalink style examples with posts {#permalink-style-examples} -The permalink for an individual page or collection document can always be -overridden in the [YAML Front Matter](../frontmatter/) for the page or document. -Additionally, permalinks for a given collection can be customized [in the -collections configuration](../collections/). - -## Permalink style examples +Here are a few examples to clarify how permalink styles get applied with posts. Given a post named: `/2009-04-29-slap-chop.md` @@ -260,7 +288,7 @@ Given a post named: `/2009-04-29-slap-chop.md`

/:year/:month/:title

-

See extensionless permalinks for details.

+

See Extensionless permalinks with no trailing slashes for details.

/2009/04/slap-chop

@@ -270,24 +298,58 @@ Given a post named: `/2009-04-29-slap-chop.md`
-## Extensionless permalinks +## Permalink settings for pages and collections {#pages-and-collections} -Jekyll supports permalinks that contain neither a trailing slash nor a file -extension, but this requires additional support from the web server to properly -serve. When using extensionless permalinks, output files written to disk will -still have the proper file extension (typically `.html`), so the web server -must be able to map requests without file extensions to these files. +The permalink setting in your configuration file specifies the permalink style used for posts, pages, and collections. However, because pages and collections don't have time or categories, these aspects of the permalink style are ignored with pages and collections. -Both [GitHub Pages](../github-pages/) and the Jekyll's built-in WEBrick server -handle these requests properly without any additional work. +For example: + +* A permalink style of `/:categories/:year/:month/:day/:title.html` for posts becomes `/:title.html` for pages and collections. +* A permalink style of `pretty` (or `/:categories/:year/:month/:day/:title/`), which omits the file extension and contains a trailing slash, will update page and collection permalinks to also omit the file extension and contain a trailing slash: `/:title/`. +* A permalink style of `date`, which contains a trailing file extension, will update page permalinks to also contain a trailing file extension: `/:title.html`. But no time or category information will be included. + +## Permalinks and default paths + +The path to the post or page in the built site differs for posts, pages, and collections: + +### Posts + +The subfolders into which you may have organized your posts inside the `_posts` directory will not be part of the permalink. + +If you use a permalink style that omits the `.html` file extension, each post is rendered as an `index.html` file inside a folder with the post's name (for example, `categoryname/2016/12/01/mypostname/index.html`). + +### Pages + +Unlike posts, pages by default mimic the source directory structure exactly. (The only exception is if your page has a `permalink` declared its front matter — in that case, the structure honors the permalink setting instead of the source folder structure.) + +As with posts, if you use a permalink style that omits the `.html` file extension, each page is rendered as an `index.html` file inserted inside a folder with the page's name (for example, `mypage/index.html`). + +### Collections + +By default, collections follow a similar structure in the `_site` folder as pages, except that the path is prefaced by the collection name. For example: `collectionname/mypage.html`. For permalink settings that omit the file extension, the path would be `collection_name/mypage/index.html`. + +Collections have their own way of setting permalinks. Additionally, collections have unique template variables available available (such as `path` and `output_ext`). See the [Configuring permalinks for collections]( ../collections#permalinks ) in Collections for more information. + +## Flattening pages in \_site on build + +If you want to flatten your pages (pull them out of subfolders) in the `_site` directory when your site builds (similar to posts), add the `permalink` property to the front matter of each page, with no path specified: + +``` +--- +title: My page +permalink: mypageurl.html +--- +``` + +## Extensionless permalinks with no trailing slashes {#extensionless-permalinks} + +Jekyll supports permalinks that contain neither a trailing slash nor a file extension, but this requires additional support from the web server to properly serve. When using these types of permalinks, output files written to disk will still have the proper file extension (typically `.html`), so the web server must be able to map requests without file extensions to these files. + +Both [GitHub Pages](../github-pages/) and the Jekyll's built-in WEBrick server handle these requests properly without any additional work. ### Apache -The Apache web server has very extensive support for content negotiation and can -handle extensionless URLs by setting the [multiviews][] option in your -`httpd.conf` or `.htaccess` file: - -[multiviews]: https://httpd.apache.org/docs/current/content-negotiation.html#multiviews +The Apache web server has extensive support for content negotiation and can handle extensionless URLs by setting the [multiviews](https://httpd.apache.org/docs/current/content-negotiation.html#multiviews) option in your `httpd.conf` or `.htaccess` file: {% highlight apache %} Options +MultiViews @@ -295,13 +357,12 @@ Options +MultiViews ### Nginx -The [try_files][] directive allows you to specify a list of files to search for -to process a request. The following configuration will instruct nginx to search -for a file with an `.html` extension if an exact match for the requested URI is -not found. - -[try_files]: http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files +The [try_files](http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files) directive allows you to specify a list of files to search for to process a request. The following configuration will instruct nginx to search for a file with an `.html` extension if an exact match for the requested URI is not found. {% highlight nginx %} try_files $uri $uri.html $uri/ =404; {% endhighlight %} + +## Linking without regard to permalink styles + +You can create links in your topics to other posts, pages, or collection items in a way that is valid no matter what permalink configuration you choose. By using the `link` tag, if you change your permalinks, your links won't break. See [Linking to pages](../templates#link) in Templates for more details. diff --git a/docs/_docs/plugins.md b/docs/_docs/plugins.md index e546396f..4a5e61cf 100644 --- a/docs/_docs/plugins.md +++ b/docs/_docs/plugins.md @@ -782,7 +782,7 @@ LESS.js files during generation. #### Filters -- [Truncate HTML](https://github.com/MattHall/truncatehtml) by [Matt Hall](http://codebeef.com): A Jekyll filter that truncates HTML while preserving markup structure. +- [Truncate HTML](https://github.com/MattHall/truncatehtml) by [Matt Hall](https://codebeef.com/): A Jekyll filter that truncates HTML while preserving markup structure. - [Domain Name Filter by Lawrence Woodman](https://github.com/LawrenceWoodman/domain_name-liquid_filter): Filters the input text so that just the domain name is left. - [Summarize Filter by Mathieu Arnold](https://gist.github.com/731597): Remove markup after a `
` tag. - [i18n_filter](https://github.com/gacha/gacha.id.lv/blob/master/_plugins/i18n_filter.rb): Liquid filter to use I18n localization. @@ -803,6 +803,7 @@ LESS.js files during generation. - [jekyll-roman](https://github.com/paulrobertlloyd/jekyll-roman): A liquid filter for Jekyll that converts numbers into Roman numerals. - [jekyll-typogrify](https://github.com/myles/jekyll-typogrify): A Jekyll plugin that brings the functions of [typogruby](http://avdgaag.github.io/typogruby/). - [Jekyll Email Protect](https://github.com/vwochnik/jekyll-email-protect): Email protection liquid filter for Jekyll +- [Jekyll Uglify Filter](https://github.com/mattg/jekyll-uglify-filter): A Liquid filter that runs your JavaScript through UglifyJS. #### Tags @@ -832,7 +833,7 @@ LESS.js files during generation. - [Jekyll-devonly_tag](https://gist.github.com/2403522): A block tag for including markup only during development. - [JekyllGalleryTag](https://github.com/redwallhp/JekyllGalleryTag) by [redwallhp](https://github.com/redwallhp): Generates thumbnails from a directory of images and displays them in a grid. - [Youku and Tudou Embed](https://gist.github.com/Yexiaoxing/5891929): Liquid plugin for embedding Youku and Tudou videos. -- [Jekyll-swfobject](https://github.com/sectore/jekyll-swfobject): Liquid plugin for embedding Adobe Flash files (.swf) using [SWFObject](http://code.google.com/p/swfobject/). +- [Jekyll-swfobject](https://github.com/sectore/jekyll-swfobject): Liquid plugin for embedding Adobe Flash files (.swf) using [SWFObject](https://github.com/swfobject/swfobject). - [Jekyll Picture Tag](https://github.com/robwierzbowski/jekyll-picture-tag): Easy responsive images for Jekyll. Based on the proposed [``](https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element) element, polyfilled with Scott Jehl’s [Picturefill](https://github.com/scottjehl/picturefill). - [Jekyll Image Tag](https://github.com/robwierzbowski/jekyll-image-tag): Better images for Jekyll. Save image presets, generate resized images, and add classes, alt text, and other attributes. - [Jekyll Responsive Image](https://github.com/wildlyinaccurate/jekyll-responsive-image): Responsive images for Jekyll. Automatically resizes images, supports all responsive methods (``, `srcset`, Imager.js, etc), super-flexible configuration. @@ -842,14 +843,14 @@ LESS.js files during generation. - [Jekyll Image Encode](https://github.com/GSI/jekyll_image_encode) by [GSI](https://github.com/GSI): Tag that renders base64 codes of images fetched from the web. - [Jekyll Quick Man](https://github.com/GSI/jekyll_quick_man) by [GSI](https://github.com/GSI): Tag that renders pretty links to man page sources on the internet. - [jekyll-font-awesome](https://gist.github.com/23maverick23/8532525): Quickly and easily add Font Awesome icons to your posts. -- [Lychee Gallery Tag](https://gist.github.com/tobru/9171700) by [tobru](https://github.com/tobru): Include [Lychee](http://lychee.electerious.com/) albums into a post. For an introduction, see [Jekyll meets Lychee - A Liquid Tag plugin](https://tobrunet.ch/articles/jekyll-meets-lychee-a-liquid-tag-plugin/) +- [Lychee Gallery Tag](https://gist.github.com/tobru/9171700) by [tobru](https://github.com/tobru): Include [Lychee](https://lychee.electerious.com/) albums into a post. For an introduction, see [Jekyll meets Lychee - A Liquid Tag plugin](https://tobrunet.ch/articles/jekyll-meets-lychee-a-liquid-tag-plugin/) - [Image Set/Gallery Tag](https://github.com/callmeed/jekyll-image-set) by [callmeed](https://github.com/callmeed): Renders HTML for an image gallery from a folder in your Jekyll site. Just pass it a folder name and class/tag options. - [jekyll_figure](https://github.com/lmullen/jekyll_figure): Generate figures and captions with links to the figure in a variety of formats - [Jekyll GitHub Sample Tag](https://github.com/bwillis/jekyll-github-sample): A liquid tag to include a sample of a github repo file in your Jekyll site. - [Jekyll Project Version Tag](https://github.com/rob-murray/jekyll-version-plugin): A Liquid tag plugin that renders a version identifier for your Jekyll site sourced from the git repository containing your code. -- [Piwigo Gallery](https://github.com/AlessandroLorenzi/piwigo_gallery) by [Alessandro Lorenzi](http://www.alorenzi.eu/): Jekyll plugin to generate thumbnails from a Piwigo gallery and display them with a Liquid tag +- [Piwigo Gallery](https://github.com/AlessandroLorenzi/piwigo_gallery) by [Alessandro Lorenzi](http://blog.alorenzi.eu/): Jekyll plugin to generate thumbnails from a Piwigo gallery and display them with a Liquid tag - [mathml.rb](https://github.com/tmthrgd/jekyll-plugins) by Tom Thorogood: A plugin to convert TeX mathematics into MathML for display. -- [webmention_io.rb](https://github.com/aarongustafson/jekyll-webmention_io) by [Aaron Gustafson](http://aaron-gustafson.com/): A plugin to enable [webmention](http://indiewebcamp.com/webmention) integration using [Webmention.io](http://webmention.io). Includes an optional JavaScript for updating webmentions automatically between publishes and, if available, in realtime using WebSockets. +- [webmention_io.rb](https://github.com/aarongustafson/jekyll-webmention_io) by [Aaron Gustafson](http://aaron-gustafson.com/): A plugin to enable [webmention](https://indieweb.org/webmention) integration using [Webmention.io](https://webmention.io/). Includes an optional JavaScript for updating webmentions automatically between publishes and, if available, in realtime using WebSockets. - [Jekyll 500px Embed](https://github.com/lkorth/jekyll-500px-embed) by Luke Korth. A Liquid tag plugin that embeds [500px](https://500px.com/) photos. - [inline\_highlight](https://github.com/bdesham/inline_highlight): A tag for inline syntax highlighting. - [jekyll-mermaid](https://github.com/jasonbellamy/jekyll-mermaid): Simplify the creation of mermaid diagrams and flowcharts in your posts and pages. @@ -866,11 +867,12 @@ LESS.js files during generation. - [Jekyll Maps](https://github.com/ayastreb/jekyll-maps) by [Anatoliy Yastreb](https://github.com/ayastreb): A Jekyll plugin to easily embed maps with filterable locations. - [Jekyll Cloudinary](https://nhoizey.github.io/jekyll-cloudinary/) by [Nicolas Hoizey](https://nicolas-hoizey.com/): a Jekyll plugin adding a Liquid tag to ease the use of Cloudinary for responsive images in your Markdown/Kramdown posts. - [jekyll-include-absolute-plugin](https://github.com/tnhu/jekyll-include-absolute-plugin) by [Tan Nhu](https://github.com/tnhu): A Jekyll plugin to include a file from its path relative to Jekyll's source folder. +- [Jekyll Download Tag](https://github.com/mattg/jekyll-download-tag): A Liquid tag that acts like `include`, but for external resources. #### Collections - [Jekyll Plugins by Recursive Design](https://github.com/recurser/jekyll-plugins): Plugins to generate Project pages from GitHub readmes, a Category page, and a Sitemap generator. -- [Company website and blog plugins](https://github.com/flatterline/jekyll-plugins) by Flatterline, a [Ruby on Rails development company](http://flatterline.com/): Portfolio/project page generator, team/individual page generator, an author bio liquid tag for use on posts, and a few other smaller plugins. +- [Company website and blog plugins](https://github.com/flatterline/jekyll-plugins) by Flatterline, a Ruby on Rails development company: Portfolio/project page generator, team/individual page generator, an author bio liquid tag for use on posts, and a few other smaller plugins. - [Jekyll plugins by Aucor](https://github.com/aucor/jekyll-plugins): Plugins for trimming unwanted newlines/whitespace and sorting pages by weight attribute. #### Other @@ -889,7 +891,7 @@ LESS.js files during generation. - [Jekyll-tagging](https://github.com/pattex/jekyll-tagging): Jekyll plugin to automatically generate a tag cloud and tag pages. - [Jekyll-scholar](https://github.com/inukshuk/jekyll-scholar): Jekyll extensions for the blogging scholar. - [Jekyll-asset_bundler](https://github.com/moshen/jekyll-asset_bundler): Bundles and minifies JavaScript and CSS. -- [Jekyll-assets](http://ixti.net/jekyll-assets/) by [ixti](https://github.com/ixti): Rails-alike assets pipeline (write assets in CoffeeScript, Sass, LESS etc; specify dependencies for automatic bundling using simple declarative comments in assets; minify and compress; use JST templates; cache bust; and many-many more). +- [Jekyll-assets](http://jekyll.github.io/jekyll-assets/) by [ixti](https://github.com/ixti): Rails-alike assets pipeline (write assets in CoffeeScript, Sass, LESS etc; specify dependencies for automatic bundling using simple declarative comments in assets; minify and compress; use JST templates; cache bust; and many-many more). - [JAPR](https://github.com/kitsched/japr): Jekyll Asset Pipeline Reborn - Powerful asset pipeline for Jekyll that collects, converts and compresses JavaScript and CSS assets. - [File compressor](https://gist.github.com/2758691) by [mytharcher](https://github.com/mytharcher): Compress HTML and JavaScript files on site build. - [Jekyll-minibundle](https://github.com/tkareine/jekyll-minibundle): Asset bundling and cache busting using external minification tool of your choice. No gem dependencies. @@ -913,6 +915,10 @@ LESS.js files during generation. - [Jekyll-Spotify](https://github.com/MertcanGokgoz/Jekyll-Spotify): Easily output Spotify Embed Player for jekyll - [jekyll-menus](https://github.com/forestryio/jekyll-menus): Hugo style menus for your Jekyll site... recursive menus included. - [jekyll-data](https://github.com/ashmaroli/jekyll-data): Read data files within Jekyll Theme Gems. +- [jekyll-pinboard](https://github.com/snaptortoise/jekyll-pinboard-plugin): Access your Pinboard bookmarks within your Jekyll theme. +- [jekyll-migrate-permalink](https://github.com/mpchadwick/jekyll-migrate-permalink): Adds a `migrate-permalink` sub-command to help deal with side effects of changing your permalink. +- [Jekyll-Post](https://github.com/robcrocombe/jekyll-post): A CLI tool to easily draft, edit, and publish Jekyll posts. +- [jekyll-numbered-headings](https://github.com/muratayusuke/jekyll-numbered-headings): Adds ordered number to headings. #### Editors diff --git a/docs/_docs/quickstart.md b/docs/_docs/quickstart.md index 969b5384..d15a9eb1 100644 --- a/docs/_docs/quickstart.md +++ b/docs/_docs/quickstart.md @@ -4,25 +4,42 @@ title: Quick-start guide permalink: /docs/quickstart/ --- -For the impatient, here's how to get a boilerplate Jekyll site up and running. +If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGems](https://rubygems.org/pages/download) installed (see Jekyll's [requirements](/docs/installation/#requirements/)), you can create a new Jekyll site by doing the following: ```sh +# Install Jekyll and Bundler gems through RubyGems ~ $ gem install jekyll bundler + +# Create a new Jekyll site at ./myblog ~ $ jekyll new myblog + +# Change into your new directory ~ $ cd myblog + +# Build the site on the preview server ~/myblog $ bundle exec jekyll serve -# => Now browse to http://localhost:4000 + +# Now browse to http://localhost:4000 ``` -The `jekyll new` command now automatically initiates `bundle install` and installs the dependencies required. To skip this, pass `--skip-bundle` option like so `jekyll new myblog --skip-bundle`. +## About Bundler -If you wish to install jekyll into an existing directory, you can do so by running `jekyll new .` from within the directory instead of creating a new one. If the existing directory isn't empty, you'll also have to pass the `--force` option like so `jekyll new . --force`. +`gem install jekyll bundler` installs the [jekyll](https://rubygems.org/gems/jekyll/) and [bundler](https://rubygems.org/gems/bundler) gems through [RubyGems](https://rubygems.org/). You need only to install the gems one time — not every time you create a new Jekyll project. Here are some additional details: -That's nothing, though. The real magic happens when you start creating blog -posts, using the front matter to control templates and layouts, and taking -advantage of all the awesome configuration options Jekyll makes available. +* `bundler` is a gem that manages other Ruby gems. It makes sure your gems and gem versions are compatible, and that you have all necessary dependencies each gem requires. +* The `Gemfile` and `Gemfile.lock` files inform Bundler about the gem requirements in your site. If your site doesn't have these Gemfiles, you can omit `bundle exec` and just run `jekyll serve`. -If you're running into problems, ensure you have all the [requirements -installed][Installation]. +* When you run `bundle exec jekyll serve`, Bundler uses the gems and versions as specified in `Gemfile.lock` to ensure your Jekyll site builds with no compatibility or dependency conflicts. -[Installation]: /docs/installation/ +## Options for creating a new site with Jekyll + +`jekyll new ` installs a new Jekyll site at the path specified (relative to current directory). In this case, Jekyll will be installed in a directory called `myblog`. Here are some additional details: + +* To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. +* `jekyll new` automatically initiates `bundle install` to install the dependencies required. (If you don't want Bundler to install the gems, use `jekyll new myblog --skip-bundle`.) +* By default, the Jekyll site installed by `jekyll new` uses a gem-based theme called [Minima](https://github.com/jekyll/minima). With [gem-based themes](../themes), some of the directories and files are stored in the theme-gem, hidden from your immediate view. +* To learn about other parameters you can include with `jekyll new`, type `jekyll new --help`. + +## Next steps + +Building a Jekyll site with the default theme is just the first step. The real magic happens when you start creating blog posts, using the front matter to control templates and layouts, and taking advantage of all the awesome configuration options Jekyll makes available. diff --git a/docs/_docs/resources.md b/docs/_docs/resources.md index e17035ad..2042b1a6 100644 --- a/docs/_docs/resources.md +++ b/docs/_docs/resources.md @@ -9,19 +9,19 @@ Jekyll’s growing use is producing a wide variety of tutorials, frameworks, ext ### Useful Guides - [Jekyll Tips](http://jekyll.tips) is a set of resources created by [CloudCannon](https://cloudcannon.com) to help folks get up and running with Jekyll. They cover all skill levels, and even include some great video tutorials. -- [Jekyll Cheatsheet](http://cheat.jekyll.tips) is a single-page resource for Jekyll filters, variables, and the like. +- [Jekyll Cheatsheet](http://jekyll.tips/jekyll-cheat-sheet/) is a single-page resource for Jekyll filters, variables, and the like. - [“Creating and Hosting a Personal Site on GitHub”](http://jmcglone.com/guides/github-pages/) -- [‘Build A Blog With Jekyll And GitHub Pages’ on Smashing Magazine](http://www.smashingmagazine.com/2014/08/01/build-blog-jekyll-github-pages/) +- [‘Build A Blog With Jekyll And GitHub Pages’ on Smashing Magazine](https://www.smashingmagazine.com/2014/08/01/build-blog-jekyll-github-pages/) - Publishing to GitHub Pages? [Check out our documentation page for just that purpose](/docs/github-pages/). -- [Blogging with Git, Emacs and Jekyll](http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/) +- [Blogging with Git, Emacs and Jekyll](https://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/) - [Tips for working with GitHub Pages Integration](https://gist.github.com/jedschneider/2890453) ### Integrations - Use a saas service as a backend for forms (contact forms, hiring forms, etc.) - - [Formspree (also open source)](http://formspree.io/) + - [Formspree (also open source)](https://formspree.io/) - [FormKeep](https://formkeep.com/guides/contact-form-jekyll?utm_source=github&utm_medium=jekyll-docs&utm_campaign=contact-form-jekyll) - - [Simple Form](http://getsimpleform.com/) + - [Simple Form](https://getsimpleform.com/) - [Formingo](https://www.formingo.co/guides/jekyll?utm_source=github&utm_medium=jekyll-docs&utm_campaign=Jekyll%20Documentation) - [Jekyll Bootstrap](http://jekyllbootstrap.com), 0 to Blog in 3 minutes. Provides detailed explanations, examples, and helper-code to make getting started with Jekyll easier. - [Integrating Twitter with Jekyll](http://www.justkez.com/integrating-twitter-with-jekyll/) diff --git a/docs/_docs/sites.md b/docs/_docs/sites.md index 61fbba13..28e464ba 100644 --- a/docs/_docs/sites.md +++ b/docs/_docs/sites.md @@ -10,9 +10,9 @@ learning purposes. - [Tom Preston-Werner](http://tom.preston-werner.com/) ([source](https://github.com/mojombo/mojombo.github.io)) -- [GitHub Official Teaching Materials](http://training.github.com) +- [GitHub Official Teaching Materials](https://services.github.com/training/) ([source](https://github.com/github/training-kit)) -- [Rasmus Andersson](http://rsms.me/) +- [Rasmus Andersson](https://rsms.me/) ([source](https://github.com/rsms/rsms.github.com)) If you would like to explore more examples, you can find a list of sites diff --git a/docs/_docs/static_files.md b/docs/_docs/static_files.md index 19d45089..55a72747 100644 --- a/docs/_docs/static_files.md +++ b/docs/_docs/static_files.md @@ -26,7 +26,7 @@ following metadata:

file.path

- The relative path to the file, e.g /assets/img/image.jpg + The relative path to the file, e.g. /assets/img/image.jpg

@@ -34,7 +34,7 @@ following metadata:

file.modified_time

- The `Time` the file was last modified, e.g 2016-04-01 16:35:26 +0200 + The `Time` the file was last modified, e.g. 2016-04-01 16:35:26 +0200

diff --git a/docs/_docs/structure.md b/docs/_docs/structure.md index b21cb1b2..bdfaab59 100644 --- a/docs/_docs/structure.md +++ b/docs/_docs/structure.md @@ -17,6 +17,8 @@ A basic Jekyll site usually looks something like this: ```sh . ├── _config.yml +├── _data +| └── members.yml ├── _drafts | ├── begin-with-the-crazy-ideas.md | └── on-simplicity-in-technology.md @@ -29,13 +31,25 @@ A basic Jekyll site usually looks something like this: ├── _posts | ├── 2007-10-29-why-every-programmer-should-play-nethack.md | └── 2009-04-26-barcamp-boston-4-roundup.md -├── _data -| └── members.yml +├── _sass +| ├── _base.scss +| └── _layout.scss ├── _site ├── .jekyll-metadata -└── index.html +└── index.html # can also be an 'index.md' with valid YAML Frontmatter ``` +
+
Directory structure of Jekyll sites using gem-based themes
+

+ Starting Jekyll 3.2, a new Jekyll project bootstrapped with jekyll new uses gem-based themes to define the look of the site. This results in a lighter default directory structure : _layouts, _includes and _sass are stored in the theme-gem, by default. +

+
+

+ minima is the current default theme, and bundle show minima will show you where minima theme's files are stored on your computer. +

+
+ An overview of what each of these does:
@@ -53,11 +67,9 @@ An overview of what each of these does:

- Stores configuration data. Many of these options can be specified from the command line executable but it’s easier to specify them here so you don’t have to remember them. -

@@ -67,11 +79,9 @@ An overview of what each of these does:

- Drafts are unpublished posts. The format of these files is without a date: title.MARKUP. Learn how to work with drafts. -

@@ -81,13 +91,11 @@ An overview of what each of these does:

- These are the partials that can be mixed and matched by your layouts and posts to facilitate reuse. The liquid tag {% raw %}{% include file.ext %}{% endraw %} can be used to include the partial in _includes/file.ext. -

@@ -97,14 +105,12 @@ An overview of what each of these does:

- These are the templates that wrap posts. Layouts are chosen on a post-by-post basis in the YAML Front Matter, which is described in the next section. The liquid tag {% raw %}{{ content }}{% endraw %} is used to inject content into the web page. -

@@ -114,14 +120,12 @@ An overview of what each of these does:

- Your dynamic content, so to speak. The naming convention of these files is important, and must follow the format: YEAR-MONTH-DAY-title.MARKUP. The permalinks can be customized for each post, but the date and markup language are determined solely by the file name. -

@@ -131,15 +135,25 @@ An overview of what each of these does:

- Well-formatted site data should be placed here. The Jekyll engine - will autoload all YAML files in this directory (using either the - .yml, .yaml, .json or - .csv formats and extensions) and they will be + will autoload all data files (using either the .yml, + .yaml, .json or .csv + formats and extensions) in this directory, and they will be accessible via `site.data`. If there's a file members.yml under the directory, then you can access contents of the file through site.data.members. - +

+ + + + +

_sass

+ + +

+ These are sass partials that can be imported into your main.scss + which will then be processed into a single stylesheet + main.css that defines the styles to be used by your site.

@@ -149,11 +163,9 @@ An overview of what each of these does:

- This is where the generated site will be placed (by default) once Jekyll is done transforming it. It’s probably a good idea to add this to your .gitignore file. -

@@ -163,29 +175,26 @@ An overview of what each of these does:

- This helps Jekyll keep track of which files have not been modified since the site was last built, and which files will need to be regenerated on the next build. This file will not be included in the generated site. It’s probably a good idea to add this to your .gitignore file. -

-

index.html and other HTML, Markdown, Textile files

+

index.html or index.md and other HTML, + Markdown, Textile files

- Provided that the file has a YAML Front Matter section, it will be transformed by Jekyll. The same will happen for any .html, .markdown, .md, or .textile file in your site’s root directory or directories not listed above. -

@@ -195,14 +204,12 @@ An overview of what each of these does:

- Every other directory and file except for those listed above—such as css and images folders, favicon.ico files, and so forth—will be copied verbatim to the generated site. There are plenty of sites already using Jekyll if you’re curious to see how they’re laid out. -

diff --git a/docs/_docs/templates.md b/docs/_docs/templates.md index 54f914f7..79b5fdae 100644 --- a/docs/_docs/templates.md +++ b/docs/_docs/templates.md @@ -147,6 +147,22 @@ common tasks easier.

+ + +

Group By Expression

+

Group an array's items using a Liquid expression.

+ + +

+ {% raw %}{{ site.members | group_by_exp:"item", +"item.graduation_year | truncate: 3, \"\"" }}{% endraw %} +

+

+ [{"name"=>"201...", "items"=>[...]}, +{"name"=>"200...", "items"=>[...]}] +

+ +

XML Escape

@@ -208,7 +224,7 @@ common tasks easier.

Array to Sentence

-

Convert an array into a sentence. Useful for listing tags.

+

Convert an array into a sentence. Useful for listing tags. Optional argument for connector.

@@ -217,6 +233,12 @@ common tasks easier.

foo, bar, and baz

+

+ {% raw %}{{ page.tags | array_to_sentence_string: 'or' }}{% endraw %} +

+

+ foo, bar, or baz +

@@ -518,10 +540,10 @@ You must include the file extension when using the `link` tag. ```liquid {% raw %} -{% link _collection/name-of-document.md %} -{% link _posts/2016-07-26-name-of-post.md %} -{% link news/index.html %} -{% link /assets/files/doc.pdf %} +{{ site.baseurl }}{% link _collection/name-of-document.md %} +{{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %} +{{ site.baseurl }}{% link news/index.html %} +{{ site.baseurl }}{% link /assets/files/doc.pdf %} {% endraw %} ``` @@ -529,10 +551,10 @@ You can also use this tag to create a link in Markdown as follows: ```liquid {% raw %} -[Link to a document]({% link _collection/name-of-document.md %}) -[Link to a post]({% link _posts/2016-07-26-name-of-post.md %}) -[Link to a page]({% link news/index.html %}) -[Link to a file]({% link /assets/files/doc.pdf %}) +[Link to a document]({{ site.baseurl }}{% link _collection/name-of-document.md %}) +[Link to a post]({{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %}) +[Link to a page]({{ site.baseurl }}{% link news/index.html %}) +[Link to a file]({{ site.baseurl }}{% link /assets/files/doc.pdf %}) {% endraw %} ``` @@ -543,7 +565,7 @@ will generate the correct permalink URL for the post you specify. ```liquid {% raw %} -{% post_url 2010-07-21-name-of-post %} +{{ site.baseurl }}{% post_url 2010-07-21-name-of-post %} {% endraw %} ``` @@ -552,7 +574,7 @@ path to the post: ```liquid {% raw %} -{% post_url /subdir/2010-07-21-name-of-post %} +{{ site.baseurl }}{% post_url /subdir/2010-07-21-name-of-post %} {% endraw %} ``` @@ -562,7 +584,7 @@ You can also use this tag to create a link to a post in Markdown as follows: ```liquid {% raw %} -[Name of Link]({% post_url 2010-07-21-name-of-post %}) +[Name of Link]({{ site.baseurl }}{% post_url 2010-07-21-name-of-post %}) {% endraw %} ``` diff --git a/docs/_docs/upgrading/2-to-3.md b/docs/_docs/upgrading/2-to-3.md index 9e7b0a6e..0d145b9c 100644 --- a/docs/_docs/upgrading/2-to-3.md +++ b/docs/_docs/upgrading/2-to-3.md @@ -68,7 +68,7 @@ generate when running `jekyll build` or `jekyll serve`.
Future Posts on GitHub Pages

- An exception to the above rule are GitHub Pages sites, where the `--future` flag remains _enabled_ + An exception to the above rule are GitHub Pages sites, where the --future flag remains enabled by default to maintain historical consistency for those sites.

@@ -100,7 +100,7 @@ error when trying to **serve** or **build**: ```text Since v3.0, permalinks for pages in subfolders must be relative to the site source directory, not the parent directory. Check -http://jekyllrb.com/docs/upgrading/ for more info. +https://jekyllrb.com/docs/upgrading/ for more info. ``` This can be fixed by removing the following line from your `_config.yml` file: diff --git a/docs/_docs/usage.md b/docs/_docs/usage.md index 3d2413d4..e6f1a0db 100644 --- a/docs/_docs/usage.md +++ b/docs/_docs/usage.md @@ -60,7 +60,7 @@ $ jekyll serve $ jekyll serve --detach # => Same as `jekyll serve` but will detach from the current terminal. # If you need to kill the server, you can `kill -9 1234` where "1234" is the PID. -# If you cannot find the PID, then do, `ps aux | grep jekyll` and kill the instance. [Read more](http://unixhelp.ed.ac.uk/shell/jobz5.html). +# If you cannot find the PID, then do, `ps aux | grep jekyll` and kill the instance. ```
diff --git a/docs/_docs/variables.md b/docs/_docs/variables.md index 059e092b..1d4e2091 100644 --- a/docs/_docs/variables.md +++ b/docs/_docs/variables.md @@ -339,7 +339,7 @@ following is a reference of the available data. If you specify front matter in a layout, access that via layout. For example, if you specify class: full_page - in a page’s front matter, that value will be available as + in a layout’s front matter, that value will be available as layout.class in the layout and its parents.

diff --git a/docs/_docs/windows.md b/docs/_docs/windows.md index 68edd8ef..8d7bb8bc 100644 --- a/docs/_docs/windows.md +++ b/docs/_docs/windows.md @@ -16,10 +16,12 @@ A quick way to install Jekyll is to follow the [installation instructions by Dav 2. Install Ruby via Chocolatey: `choco install ruby -y` 3. Reopen a command prompt and install Jekyll: `gem install jekyll` -For a more conventional way of installing Jekyll you can follow the [installation instructions by Sverrir Sigmundarson][windows-installjekyll3]. These instructions are for newer versions of Ruby 2.2.5 and Jekyll 3. +Updates in the infrastructure of Ruby may cause SSL errors when attempting to use `gem install` with versions of the RubyGems package older than 2.6. (The RubyGems package installed via the Chocolatey tool is version 2.3) If you have installed an older version, you can update the RubyGems package using the directions [here.][ssl-certificate-update] +[ssl-certificate-update]: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages -For instructions for older versions of Ruby 2.0.0 ([prior to 2.2][hitimes-issue]) and Jekyll 2 and older you should follow the [installation instruction by Julian Thilo][windows-installation]. +For a more conventional way of installing Jekyll you can follow this [complete guide to install Jekyll 3 on Windows by Sverrir Sigmundarson][windows-installjekyll3]. +[windows-installjekyll3]: https://labs.sverrirs.com/jekyll/ ## Encoding @@ -35,9 +37,18 @@ the site generation process. It can be done with the following command: $ chcp 65001 ``` -[windows-installation]: http://jekyll-windows.juthilo.com/ -[windows-installjekyll3]: https://labs.sverrirs.com/jekyll/ -[hitimes-issue]: https://github.com/copiousfreetime/hitimes/issues/40 +## Timezone Management + +Since Windows doesn't have a native source of zoneinfo data, the Ruby Interpreter would not understand IANA Timezones and hence using them had the `TZ` environment variable default to UTC/GMT 00:00. +Though Windows users could alternatively define their blog's timezone by setting the key to use POSIX format of defining timezones, it wasn't as user-friendly when it came to having the clock altered to changing DST-rules. + +Jekyll now uses a rubygem to internally configure Timezone based on established [IANA Timezone Database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). +While 'new' blogs created with Jekyll v3.4 and greater, will have the following added to their 'Gemfile' by default, existing sites *will* have to update their 'Gemfile' (and installed) to enable development on Windows: + +```ruby +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] +``` ## Auto-regeneration @@ -102,8 +113,8 @@ This gem is also needed in the github-pages and to get it running on Windows x64 ```ruby -source 'http://rubygems.org' -gem 'github-pages' +source 'https://rubygems.org' +gem 'github-pages', group: :jekyll_plugins ``` * **Note:** We use an unsecure connection because SSL throws exceptions in the version of Ruby @@ -115,7 +126,7 @@ There will be a warning on startup that you should include `gem 'wdm', '>= 0.1.0 In the future the installation process of the github-pages should be as simple as the setup of the blog. But as long as the new version of the Nokogiri ([v1.6.8][nokogiriReleases]) is not stable and referenced, it is work to get it up and running on Windows. -[jwillmerPost]: http://jwillmer.de/blog/tutorial/how-to-install-jekyll-and-pages-gem-on-windows-10-x46 "Installation instructions by Jens Willmer" +[jwillmerPost]: https://jwillmer.de/blog/tutorial/how-to-install-jekyll-and-pages-gem-on-windows-10-x46 "Installation instructions by Jens Willmer" [Chocolatey]: https://chocolatey.org/install "Package manager for Windows" [Bundler]: http://bundler.io/ "Ruby Dependencie Manager" [nokogiriReleases]: https://github.com/sparklemotion/nokogiri/releases "Nokogiri Releases" diff --git a/docs/_includes/analytics.html b/docs/_includes/analytics.html index 5bbfc888..05761c29 100644 --- a/docs/_includes/analytics.html +++ b/docs/_includes/analytics.html @@ -1,5 +1,5 @@ {% if site.gauges_id %} - +