j1-template 2021.1.29 → 2021.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_post.html +3 -0
  3. data/_includes/themes/j1/procedures/posts/create_series_header.proc +6 -6
  4. data/assets/data/mdil_icons.json +2417 -0
  5. data/assets/themes/j1/core/css/icon-fonts/materialdesign-light.css +1222 -0
  6. data/assets/themes/j1/core/css/icon-fonts/materialdesign-light.min.css +1 -0
  7. data/assets/themes/j1/core/css/icon-fonts/materialdesign.css +1 -1
  8. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.css +1 -1
  9. data/assets/themes/j1/core/fonts/material_design_icons_light/fonts/eot/materialdesignicons-light-webfont.eot +0 -0
  10. data/assets/themes/j1/core/fonts/material_design_icons_light/fonts/materialdesignicons-light-webfont.woff +0 -0
  11. data/assets/themes/j1/core/fonts/material_design_icons_light/fonts/materialdesignicons-light-webfont.woff2 +0 -0
  12. data/assets/themes/j1/core/fonts/material_design_icons_light/fonts/svg/materialdesignicons-light-webfont.svg +801 -0
  13. data/assets/themes/j1/core/fonts/material_design_icons_light/fonts/ttf/materialdesignicons-light-webfont.ttf +0 -0
  14. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.css +1 -1
  15. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.min.css +1 -1
  16. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.js +5 -15
  17. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.min.js +1 -1
  18. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.css +97 -0
  19. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.min.css +15 -0
  20. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.js +125 -0
  21. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.min.js +15 -0
  22. data/assets/themes/j1/modules/showOnScroll/js/showOnScroll.js +73 -73
  23. data/assets/themes/j1/modules/showOnScroll/js/showOnScroll.min.js +15 -15
  24. data/lib/j1/commands/generate.rb +5 -8
  25. data/lib/j1/version.rb +1 -1
  26. data/lib/starter_web/Gemfile +1 -1
  27. data/lib/starter_web/_config.yml +3 -3
  28. data/lib/starter_web/_data/blocks/banner.yml +4 -5
  29. data/lib/starter_web/_data/modules/j1scroll.yml +2 -2
  30. data/lib/starter_web/_data/modules/navigator_menu.yml +3 -3
  31. data/lib/starter_web/_data/resources.yml +22 -0
  32. data/lib/starter_web/_includes/attributes.asciidoc +1 -1
  33. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  34. data/lib/starter_web/assets/images/modules/attics/annie-spratt-1920x1280.jpg +0 -0
  35. data/lib/starter_web/assets/images/modules/attics/antonino-visalli-1920x1280.jpg +0 -0
  36. data/lib/starter_web/assets/images/modules/attics/humble-lamb-1920x1280.jpg +0 -0
  37. data/lib/starter_web/assets/images/modules/attics/library-1920x1280.jpg +0 -0
  38. data/lib/starter_web/assets/images/modules/attics/romain-vignes-1920x1280.jpg +0 -0
  39. data/lib/starter_web/assets/images/modules/attics/sigmund-1920x1280.jpg +0 -0
  40. data/lib/starter_web/assets/images/{pages/videos → modules/attics}/szabo-viktor-1920x1280.jpg +0 -0
  41. data/lib/starter_web/assets/images/pages/asciidoc_skeletons/example-pdf-screenshot.png +0 -0
  42. data/lib/starter_web/collections/posts/public/featured/_posts/{2020-01-01-about-cookies.adoc → 2021-01-01-about-cookies.adoc} +0 -0
  43. data/lib/starter_web/collections/posts/public/featured/_posts/{2021-03-01-site-generators.adoc → 2021-02-01-site-generators.adoc} +0 -0
  44. data/lib/starter_web/collections/posts/public/{wikipedia/_posts/2016-11-20-minneapolis.adoc → series/_posts/2020-01-01-post-wiki-series.adoc} +11 -10
  45. data/lib/starter_web/collections/posts/public/{wikipedia/_posts/2016-11-24-narcisse-snake-dens.adoc → series/_posts/2020-01-02-post-wiki-series.adoc} +15 -13
  46. data/lib/starter_web/collections/posts/public/{wikipedia/_posts/2016-11-26-columbia-river.adoc → series/_posts/2020-01-03-post-wiki-series.adoc} +28 -11
  47. data/lib/starter_web/collections/posts/public/{wikipedia → series}/_posts/_includes/attributes.asciidoc +0 -0
  48. data/lib/starter_web/collections/posts/public/{wikipedia → series}/_posts/_includes/documents/readme +0 -0
  49. data/lib/starter_web/collections/posts/public/{wikipedia → series}/_posts/_includes/tables/readme +0 -0
  50. data/lib/starter_web/index.html +2 -2
  51. data/lib/starter_web/package.json +1 -1
  52. data/lib/starter_web/pages/public/asciidoc_skeletons/{book → documentation}/000_intro.adoc +5 -7
  53. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +43 -0
  54. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +61 -0
  55. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/attributes.asciidoc +95 -0
  56. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/000_intro.asciidoc +54 -0
  57. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/000_basic_example.asciidoc +31 -0
  58. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/111_about_the_converter.asciidoc +111 -0
  59. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/112_getting_started.asciidoc +95 -0
  60. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/113_themes.asciidoc +39 -0
  61. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter.asciidoc +8 -0
  62. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/200_themes/211_language_overview.asciidoc +122 -0
  63. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/200_themes/212_values.asciidoc +502 -0
  64. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/200_themes/213_fonts.asciidoc +261 -0
  65. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/200_themes.asciidoc +8 -0
  66. data/lib/starter_web/pages/public/asciidoc_skeletons/{book → documentation}/a2p.bat +1 -1
  67. data/lib/starter_web/pages/public/asciidoc_skeletons/{book → documentation}/a2p.sh +2 -2
  68. data/lib/starter_web/pages/public/asciidoc_skeletons/{book/book.a2p → documentation/documentation.a2p} +2 -8
  69. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +86 -0
  70. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/100_chapter.asciidoc +848 -40
  71. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/200_chapter.asciidoc +149 -38
  72. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +2 -7
  73. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +312 -119
  74. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +2 -2
  75. data/lib/starter_web/pages/public/previewer/mdil_icons_preview.adoc +76 -0
  76. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  77. data/lib/starter_web/utilsrv/package.json +1 -1
  78. metadata +50 -53
  79. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-test-series.adoc +0 -128
  80. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-test-series.adoc +0 -131
  81. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-test-series.adoc +0 -131
  82. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-04-post-test-series.adoc +0 -132
  83. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/asciidoc-extensions/blindtext.asciidoc +0 -11
  84. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/asciidoc-extensions/font_icons.asciidoc +0 -23
  85. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/asciidoc-extensions/gallery.asciidoc +0 -5
  86. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/asciidoc-extensions/lightbox.asciidoc +0 -7
  87. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/documents/chapter_document.asciidoc +0 -9
  88. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/documents/entry_document.asciidoc +0 -3
  89. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/images/image.asciidoc +0 -6
  90. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/tables/table_2_column.asciidoc +0 -12
  91. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/tables/table_2_column_options.asciidoc +0 -30
  92. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/tables/table_3_column.asciidoc +0 -16
  93. data/lib/starter_web/pages/public/asciidoc_skeletons/_templates/tables/table_4_column.asciidoc +0 -25
  94. data/lib/starter_web/pages/public/asciidoc_skeletons/book/100_chapter.adoc +0 -62
  95. data/lib/starter_web/pages/public/asciidoc_skeletons/book/200_chapter.adoc +0 -64
  96. data/lib/starter_web/pages/public/asciidoc_skeletons/book/900_references.adoc +0 -73
  97. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/attributes.asciidoc +0 -74
  98. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/000_intro.asciidoc +0 -33
  99. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/100_chapter/100_chapter_document.asciidoc +0 -21
  100. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/100_chapter/110_chapter_document.asciidoc +0 -36
  101. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/100_chapter.asciidoc +0 -7
  102. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/200_chapter/200_chapter_document.asciidoc +0 -53
  103. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/200_chapter.asciidoc +0 -5
  104. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/900_references/000_intro.asciidoc +0 -23
  105. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/900_references/100_chapter_document.asciidoc +0 -33
  106. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/900_references/200_chapter_document.asciidoc +0 -26
  107. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/900_references/900_sources.asciidoc +0 -81
  108. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/900_references.asciidoc +0 -23
  109. data/lib/starter_web/pages/public/asciidoc_skeletons/book/_includes/documents/tables/110_material_design_icons.asciidoc +0 -102
  110. data/lib/starter_web/pages/public/asciidoc_skeletons/book/book.adoc +0 -136
  111. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/100_chapter.asciidoc +0 -60
  112. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/200_chapter.asciidoc +0 -59
  113. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/tables/110_material_design_icons.asciidoc +0 -102
  114. data/lib/starter_web/pages/public/features/modules.adoc +0 -104
  115. data/lib/starter_web/pages/public/features/platform.adoc +0 -104
@@ -1,53 +1,861 @@
1
- // ~/document_base_folder/_includes/documents
2
- // Sublevel Entry Document: 100_chapter.asciidoc
3
- // -----------------------------------------------------------------------------
1
+ == Configuration
4
2
 
5
- == Chapter 1
3
+ Jekyll allows you to configure your sites in any way you can dream up, and it’s
4
+ thanks to the powerful and flexible configuration options that this is possible.
6
5
 
7
- J1 Template support popular icons font sets out-of-the-box:
6
+ These options can either be specified in a `_config.yml` file placed in your
7
+ site’s root directory, or can be specified as flags for the `jekyll` executable
8
+ on command-line.
8
9
 
9
- * link:{url-mdi--home}[Material Design Icons, {browser-window--new}] (MDI)
10
- * link:{url-fontawesome--home}[FontAwesome Icons V5, {browser-window--new}] (FA)
11
- * link:{url-iconify--home}[Iconify Icons, {browser-window--new}] (II)
10
+ === Global Configuration
12
11
 
13
- The icon sets MDI and FA are very good in design and have a rich set of
14
- different icons for many categories used for the Web. See below some details
15
- for link:{url-roundtrip--mdi-icons}[Material Design Icons, {browser-window--new}]
16
- and link:{url-roundtrip--fontawesome-icons}[FontAwesome Icons, {browser-window--new}].
12
+ The table below lists the available settings for Jekyll, and the various
13
+ `options` (specified in the configuration file) and `flags` (specified on the
14
+ command-line) that control them.
17
15
 
18
- Iconify icons is not a locally stored icon-set like MDI or FA. All icons are
19
- loaded over the Internet using the so-called *Unified OpenSource Icon
20
- Framework*. See section link:{url-roundtrip--iconify-icons}[Iconify Icons, {browser-window--new}]
21
- for more information.
16
+ [width="100%", cols="6,6", options="header", role="table-responsive mt-3"]
17
+ |=======================================================================
18
+ |Setting |Options and Flags
19
+ a|
20
+ *Site Source*
22
21
 
23
- === Section
22
+ Change the directory where Jekyll will read files
24
23
 
25
- The primary icon-set for J1 Template is link:{url-mdi--home}[Material Design Icons, {browser-window--new}],
26
- because it is extremely rich set providing more than 5900+ icons for the
27
- current version (v5.9.55). From a design perspective, _MDI_ has an excellen
28
- *Material Design* support an comes with the original icon set created by
29
- _Google_ build-in.
24
+ a|
25
+ `source: DIR`
30
26
 
31
- _Material Design Icons_ (MDI) is a beneficial design resource for Web Design
32
- that is based on _Google_'s Material Design. _MDI_ is a community-driven
33
- project to create an increased number of icons based on _Google_'s official repository
34
- and MD style specification.
27
+ `-s, --source DIR`
35
28
 
36
- ==== Subsection
29
+ a|
30
+ *Site Destination*
37
31
 
38
- _MDI_ is a growing collection to allow designers and developers targeting
39
- various platforms to download icons in the format, color and size they need
40
- for any project. The repo contains today 2100+ icons plus converted icons from
41
- the official set created by _Google_.
32
+ Change the directory where Jekyll will write files
42
33
 
43
- // include::{documentdir}/tables/110_material_design_icons.asciidoc
44
- // include::{tabledir}/110_material_design_icons.asciidoc
45
- include::./tables/110_material_design_icons.asciidoc[]
34
+ a|
35
+ `destination: DIR`
46
36
 
47
- NOTE: Using Material Design Icons with Asciidoc is quite easy as an inline
48
- macro `mdi:` is available to place icons where ever you want. See more about
49
- this in section
50
- link:{url-roundtrip--asciidoc-extensions}#icon-fonts[Asciidoc Extensions, {browser-window--new}]
37
+ `-d, --destination DIR`
51
38
 
52
- _J1 Template_ supports the full set of _MDI_ for the Web (Webfont, WOFF). The
53
- icon set is fully integrated and can be used out-of-the-box.
39
+ a|
40
+ *Safe*
41
+
42
+ Disable custom plugins, and ignore symbolic links.
43
+
44
+ a|
45
+ `safe: BOOL`
46
+
47
+ `--safe`
48
+
49
+ a|
50
+ *Exclude*
51
+
52
+ Exclude directories and/or files from the conversion. These exclusions
53
+ are relative to the site's source directory and cannot be outside the
54
+ source directory.
55
+
56
+ |`exclude: [DIR, FILE, ...]`
57
+
58
+ a|
59
+ *Include*
60
+
61
+ Force inclusion of directories and/or files in the conversion.
62
+ `.htaccess` is a good example since dotfiles are excluded by default.
63
+
64
+ |`include: [DIR, FILE, ...]`
65
+
66
+ a|
67
+ *Keep files*
68
+
69
+ When clobbering the site destination, keep the selected files. Useful
70
+ for files that are not generated by jekyll; e.g. files or assets that
71
+ are generated by your build tool. The paths are relative to the
72
+ `destination`.
73
+
74
+ |`keep_files: [DIR, FILE, ...]`
75
+
76
+ a|
77
+ *Time Zone*
78
+
79
+ Set the time zone for site generation. This sets the `TZ` environment
80
+ variable, which Ruby uses to handle time and date creation and
81
+ manipulation. Any entry from the
82
+ https://en.wikipedia.org/wiki/Tz_database[IANA Time Zone Database] is
83
+ valid, e.g. `America/New_York`. A list of all available values can be
84
+ found
85
+ https://en.wikipedia.org/wiki/List_of_tz_database_time_zones[here]. The
86
+ default is the local time zone, as set by your operating system.
87
+
88
+ |`timezone: TIMEZONE`
89
+
90
+ a|
91
+ *Encoding*
92
+
93
+ Set the encoding of files by name (only available for Ruby 1.9 or
94
+ later). The default value is `utf-8` starting in 2.0.0, and `nil` before
95
+ 2.0.0, which will yield the Ruby default of `ASCII-8BIT`. Available
96
+ encodings can be shown by the command
97
+ `ruby -e 'puts Encoding::list.join("\n")'`.
98
+
99
+ |`encoding: ENCODING`
100
+
101
+ a|
102
+ *Defaults*
103
+
104
+ Set defaults for YAML Front Matter variables.
105
+
106
+ |see below
107
+ |=======================================================================
108
+
109
+
110
+ [WARNING]
111
+ ====
112
+ Destination folders are cleaned on site builds.
113
+
114
+ The contents of `<destination>` are automatically cleaned, by default, when
115
+ the site is built. Files or folders that are not created by your site will
116
+ be removed. Some files could be retained by specifying them within the
117
+ `<keep_files>` configuration directive.
118
+
119
+ Do not use an important location for `<destination>` instead, use it as a
120
+ staging area and copy files from there to your web server.
121
+ ====
122
+
123
+ === Build Command Options
124
+
125
+ [width="100%", cols="6,6", options="header", role="table-responsive mt-3"]
126
+ |=======================================================================
127
+ |Setting |Options and Flags
128
+ a|
129
+ *Regeneration*
130
+
131
+ Enable auto-regeneration of the site when files are modified.
132
+
133
+ |`-w, --[no-]watch`
134
+
135
+ a|
136
+ *Configuration*
137
+
138
+ Specify config files instead of using `_config.yml` automatically.
139
+ Settings in later files override settings in earlier files.
140
+
141
+ |`--config FILE1[,FILE2,...]`
142
+
143
+ a|
144
+ *Drafts*
145
+
146
+ Process and render draft posts.
147
+
148
+ a|
149
+ `show_drafts: BOOL`
150
+
151
+ `--drafts`
152
+
153
+ a|
154
+ *Environment*
155
+
156
+ Use a specific environment value in the build.
157
+
158
+ |`JEKYLL_ENV=production`
159
+
160
+ a|
161
+ *Future*
162
+
163
+ Publish posts or collection documents with a future date.
164
+
165
+ a|
166
+ `future: BOOL`
167
+
168
+ `--future`
169
+
170
+ a|
171
+ *LSI*
172
+
173
+ Produce an index for related posts.
174
+
175
+ a|
176
+ `lsi: BOOL`
177
+
178
+ `--lsi`
179
+
180
+ a|
181
+ *Limit Posts*
182
+
183
+ Limit the number of posts to parse and publish.
184
+
185
+ a|
186
+ `limit_posts: NUM`
187
+
188
+ `--limit_posts NUM`
189
+
190
+ a|
191
+ *Force polling*
192
+
193
+ Force watch to use polling.
194
+
195
+ |`--force_polling`
196
+
197
+ a|
198
+ *Verbose output*
199
+
200
+ Print verbose output.
201
+
202
+ |`-V, --verbose`
203
+
204
+ a|
205
+ *Silence Output*
206
+
207
+ Silence the normal output from Jekyll during a build
208
+
209
+ |`-q, --quiet`
210
+
211
+ a|
212
+ *Incremental build*
213
+
214
+ Enable the experimental incremental build feature. Incremental build
215
+ only re-builds posts and pages that have changed, resulting in
216
+ significant performance improvements for large sites, but may also break
217
+ site generation in certain cases.
218
+
219
+ a|
220
+ `incremental: BOOL`
221
+
222
+ `-I, --incremental`
223
+
224
+ a|
225
+ *Liquid profiler*
226
+
227
+ Generate a Liquid rendering profile to help you identify performance
228
+ bottlenecks.
229
+
230
+ a|
231
+ `profile: BOOL`
232
+
233
+ `--profile`
234
+
235
+ |=======================================================================
236
+
237
+
238
+ === Serve Command Options
239
+
240
+ In addition to the options below, the `serve` sub-command can accept any of
241
+ the options for the `build` sub-command, which are then applied to the site
242
+ build which occurs right before your site is served.
243
+
244
+ [width="100%", cols="6,6", options="header", role="table-responsive mt-3"]
245
+ |======================================================================
246
+ |Setting |Options and Flags
247
+ a|
248
+ *Local Server Port*
249
+
250
+ Listen on the given port.
251
+
252
+ a|
253
+ `port: PORT`
254
+
255
+ `--port PORT`
256
+
257
+ a|
258
+ *Local Server Hostname*
259
+
260
+ Listen at the given hostname.
261
+
262
+ a|
263
+ `host: HOSTNAME`
264
+
265
+ `--host HOSTNAME`
266
+
267
+ a|
268
+ *Base URL*
269
+
270
+ Serve the website from the given base URL
271
+
272
+ a|
273
+ `baseurl: URL`
274
+
275
+ `--baseurl URL`
276
+
277
+ a|
278
+ *Detach*
279
+
280
+ Detach the server from the terminal
281
+
282
+ a|
283
+ `detach: BOOL`
284
+
285
+ `-B, --detach`
286
+
287
+ a|
288
+ *Skips the initial site build.*
289
+
290
+ Skips the initial site build which occurs before the server is started.
291
+
292
+ |`--skip-initial-build`
293
+ a|
294
+ *X.509 (SSL) Private Key*
295
+
296
+ SSL Private Key.
297
+
298
+ |`--ssl-key`
299
+ a|
300
+ *X.509 (SSL) Certificate*
301
+
302
+ SSL Public certificate.
303
+
304
+ |`--ssl-cert`
305
+ |======================================================================
306
+
307
+ [WARNING]
308
+ ====
309
+ Do not use tabs in configuration files.
310
+
311
+ This will either lead to parsing errors, or Jekyll will revert to the
312
+ default settings. Use spaces instead.
313
+ ====
314
+
315
+ === Custom WEBrick Headers
316
+
317
+ The Jekyll `serve` command enables an internal Web server - `WEBrick` - to
318
+ serve your site without the need of an external Webserver (like Apache or Nginx).
319
+ To control the internal server, you can provide custom headers for your site
320
+ by adding them to `_config.yml`
321
+
322
+ [source, yaml]
323
+ --------------
324
+ # File: _config.yml
325
+ webrick:
326
+ headers:
327
+ My-Header: My-Value
328
+ My-Other-Header: My-Other-Value
329
+ --------------
330
+
331
+ NOTE: Jekyll provide by default `Content-Type` and `Cache-Control` response
332
+ headers: one *dynamic* in order to specify the nature of the data being served,
333
+ the other *static* in order to disable caching so that you don't have to fight
334
+ with Chrome's aggressive *caching* when you are in *development mode*.
335
+
336
+ == Jekyll Environment
337
+
338
+ === Folder structure
339
+
340
+ Jekyll is, at its core, a text transformation engine. The concept behind the
341
+ system is this: you give it text written in your favorite markup language, be
342
+ that Markdown, Textile, or just plain HTML, and it churns that through a layout
343
+ or a series of layout files. Throughout that process you can tweak how you want
344
+ the site URLs to look, what data gets displayed in the layout, and more. This
345
+ is all done through editing text files; the static web site is the final
346
+ product.
347
+
348
+ A basic Jekyll site usually looks something like this:
349
+
350
+ [source, sh]
351
+ ----
352
+ .
353
+ ├── _config.yml
354
+ ├── _drafts
355
+ | ├── begin-with-the-crazy-ideas.textile
356
+ | └── on-simplicity-in-technology.markdown
357
+ ├── _includes
358
+ | ├── footer.html
359
+ | └── header.html
360
+ ├── _layouts
361
+ | ├── default.html
362
+ | └── post.html
363
+ ├── _posts
364
+ | ├── 2007-10-29-why-every-programmer-should-play-nethack.textile
365
+ | └── 2009-04-26-barcamp-boston-4-roundup.textile
366
+ ├── _data
367
+ | └── members.yml
368
+ ├── _site
369
+ ├── .jekyll-metadata
370
+ └── index.html
371
+ ----
372
+
373
+ === Dirs and Files
374
+
375
+ An overview of what each of these does:
376
+
377
+ [width="100%", cols="6,6", options="header", role="table-responsive mt-3"]
378
+ |=======================================================================
379
+ |File / Directory |Description
380
+ |`_config.yml`
381
+ |Stores configuration data. Many
382
+ of these options can be specified from the command line executable but
383
+ it's easier to specify them here so you don't have to remember them.
384
+
385
+ |`_drafts` |Drafts are unpublished posts. The format of these files is
386
+ without a date: `title.MARKUP`. Learn how to work with drafts.
387
+
388
+ |`_includes` |These are the partials that can be mixed and matched by
389
+ your layouts and posts to facilitate reuse. The liquid tag
390
+ `{% include file.ext %}` can be used to include the
391
+ partial in `_includes/file.ext`.
392
+
393
+ |`_layouts` |These are the templates that wrap posts. Layouts are chosen
394
+ on a post-by-post basis in the YAML Front Matter,
395
+ which is described in the next section. The liquid tag
396
+ `{{ content }}` is used to inject content into the
397
+ web page.
398
+
399
+ |`_posts` |Your dynamic content, so to speak. The naming convention of
400
+ these files is important, and must follow the format:
401
+ `YEAR-MONTH-DAY-title.MARKUP`. The permalinks can
402
+ be customized for each post, but the date and markup language are
403
+ determined solely by the file name.
404
+
405
+ |`_data` |Well-formatted site data should be placed here. The Jekyll
406
+ engine will autoload all YAML files in this directory (using either the
407
+ `.yml`, `.yaml`, `.json` or `.csv` formats and extensions) and they will
408
+ be accessible via `site.data`. If there's a file `members.yml` under the
409
+ directory, then you can access contents of the file through
410
+ `site.data.members`.
411
+
412
+ |`_site` |This is where the generated site will be placed (by default)
413
+ once Jekyll is done transforming it. It's probably a good idea to add
414
+ this to your `.gitignore` file.
415
+
416
+ |`.jekyll-metadata` |This helps Jekyll keep track of which files have
417
+ not been modified since the site was last built, and which files will
418
+ need to be regenerated on the next build. This file will not be included
419
+ in the generated site. It's probably a good idea to add this to your
420
+ `.gitignore` file.
421
+
422
+ |`index.html` and other HTML, Markdown, Textile files |Provided that the
423
+ file has a YAML Front Matter section, it will be
424
+ transformed by Jekyll. The same will happen for any `.html`,
425
+ `.markdown`, `.md`, or `.textile` file in your site's root directory or
426
+ directories not listed above.
427
+
428
+ |Other Files/Folders |Every other directory and file except for those
429
+ listed above such as `css` and `images` folders, `favicon.ico` files,
430
+ and so forthÔÇöwill be copied verbatim to the generated site. There are
431
+ plenty of sites already using Jekyll if you're curious
432
+ to see how they're laid out.
433
+ |=======================================================================
434
+
435
+ === Set a Jekyll environment
436
+ You can specify a Jekyll environment at build time. In the build (or serve)
437
+ arguments, you can specify a Jekyll environment and value. The build will then
438
+ apply this value in any conditional statements in your content.
439
+
440
+ For example, suppose you set this conditional statement in your code:
441
+
442
+ [source, liquid]
443
+ --------------
444
+ {% raw %}
445
+ {% if jekyll.environment === "production" %}
446
+ {% include disqus.html %}
447
+ {% endif %}
448
+ {% endraw %}
449
+ --------------
450
+
451
+ When you build your Jekyll site, the content inside the `if` statement won't
452
+ be run unless you also specify a `production` environment in the build
453
+ command, like this:
454
+
455
+ [source, sh]
456
+ --------------
457
+ JEKYLL_ENV=production jekyll build
458
+ --------------
459
+
460
+ Specifying an environment value allows you to make certain content available
461
+ only within specific environments.
462
+
463
+ The default value for `JEKYLL_ENV` is `development`. Therefore if you
464
+ omit `JEKYLL_ENV` from the build arguments, the default value will be
465
+ `JEKYLL_ENV=development`. Any content inside
466
+
467
+ [source, liquid]
468
+ --------------
469
+ {% if jekyll.environment == "development" %}
470
+ --------------
471
+
472
+ tags will automatically appear in the build.
473
+
474
+ Your environment values can be anything you want (not just `development` or
475
+ `production`). Some elements you might want to hide in development environments
476
+ include Disqus comment forms or Google Analytics. Conversely, you might want
477
+ to expose an "Edit me in GitHub" button in a development environment but not
478
+ include it in production environments.
479
+
480
+ By specifying the option in the build command, you avoid having to change
481
+ values in your configuration files when moving from one environment to another.
482
+
483
+ === Front Matter defaults
484
+
485
+ Using YAML Front Matter is one way that you can specify configuration in the
486
+ pages and posts for your site. Setting things like a default layout, or
487
+ customizing the title, or specifying a more precise date/time for the post
488
+ can all be added to your page or post front matter.
489
+
490
+ Often times, you will find that you are repeating a lot of configuration
491
+ options. Setting the same layout in each file, adding the same
492
+ category - or categories - to a post, etc. You can even add custom variables
493
+ like author names, which might be the same for the majority of posts on
494
+ your blog.
495
+
496
+ Instead of repeating this configuration each time you create a new post or
497
+ page, Jekyll provides a way to set these defaults in the site configuration.
498
+ To do this, you can specify site-wide defaults using the `defaults` key in
499
+ the `_config.yml` file in your project's root directory.
500
+
501
+ The `defaults` key holds an array of scope/values pairs that define what
502
+ defaults should be set for a particular file path, and optionally, a file
503
+ type in that path.
504
+
505
+ Let's say that you want to add a default layout to all pages and posts in
506
+ your site. You would add this to your `_config.yml` file:
507
+
508
+ [source, yaml]
509
+ --------------
510
+ defaults:
511
+ - scope:
512
+ path: "" # an empty string here means all files in the project
513
+ values:
514
+ layout: "default"
515
+ --------------
516
+
517
+ [NOTE]
518
+ ====
519
+ Please stop and rerun `jekyll serve` command.
520
+
521
+ The `_config.yml` master configuration file contains global
522
+ configurations and variable definitions that are read once at execution time.
523
+ Changes made to `_config.yml` during automatic regeneration
524
+ are not loaded until the next execution.
525
+
526
+ Note `Data Files` are included and reloaded during automatic regeneration.
527
+
528
+ ====
529
+
530
+ Here, we are scoping the `values` to any file that exists in the path `scope`.
531
+ Since the path is set as an empty string, it will apply to **all files** in
532
+ your project. You probably don't want to set a layout on every file in your
533
+ project - like css files, for example - so you can also specify a `type` value
534
+ under the `scope` key.
535
+
536
+ [source, yaml]
537
+ --------------
538
+ defaults:
539
+ - scope:
540
+ path: "" # an empty string here means all files in the project
541
+ type: "posts" # previously `post` in Jekyll 2.2.
542
+ values:
543
+ layout: "default"
544
+ --------------
545
+
546
+ Now, this will only set the layout for files where the type is `posts`.
547
+ The different types that are available to you are `pages`, `posts`, `drafts`
548
+ or any collection in your site. While `type` is optional, you must specify a
549
+ value for `path` when creating a `scope|values` pair.
550
+
551
+ As mentioned earlier, you can set multiple scope/values pairs for `defaults`.
552
+
553
+ [source, yaml]
554
+ --------------
555
+ defaults:
556
+ - scope:
557
+ path: ""
558
+ type: "posts"
559
+ values:
560
+ layout: "my-site"
561
+
562
+ - scope:
563
+ path: "projects"
564
+ type: "pages" # previously `page` in Jekyll 2.2.
565
+ values:
566
+ layout: "project" # overrides previous default layout
567
+ author: "Mr. Hyde"
568
+ --------------
569
+
570
+ With these defaults, all posts would use the `my-site` layout. Any html files
571
+ that exist in the `projects/` folder will use the `project` layout, if it
572
+ exists. Those files will also have the `page.author` liquid variable
573
+ set to `Mr. Hyde`.
574
+
575
+ [source, yaml]
576
+ --------------
577
+ collections:
578
+ - my_collection:
579
+ output: true
580
+
581
+ defaults:
582
+ - scope:
583
+ path: ""
584
+ type: "my_collection" # a collection in your site, in plural form
585
+ values:
586
+ layout: "default"
587
+ --------------
588
+
589
+ In this example, the `layout` is set to `default` inside the collection with
590
+ the name `my_collection`.
591
+
592
+ ==== Precedence
593
+
594
+ Jekyll will apply all of the configuration settings you specify in the
595
+ `defaults` section of your `_config.yml` file. However, you can choose
596
+ to override settings from other scope/values pair by specifying a more specific
597
+ path for the scope.
598
+
599
+ You can see that in the second to last example above. First, we set the default
600
+ layout to `my-site`. Then, using a more specific path, we set the default
601
+ layout for files in the `projects/` path to `project`. This can be done with
602
+ any value that you would set in the page or post front matter.
603
+
604
+ Finally, if you set defaults in the site configuration by adding a `defaults`
605
+ section to your `_config.yml` file, you can override those settings in a
606
+ post or page file. All you need to do is specify the settings in the post or
607
+ page front matter.
608
+
609
+ For example:
610
+
611
+ [source, yaml]
612
+ --------------
613
+ # In _config.yml
614
+ ...
615
+ defaults:
616
+ - scope:
617
+ path: "projects"
618
+ type: "pages"
619
+ values:
620
+ layout: "project"
621
+ author: "Mr. Hyde"
622
+ category: "project"
623
+ ...
624
+ --------------
625
+
626
+ [source, yaml]
627
+ --------------
628
+ # In projects/foo_project.md
629
+ ---
630
+ author: "John Smith"
631
+ layout: "foobar"
632
+ ---
633
+ The post text goes here...
634
+ --------------
635
+
636
+ The `projects/foo_project.md` would have the `layout` set to `foobar`
637
+ instead of `project` and the `author` set to `John Smith` instead of `Mr. Hyde`
638
+ when the site is built.
639
+
640
+ === Default Configuration
641
+
642
+ Jekyll runs with the following configuration options by default. Alternative
643
+ settings for these options can be explicitly specified in the configuration
644
+ file or on the command-line.
645
+
646
+ [WARNING]
647
+ ====
648
+ There are two unsupported kramdown options.
649
+
650
+ Please note that both `remove_block_html_tags` and
651
+ `remove_span_html_tags` are currently *unsupported*
652
+ in Jekyll due to the fact that they are not included within the kramdown
653
+ HTML converter.
654
+ ====
655
+
656
+ [source, yaml]
657
+ --------------
658
+ # Where things are
659
+ #
660
+ source: .
661
+ destination: ./_site
662
+ plugins_dir: _plugins
663
+ layouts_dir: _layouts
664
+ data_dir: _data
665
+ includes_dir: _includes
666
+ collections:
667
+ posts:
668
+ output: true
669
+
670
+ # Handling Reading
671
+ #
672
+ safe: false
673
+ include: [".htaccess"]
674
+ exclude: []
675
+ keep_files: [".git", ".svn"]
676
+ encoding: "utf-8"
677
+ markdown_ext: "markdown,mkdown,mkdn,mkd,md"
678
+
679
+ # Filtering Content
680
+ #
681
+ show_drafts: null
682
+ limit_posts: 0
683
+ future: false
684
+ unpublished: false
685
+
686
+ # Plugins
687
+ #
688
+ whitelist: []
689
+ gems: []
690
+
691
+ # Conversion
692
+ #
693
+ markdown: kramdown
694
+ highlighter: rouge
695
+ lsi: false
696
+ excerpt_separator: "\n\n"
697
+ incremental: false
698
+
699
+ # Serving
700
+ #
701
+ detach: false
702
+ port: 4000
703
+ host: 127.0.0.1
704
+ baseurl: "" # does not include hostname
705
+ show_dir_listing: false
706
+
707
+ # Outputting
708
+ #
709
+ permalink: date
710
+ paginate_path: /page:num
711
+ timezone: null
712
+
713
+ quiet: false
714
+ verbose: false
715
+ defaults: []
716
+
717
+ liquid:
718
+ error_mode: warn
719
+
720
+ # Markdown Processors
721
+ #
722
+ rdiscount:
723
+ extensions: []
724
+
725
+ redcarpet:
726
+ extensions: []
727
+
728
+ kramdown:
729
+ auto_ids: true
730
+ footnote_nr: 1
731
+ entity_output: as_char
732
+ toc_levels: 1..6
733
+ smart_quotes: lsquo,rsquo,ldquo,rdquo
734
+ input: GFM
735
+ hard_wrap: false
736
+ footnote_nr: 1
737
+ --------------
738
+
739
+ === Liquid Options
740
+
741
+ Liquid's response to errors can be configured by setting `error_mode`.
742
+ The options are
743
+
744
+ - `lax` --- Ignore all errors.
745
+ - `warn` --- Output a warning on the console for each error.
746
+ - `strict` --- Output an error message and stop the build.
747
+
748
+ === Markdown Options
749
+
750
+ The various Markdown renderers supported by Jekyll sometimes have extra options
751
+ available.
752
+
753
+ ==== Redcarpet
754
+
755
+ Redcarpet can be configured by providing an `extensions` sub-setting, whose
756
+ value should be an array of strings. Each string should be the name of one of
757
+ the `Redcarpet::Markdown` class's extensions; if present in the array, it will
758
+ set the corresponding extension to `true`.
759
+
760
+ Jekyll handles two special Redcarpet extensions:
761
+
762
+ - `no_fenced_code_blocks` --- By default, Jekyll sets the
763
+ `fenced_code_blocks` extension (for delimiting code blocks with
764
+ triple tildes or triple backticks) to `true`, probably because GitHub's eager
765
+ adoption of them is starting to make them inescapable. Redcarpet's normal
766
+ `fenced_code_blocks` extension is inert when used with Jekyll;
767
+ instead, you can use this inverted version of the extension for disabling
768
+ fenced code.
769
+
770
+ Note that you can also specify a language for highlighting after the first
771
+ delimiter:
772
+
773
+ [source, ruby]
774
+ --------------
775
+ # ...ruby code
776
+ --------------
777
+
778
+ With both fenced code blocks and highlighter enabled, this will statically
779
+ highlight the code; without any syntax highlighter, it will add a
780
+ `class="LANGUAGE"` attribute to the `<code>` element, which can be used as a
781
+ hint by various JavaScript code highlighting libraries.
782
+
783
+ - `smart` --- This pseudo-extension turns on SmartyPants, which converts
784
+ straight quotes to curly quotes and runs of hyphens to em (`---`) and en (`--`) dashes.
785
+
786
+ All other extensions retain their usual names from Redcarpet, and no renderer
787
+ options aside from `smart` can be specified in Jekyll. [A list of available
788
+ extensions can be found in the Redcarpet README file.][redcarpet_extensions]
789
+ Make sure you're looking at the README for the right version of
790
+ Redcarpet: Jekyll currently uses v3.2.x. The most commonly used
791
+ extensions are:
792
+
793
+ - `tables`
794
+ - `no_intra_emphasis`
795
+ - `autolink`
796
+
797
+ [redcarpet_extensions]: https://github.com/vmg/redcarpet/blob/v3.2.2/README.markdown#and-its-like-really-simple-to-use
798
+
799
+ ### Custom Markdown Processors
800
+
801
+ If you're interested in creating a custom markdown processor, you're in luck! Create a new class in the `Jekyll::Converters::Markdown` namespace:
802
+
803
+ [source, ruby]
804
+ --------------
805
+ class Jekyll::Converters::Markdown::MyCustomProcessor
806
+ def initialize(config)
807
+ require 'funky_markdown'
808
+ @config = config
809
+ rescue LoadError
810
+ STDERR.puts 'You are missing a library required for Markdown. Please run:'
811
+ STDERR.puts ' $ [sudo] gem install funky_markdown'
812
+ raise FatalException.new("Missing dependency: funky_markdown")
813
+ end
814
+
815
+ def convert(content)
816
+ ::FunkyMarkdown.new(content).convert
817
+ end
818
+ end
819
+ --------------
820
+
821
+ Once you've created your class and have it properly set up either as a plugin
822
+ in the `_plugins` folder or as a gem, specify it in your `_config.yml`:
823
+
824
+ [source, yaml]
825
+ --------------
826
+ markdown: MyCustomProcessor
827
+ --------------
828
+
829
+ === Incremental Regeneration
830
+
831
+ Incremental regeneration helps shorten build times by only generating documents
832
+ and pages that were updated since the previous build. It does this by keeping
833
+ track of both file modification times and inter-document dependencies in the
834
+ `.jekyll-metadata` file.
835
+
836
+ [WARNING]
837
+ ====
838
+ Incremental regeneration is still an experimental feature.
839
+
840
+ While incremental regeneration will work for the most common cases, it will
841
+ not work correctly in every scenario. Please be extremely cautious when
842
+ using the feature, and report any problems not listed below by
843
+ {uri-jekyll-submit-issue}[opening an issue on GitHub].
844
+ ====
845
+
846
+ Under the current implementation, incremental regeneration will only generate a
847
+ document or page if either it, or one of its dependencies, is modified.
848
+ Currently, the only types of dependencies tracked are includes (using the
849
+ `{% include %}` tag) and layouts. This means that plain references to other
850
+ documents (for example, the common case of iterating over `site.posts` in a
851
+ post listings page) will not be detected as a dependency.
852
+
853
+ To remedy some of these shortfalls, putting `regenerate: true` in the
854
+ front-matter of a document will force Jekyll to regenerate it regardless of
855
+ whether it has been modified. Note that this will generate the specified
856
+ document only; references to other documents' contents will not work since
857
+ they won't be re-rendered.
858
+
859
+ Incremental regeneration can be enabled via the `--incremental` flag (`-i` for
860
+ short) from the command-line or by setting `incremental: true` in your
861
+ configuration file.