mirror of
https://github.com/jekyll/jekyll.git
synced 2026-04-28 03:01:03 -04:00
Compare commits
549 Commits
4.1-stable
...
liquid5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35848b9c06 | ||
|
|
e2850341d2 | ||
|
|
7a3dd9a0e3 | ||
|
|
6a32be65e9 | ||
|
|
03ac1d727b | ||
|
|
f8540633c3 | ||
|
|
0d0fd3f41b | ||
|
|
23a2451459 | ||
|
|
d1ecbcbff4 | ||
|
|
e052d2090c | ||
|
|
354110d393 | ||
|
|
9c7972dc38 | ||
|
|
19868d5602 | ||
|
|
1d5bae583b | ||
|
|
e7cc390d2b | ||
|
|
6f31b362eb | ||
|
|
e7ce73d593 | ||
|
|
66e337984e | ||
|
|
d4e10d5954 | ||
|
|
2a0272cc38 | ||
|
|
3c46d844cf | ||
|
|
776748e13f | ||
|
|
310459370a | ||
|
|
65158c2368 | ||
|
|
e695c1e24b | ||
|
|
c4387f69fc | ||
|
|
75df28c27a | ||
|
|
9d86974e1f | ||
|
|
79869e7225 | ||
|
|
b98db02f36 | ||
|
|
4194f62dd7 | ||
|
|
1096648473 | ||
|
|
dd0c5fc3bc | ||
|
|
94dc98cb6b | ||
|
|
e6d3d90b52 | ||
|
|
6984a64932 | ||
|
|
62ef1580ec | ||
|
|
88cbd7a783 | ||
|
|
de7da5f6c3 | ||
|
|
f48d500586 | ||
|
|
62d9c8c30c | ||
|
|
06abe7fd0c | ||
|
|
380c3fe815 | ||
|
|
b7056373af | ||
|
|
36cbca0ece | ||
|
|
0faa2a4c12 | ||
|
|
3d5bed24e2 | ||
|
|
493ed1571e | ||
|
|
e27088555d | ||
|
|
034d3e9f4b | ||
|
|
86907653ca | ||
|
|
88044a2ece | ||
|
|
d46bef774a | ||
|
|
c644d9a568 | ||
|
|
92c6dc6578 | ||
|
|
285f79306b | ||
|
|
a3290166dc | ||
|
|
5dcfc22cba | ||
|
|
e133183f6f | ||
|
|
1306cd7be9 | ||
|
|
07cd645ce6 | ||
|
|
4ec6902cdb | ||
|
|
9fac4c6ec7 | ||
|
|
8578d735bc | ||
|
|
e3cbe584f2 | ||
|
|
d4a4d951c5 | ||
|
|
7b7a286b4a | ||
|
|
ba07bb3648 | ||
|
|
b0a68d56fc | ||
|
|
1008f1b4e3 | ||
|
|
77282e45fd | ||
|
|
df765950ba | ||
|
|
0107747606 | ||
|
|
c34fa6181e | ||
|
|
a7a7b7a815 | ||
|
|
d0eb07ba29 | ||
|
|
07e510f964 | ||
|
|
0967c71097 | ||
|
|
5b0ea4b220 | ||
|
|
66b399c6d3 | ||
|
|
659683dbb2 | ||
|
|
1ac5386820 | ||
|
|
e6928dab2e | ||
|
|
30f795f5a7 | ||
|
|
5aeb2bfe4e | ||
|
|
2abf1787ca | ||
|
|
23af360ef0 | ||
|
|
23284eb6db | ||
|
|
fafcc2ce4e | ||
|
|
9c9cf3e82b | ||
|
|
956701f96c | ||
|
|
7fdae26c25 | ||
|
|
9fa340af65 | ||
|
|
1434644dcc | ||
|
|
a4a7e70fa1 | ||
|
|
b8947f95b3 | ||
|
|
a8ccdd6d2f | ||
|
|
9a3122020e | ||
|
|
bb49d93713 | ||
|
|
f51ccbfad3 | ||
|
|
44926fd14d | ||
|
|
3a688fe55a | ||
|
|
d81cc40c9f | ||
|
|
369c345107 | ||
|
|
c90d083ef5 | ||
|
|
db3f034f9e | ||
|
|
10a73596d9 | ||
|
|
7c619a7e2f | ||
|
|
47b0abe1f0 | ||
|
|
75b27ec328 | ||
|
|
868d9af3cb | ||
|
|
26a949df85 | ||
|
|
e1838db156 | ||
|
|
8af22d0852 | ||
|
|
d8b38f78b6 | ||
|
|
45fdf35cc3 | ||
|
|
ec8212ad74 | ||
|
|
cfcc0c524e | ||
|
|
8d324d9241 | ||
|
|
32e97a7881 | ||
|
|
5687bf97d8 | ||
|
|
0db36cec4b | ||
|
|
5cc308825e | ||
|
|
1968e998a5 | ||
|
|
a05b0d94cd | ||
|
|
86d6b04a97 | ||
|
|
70a6702a6a | ||
|
|
925442d91f | ||
|
|
b27fb044e7 | ||
|
|
0ada71db18 | ||
|
|
891a78685a | ||
|
|
f0314eec56 | ||
|
|
00289460df | ||
|
|
91c0e46a7b | ||
|
|
9b2126a365 | ||
|
|
7fbd29496e | ||
|
|
fe563b15bd | ||
|
|
60cb817c16 | ||
|
|
faef38b5db | ||
|
|
c238346ca2 | ||
|
|
f831286557 | ||
|
|
1aea1580c1 | ||
|
|
e482574b84 | ||
|
|
84c8252f11 | ||
|
|
0b12fd26ae | ||
|
|
eca450454f | ||
|
|
493b800edb | ||
|
|
2568aea6ea | ||
|
|
dc5e39fad9 | ||
|
|
ddbc8263de | ||
|
|
ca2f106c8f | ||
|
|
aa9a4164d0 | ||
|
|
55b6972ea7 | ||
|
|
9c7015138b | ||
|
|
9587a73c53 | ||
|
|
94fcfdd787 | ||
|
|
fcd56a5680 | ||
|
|
9bb98edb29 | ||
|
|
0ce9a7c179 | ||
|
|
3f46f02108 | ||
|
|
beca094841 | ||
|
|
0eb9239151 | ||
|
|
5a441c24e2 | ||
|
|
b31f933cd1 | ||
|
|
a0ed9550cd | ||
|
|
37612632c5 | ||
|
|
8926ae1aac | ||
|
|
8a6dd9e494 | ||
|
|
915248ff18 | ||
|
|
bcaf878b65 | ||
|
|
ea535a9ab7 | ||
|
|
0dee66260f | ||
|
|
76517175e7 | ||
|
|
b5e910acfb | ||
|
|
6ff7d680e0 | ||
|
|
42dacc1091 | ||
|
|
e5dd889750 | ||
|
|
889fe4130b | ||
|
|
7605b0a474 | ||
|
|
e724b587e3 | ||
|
|
1ffda285d6 | ||
|
|
f267dafc0c | ||
|
|
49a00ebbec | ||
|
|
30b397c046 | ||
|
|
93ef9389ba | ||
|
|
6a6d735db2 | ||
|
|
7e350ac031 | ||
|
|
0274943bcd | ||
|
|
92633c6996 | ||
|
|
02b12e5dfc | ||
|
|
bdad4f2b09 | ||
|
|
f027b6e547 | ||
|
|
e23b85f837 | ||
|
|
8a0f7f2908 | ||
|
|
56ef270e27 | ||
|
|
43d0ef3fa0 | ||
|
|
fa0e0eba3e | ||
|
|
9ed85a028a | ||
|
|
2a4d9dfedf | ||
|
|
3259064723 | ||
|
|
f32b8bedff | ||
|
|
579d0d9ffc | ||
|
|
e91e9a3576 | ||
|
|
d5a46fcd31 | ||
|
|
e2b1bc678e | ||
|
|
5d35cf217b | ||
|
|
827bfcff58 | ||
|
|
b9b4d85fb1 | ||
|
|
d85c89e8b4 | ||
|
|
813da60a53 | ||
|
|
f9e14a5704 | ||
|
|
2e65d6d3a9 | ||
|
|
60e01d3671 | ||
|
|
15ad8f4bdd | ||
|
|
4fbbefeb7e | ||
|
|
3fea30c862 | ||
|
|
da68570406 | ||
|
|
8940ad65b1 | ||
|
|
47a17e2cab | ||
|
|
c523f041fc | ||
|
|
62ba3c03b7 | ||
|
|
e53fd19bc3 | ||
|
|
af5bb813aa | ||
|
|
73637a41b1 | ||
|
|
6855200ebd | ||
|
|
eb88a791e1 | ||
|
|
c7ccec20c4 | ||
|
|
63ce7d66bf | ||
|
|
f5a137d3c6 | ||
|
|
91c0f2a08d | ||
|
|
dfc65090ea | ||
|
|
b828ffd559 | ||
|
|
2aa33c8043 | ||
|
|
fdbb03b258 | ||
|
|
5d01099e22 | ||
|
|
6c170f11af | ||
|
|
734cf2324e | ||
|
|
5e7172c9ab | ||
|
|
d25db24065 | ||
|
|
17beafeca7 | ||
|
|
69e9705512 | ||
|
|
df24131349 | ||
|
|
c9c9dc7dac | ||
|
|
a988f9da14 | ||
|
|
32d9320d34 | ||
|
|
f1bfbf7d19 | ||
|
|
fe64d9841b | ||
|
|
5a64aefcea | ||
|
|
d460fae31a | ||
|
|
e0e856f216 | ||
|
|
872132e725 | ||
|
|
d46897fabf | ||
|
|
4f0dbdb9e8 | ||
|
|
6dcd470f3d | ||
|
|
2313c4d748 | ||
|
|
cbf656877e | ||
|
|
50a47e34c2 | ||
|
|
c4055cd3d6 | ||
|
|
a80b131819 | ||
|
|
13152e1247 | ||
|
|
e9d7934156 | ||
|
|
8c8326e9ab | ||
|
|
1e34cbaee6 | ||
|
|
5c797ba136 | ||
|
|
31e152b0d0 | ||
|
|
03712b0188 | ||
|
|
d78fc653a6 | ||
|
|
5e141b1e5e | ||
|
|
e4031b21c9 | ||
|
|
ed952e1ca0 | ||
|
|
319cc95254 | ||
|
|
fc76919c69 | ||
|
|
75a895c95d | ||
|
|
92e50227bd | ||
|
|
17a9efa376 | ||
|
|
d1173c9d06 | ||
|
|
deb1a712b4 | ||
|
|
52fd9451b6 | ||
|
|
ca03e7ab8f | ||
|
|
871a05a9a4 | ||
|
|
98d06862ee | ||
|
|
1e2d72a574 | ||
|
|
0d7665c517 | ||
|
|
3ca9d6e891 | ||
|
|
c571b3bd5a | ||
|
|
01825f51db | ||
|
|
c70437e2de | ||
|
|
84deb286ed | ||
|
|
d268e356f8 | ||
|
|
46cb37f479 | ||
|
|
716fc3627c | ||
|
|
91aed9ff8b | ||
|
|
c4d493072d | ||
|
|
f4a7eee57a | ||
|
|
2f1ba8e7be | ||
|
|
9a6d3ea51e | ||
|
|
c80ccbebf7 | ||
|
|
686165af12 | ||
|
|
371298f69b | ||
|
|
df09c414d8 | ||
|
|
573b431abb | ||
|
|
68497a4d4b | ||
|
|
6132653d5a | ||
|
|
9084f9f752 | ||
|
|
1ebde7c4cb | ||
|
|
568f4c5b76 | ||
|
|
97db005336 | ||
|
|
74c3055952 | ||
|
|
58368cdacc | ||
|
|
d8d1feec71 | ||
|
|
8559fbfbe8 | ||
|
|
d560d53266 | ||
|
|
3e3d9bce64 | ||
|
|
a7e1ec901b | ||
|
|
8a01e6aed9 | ||
|
|
37df92dd29 | ||
|
|
430167b9b9 | ||
|
|
ed7a4857a5 | ||
|
|
6f8ca8c764 | ||
|
|
68f117f5b3 | ||
|
|
8ae4bf3f4a | ||
|
|
10943d1f3a | ||
|
|
4d31a8c51b | ||
|
|
e210e337bc | ||
|
|
6dd5bf21b9 | ||
|
|
ec3c0115c7 | ||
|
|
91a3dd9e6f | ||
|
|
9fbb7b57c9 | ||
|
|
eae71e6235 | ||
|
|
661f0fa1b1 | ||
|
|
fadbe9eba4 | ||
|
|
83a2b30b76 | ||
|
|
26086409bf | ||
|
|
d3299a8e02 | ||
|
|
054d9356b9 | ||
|
|
9de60bbf48 | ||
|
|
c12a04dbc1 | ||
|
|
11ff8aa0dd | ||
|
|
db9ca22c24 | ||
|
|
ddae19bbb4 | ||
|
|
ce441d32ec | ||
|
|
bcbc451a26 | ||
|
|
920c6f4ddc | ||
|
|
56d59a1782 | ||
|
|
5054e57fa5 | ||
|
|
0dedc09ab3 | ||
|
|
9b96cdfa7d | ||
|
|
accce8656b | ||
|
|
d3e3225fc1 | ||
|
|
80fce9fcc3 | ||
|
|
bf18b27e2a | ||
|
|
02d25d1cf2 | ||
|
|
3de3e7be8e | ||
|
|
137de414c1 | ||
|
|
1099f73d2d | ||
|
|
95a7b20787 | ||
|
|
a6bbcb7fb6 | ||
|
|
e06641f423 | ||
|
|
4bda8cefb8 | ||
|
|
5ec7a8e289 | ||
|
|
2c18ddcd80 | ||
|
|
ebac932f10 | ||
|
|
25ccfd5b49 | ||
|
|
bd063ae0f0 | ||
|
|
1ae2a1dd04 | ||
|
|
8948277363 | ||
|
|
7c56e397c9 | ||
|
|
20abb8f62b | ||
|
|
e4db593814 | ||
|
|
5dc43a88de | ||
|
|
e0221ed3a8 | ||
|
|
34a78e1ea2 | ||
|
|
6d30bac845 | ||
|
|
9f8ac4eb7a | ||
|
|
bcff13a16a | ||
|
|
01d0b78abb | ||
|
|
335429b10c | ||
|
|
e739c777fc | ||
|
|
59bafa802b | ||
|
|
56e15c5ace | ||
|
|
e59e998b42 | ||
|
|
c9b84e2b35 | ||
|
|
ecbfa58d65 | ||
|
|
f0e342d390 | ||
|
|
11020f80fa | ||
|
|
d26970cf25 | ||
|
|
b17cb5fe2a | ||
|
|
f7292ec9cc | ||
|
|
166796c448 | ||
|
|
7cb10df0b8 | ||
|
|
7d8a839a21 | ||
|
|
b71a26d11d | ||
|
|
711986d19f | ||
|
|
c7c7be9b3a | ||
|
|
98b7a4626a | ||
|
|
16f8370ccd | ||
|
|
fe898af92f | ||
|
|
adc0a2e182 | ||
|
|
2518dd16ff | ||
|
|
8b7847c8e6 | ||
|
|
993960ba8c | ||
|
|
3f4a0da4d5 | ||
|
|
6326b1f9d4 | ||
|
|
30ac3e07ba | ||
|
|
0ee9331892 | ||
|
|
fd8a7e7e3b | ||
|
|
51b976ed05 | ||
|
|
715fe0c572 | ||
|
|
53f175516b | ||
|
|
c5d4bbd434 | ||
|
|
eb4d91d5e5 | ||
|
|
f8c72089dd | ||
|
|
609fa612be | ||
|
|
a401f0387e | ||
|
|
07e1eb1f27 | ||
|
|
49c11725b3 | ||
|
|
c066999fa0 | ||
|
|
94930c5a58 | ||
|
|
7e0f907c64 | ||
|
|
3fd7449fa1 | ||
|
|
0d337c8a93 | ||
|
|
bd04997fee | ||
|
|
c9ab616ace | ||
|
|
f2b463bb85 | ||
|
|
3fb307dc25 | ||
|
|
51bb40913b | ||
|
|
959fc18db5 | ||
|
|
b456a69fa2 | ||
|
|
ae2ec98262 | ||
|
|
d1093e0160 | ||
|
|
1fbc4c28ea | ||
|
|
23f59f4153 | ||
|
|
e9b62b89a4 | ||
|
|
5924eb19f6 | ||
|
|
ae7115638a | ||
|
|
34add02e8b | ||
|
|
abdbb58d8a | ||
|
|
7188eac40f | ||
|
|
6847a6cfcb | ||
|
|
85508ccbf3 | ||
|
|
a0d7900bbe | ||
|
|
e824f6b9cc | ||
|
|
5aaa69da3e | ||
|
|
a88e5ef2b1 | ||
|
|
0de0f7ec35 | ||
|
|
910782e349 | ||
|
|
bed94b8ee7 | ||
|
|
822bb57d41 | ||
|
|
ae6911d38a | ||
|
|
eac6eb25b8 | ||
|
|
badc9c2d30 | ||
|
|
bc9895aa9b | ||
|
|
4299095d21 | ||
|
|
b561413a81 | ||
|
|
37a250bd8d | ||
|
|
cac8d6ca5f | ||
|
|
0edc075818 | ||
|
|
0a2315d3af | ||
|
|
4f81011442 | ||
|
|
2afa51b9e1 | ||
|
|
d3126f57fd | ||
|
|
9dc60e4088 | ||
|
|
6a444634db | ||
|
|
f26d70b53c | ||
|
|
190cffe875 | ||
|
|
b5201c50ff | ||
|
|
a4f5b850af | ||
|
|
9a7955d9b3 | ||
|
|
56ed7bed5d | ||
|
|
24a509f68b | ||
|
|
180673b5a5 | ||
|
|
95f45a0a04 | ||
|
|
ef2736d9a6 | ||
|
|
a39509678e | ||
|
|
f9aa4b921e | ||
|
|
113aa48ca6 | ||
|
|
319c0d214e | ||
|
|
6256ae0719 | ||
|
|
b728eda026 | ||
|
|
975c091d14 | ||
|
|
df7589ae18 | ||
|
|
943a6fdb87 | ||
|
|
d90d1f2494 | ||
|
|
581fcaddab | ||
|
|
e2159f72e3 | ||
|
|
716536b551 | ||
|
|
1a03aafb81 | ||
|
|
f11fc5c1d1 | ||
|
|
1ab4dffe3c | ||
|
|
261fb28b11 | ||
|
|
43a8a4666d | ||
|
|
f5826eed3c | ||
|
|
119c490ad2 | ||
|
|
a5b6602ffd | ||
|
|
6c640012a2 | ||
|
|
bdc67c4474 | ||
|
|
bbde471f53 | ||
|
|
8a1073733d | ||
|
|
c94c9aab33 | ||
|
|
2c793fcf77 | ||
|
|
f693faf1b6 | ||
|
|
7e26a8623c | ||
|
|
690183baf5 | ||
|
|
148608256a | ||
|
|
d596ceb5c2 | ||
|
|
930c65fb20 | ||
|
|
b3b9fae4bc | ||
|
|
06b969db5d | ||
|
|
baf0274234 | ||
|
|
3ec61e6a68 | ||
|
|
a7b8d27bda | ||
|
|
3ebbb7994f | ||
|
|
3f6e230d53 | ||
|
|
5446e0ed54 | ||
|
|
edbafe8c98 | ||
|
|
52a1db530a | ||
|
|
c250b2abd3 | ||
|
|
8136d490e3 | ||
|
|
5481ba0f22 | ||
|
|
b3de5ab83a | ||
|
|
0975bd7990 | ||
|
|
ba29de02d4 | ||
|
|
c78ecc8d82 | ||
|
|
d89b0974a2 | ||
|
|
35e2f7cc3e | ||
|
|
426e050b32 | ||
|
|
a7e74122f3 | ||
|
|
cddaa4de6f | ||
|
|
e874ba3044 | ||
|
|
df75b3babf | ||
|
|
6a8b9fc35d | ||
|
|
f4b7db18a5 | ||
|
|
ee20e844aa | ||
|
|
0bb04d45c7 | ||
|
|
72c7529e27 | ||
|
|
81c13507c8 | ||
|
|
75ae986208 | ||
|
|
03256d7b80 | ||
|
|
1bfb12b210 | ||
|
|
69154c2ef7 | ||
|
|
8590ab0768 | ||
|
|
53c76b8a4b | ||
|
|
8b22c9dcd5 | ||
|
|
4b57a4187e | ||
|
|
c7c645ed6e | ||
|
|
751b8f9c3c | ||
|
|
4046ca2322 | ||
|
|
da61a16ee2 | ||
|
|
99c9b51c3a |
49
.github/CONTRIBUTING.markdown
vendored
49
.github/CONTRIBUTING.markdown
vendored
@@ -10,24 +10,24 @@ See the [support guidelines](https://jekyllrb.com/docs/support/)
|
||||
|
||||
Whether you're a developer, a designer, or just a Jekyll devotee, there are lots of ways to contribute. Here's a few ideas:
|
||||
|
||||
* [Install Jekyll on your computer](https://jekyllrb.com/docs/installation/) and kick the tires. Does it work? Does it do what you'd expect? If not, [open an issue](https://github.com/jekyll/jekyll/issues/new) and let us know.
|
||||
* Comment on some of the project's [open issues](https://github.com/jekyll/jekyll/issues). Have you experienced the same problem? Know a work around? Do you have a suggestion for how the feature could be better?
|
||||
* Read through the [documentation](https://jekyllrb.com/docs/home/), and click the "improve this page" button, any time you see something confusing, or have a suggestion for something that could be improved.
|
||||
* Browse through the [Jekyll discussion forum](https://talk.jekyllrb.com/), and lend a hand answering questions. There's a good chance you've already experienced what another user is experiencing.
|
||||
* Find an [open issue](https://github.com/jekyll/jekyll/issues) (especially [those labeled `help-wanted`](https://github.com/jekyll/jekyll/issues?q=is%3Aopen+is%3Aissue+label%3Ahelp-wanted)), and submit a proposed fix. If it's your first pull request, we promise we won't bite, and are glad to answer any questions.
|
||||
* Help evaluate [open pull requests](https://github.com/jekyll/jekyll/pulls), by testing the changes locally and reviewing what's proposed.
|
||||
- [Install Jekyll on your computer](https://jekyllrb.com/docs/installation/) and kick the tires. Does it work? Does it do what you'd expect? If not, [open an issue](https://github.com/jekyll/jekyll/issues/new) and let us know.
|
||||
- Comment on some of the project's [open issues](https://github.com/jekyll/jekyll/issues). Have you experienced the same problem? Know a work around? Do you have a suggestion for how the feature could be better?
|
||||
- Read through the [documentation](https://jekyllrb.com/docs/home/), and click the "improve this page" button, any time you see something confusing, or have a suggestion for something that could be improved.
|
||||
- Browse through the [Jekyll discussion forum](https://talk.jekyllrb.com/), and lend a hand answering questions. There's a good chance you've already experienced what another user is experiencing.
|
||||
- Find an [open issue](https://github.com/jekyll/jekyll/issues) (especially [those labeled `help-wanted`](https://github.com/jekyll/jekyll/issues?q=is%3Aopen+is%3Aissue+label%3Ahelp-wanted)), and submit a proposed fix. If it's your first pull request, we promise we won't bite, and are glad to answer any questions.
|
||||
- Help evaluate [open pull requests](https://github.com/jekyll/jekyll/pulls), by testing the changes locally and reviewing what's proposed.
|
||||
|
||||
## Submitting a pull request
|
||||
|
||||
### Pull requests generally
|
||||
|
||||
* The smaller the proposed change, the better. If you'd like to propose two unrelated changes, submit two pull requests.
|
||||
- The smaller the proposed change, the better. If you'd like to propose two unrelated changes, submit two pull requests.
|
||||
|
||||
* The more information, the better. Make judicious use of the pull request body. Describe what changes were made, why you made them, and what impact they will have for users.
|
||||
- The more information, the better. Make judicious use of the pull request body. Describe what changes were made, why you made them, and what impact they will have for users.
|
||||
|
||||
* If this is your first pull request, it may help to [understand GitHub Flow](https://guides.github.com/introduction/flow/).
|
||||
- If this is your first pull request, it may help to [understand GitHub Flow](https://guides.github.com/introduction/flow/).
|
||||
|
||||
* If you're submitting a code contribution, be sure to read the [code contributions](#code-contributions) section below.
|
||||
- If you're submitting a code contribution, be sure to read the [code contributions](#code-contributions) section below.
|
||||
|
||||
### Submitting a pull request via github.com
|
||||
|
||||
@@ -76,11 +76,12 @@ If you ever need to update our documentation with an icon that is not already av
|
||||
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 `<jekyll>/docs/`.
|
||||
- Copy the contents of `selection.json` and overwrite existing content inside `<jekyll>/docs/icomoon-selection.json`.
|
||||
- Copy the entire `@font-face {}` declaration and only the **new-icon(s)' css declarations** further below, to update the
|
||||
|
||||
- Copy the entire `fonts` directory over and overwrite existing ones at `<jekyll>/docs/`.
|
||||
- Copy the contents of `selection.json` and overwrite existing content inside `<jekyll>/docs/icomoon-selection.json`.
|
||||
- Copy the entire `@font-face {}` declaration and only the **new-icon(s)' css declarations** further below, to update the
|
||||
`<jekyll>/docs/_sass/_font-awesome.scss` sass partial.
|
||||
- Fix paths in the `@font-face {}` declaration by adding `../` before `fonts/FontAwesome.*` like so:
|
||||
- Fix paths in the `@font-face {}` declaration by adding `../` before `fonts/FontAwesome.*` like so:
|
||||
`('../fonts/Fontawesome.woff?9h6hxj')`.
|
||||
|
||||
### Adding plugins
|
||||
@@ -101,21 +102,21 @@ If your contribution changes any Jekyll behavior, make sure to update the docume
|
||||
|
||||
#### Tests
|
||||
|
||||
* If you're creating a small fix or patch to an existing feature, a simple test is more than enough. You can usually copy/paste from an existing example in the `tests` folder, but if you need you can find out about our tests suites [Shoulda](https://github.com/thoughtbot/shoulda/tree/master) and [RSpec-Mocks](https://github.com/rspec/rspec-mocks).
|
||||
- If you're creating a small fix or patch to an existing feature, a simple test is more than enough. You can usually copy/paste from an existing example in the `tests` folder, but if you need you can find out about our tests suites [Shoulda](https://github.com/thoughtbot/shoulda/tree/master) and [RSpec-Mocks](https://github.com/rspec/rspec-mocks).
|
||||
|
||||
* If it's a brand new feature, create a new [Cucumber](https://github.com/cucumber/cucumber/) feature, reusing existing steps where appropriate.
|
||||
- If it's a brand new feature, create a new [Cucumber](https://github.com/cucumber/cucumber/) feature, reusing existing steps where appropriate.
|
||||
|
||||
### Code contributions generally
|
||||
|
||||
* Jekyll uses the [Rubocop](https://github.com/bbatsov/rubocop) static analyzer to ensure that contributions follow the [GitHub Ruby Styleguide](https://github.com/styleguide/ruby). Please check your code using `script/fmt` and resolve any errors before pushing your branch.
|
||||
- Jekyll uses the [Rubocop](https://github.com/bbatsov/rubocop) static analyzer to ensure that contributions follow the [GitHub Ruby Styleguide](https://github.com/styleguide/ruby). Please check your code using `script/fmt` and resolve any errors before pushing your branch.
|
||||
|
||||
* Don't bump the Gem version in your pull request (if you don't know what that means, you probably didn't).
|
||||
- Don't bump the Gem version in your pull request (if you don't know what that means, you probably didn't).
|
||||
|
||||
* You can use the command `script/console` to start a REPL to explore the result of
|
||||
Jekyll's methods. It also provides you with helpful methods to quickly create a
|
||||
site or configuration. [Feel free to check it out!](https://github.com/jekyll/jekyll/blob/master/script/console)
|
||||
- You can use the command `script/console` to start a REPL to explore the result of
|
||||
Jekyll's methods. It also provides you with helpful methods to quickly create a
|
||||
site or configuration. [Feel free to check it out!](https://github.com/jekyll/jekyll/blob/master/script/console)
|
||||
|
||||
* Previously, we've used the WIP Probot app to help contributors determine whether their pull request is ready for review. Please use a [draft pull request](https://help.github.com/en/articles/about-pull-requests#draft-pull-requests) instead. When you're ready, [mark the pull request as ready for review](https://help.github.com/en/articles/changing-the-stage-of-a-pull-request)
|
||||
- Previously, we've used the WIP Probot app to help contributors determine whether their pull request is ready for review. Please use a [draft pull request](https://help.github.com/en/articles/about-pull-requests#draft-pull-requests) instead. When you're ready, [mark the pull request as ready for review](https://help.github.com/en/articles/changing-the-stage-of-a-pull-request)
|
||||
|
||||
## Running tests locally
|
||||
|
||||
@@ -148,6 +149,10 @@ script/cucumber features/blah.feature
|
||||
Both `script/test` and `script/cucumber` can be run without arguments to
|
||||
run its entire respective suite.
|
||||
|
||||
## Visual Studio Code Development Container
|
||||
|
||||
If you've got [Visual Studio Code](https://code.visualstudio.com/) with the [Remote Development Extension Pack](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) installed then simply opening this repository in Visual Studio Code and following the prompts to "Re-open In A Development Container" will get you setup and ready to go with a fresh environment with all the requirements installed.
|
||||
|
||||
## A thank you
|
||||
|
||||
Thanks! Hacking on Jekyll should be fun. If you find any of this hard to figure out, let us know so we can improve our process or documentation!
|
||||
|
||||
71
.github/ISSUE_TEMPLATE/bug_report.md
vendored
71
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,71 +0,0 @@
|
||||
---
|
||||
name: Bug Report
|
||||
about: Is something not working as expected?
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
Hi! Thanks for considering to file a bug with Jekyll. Please take the time to
|
||||
answer the basic questions. Please try to be as detailed as possible.
|
||||
|
||||
If you are unsure this is a bug in Jekyll, or this is a bug caused
|
||||
by a plugin that isn't directly related to Jekyll, or if this is just
|
||||
a generic usage question, please consider asking your question at
|
||||
https://talk.jekyllrb.com where non-bug questions go.
|
||||
|
||||
Thanks!
|
||||
-->
|
||||
|
||||
<!--
|
||||
Make sure that you've done all of these. If you're sure that the bug you're
|
||||
reporting is only apparent in a previous version of Jekyll, please say so explicitly
|
||||
in your description.
|
||||
|
||||
- I updated to the latest Jekyll (or) if on GitHub Pages to the latest `github-pages`
|
||||
- I ran `jekyll doctor` to check my configuration
|
||||
- I read the contributing document at https://jekyllrb.com/docs/contributing/
|
||||
-->
|
||||
|
||||
## My Environment
|
||||
|
||||
<!--
|
||||
Replace the values in the Version(s) column with the ones in your build. If you're not
|
||||
using `github-pages`, just replace it with "No".
|
||||
-->
|
||||
|
||||
| Software | Version(s) |
|
||||
| ---------------- | ---------- |
|
||||
| Operating System | |
|
||||
| `jekyll` | Latest |
|
||||
| `github-pages` | Latest |
|
||||
|
||||
---
|
||||
|
||||
## Expected Behaviour
|
||||
|
||||
<!--
|
||||
What is it you expected to happen? This should be a description of how the
|
||||
functionality you tried to use is supposed to work.
|
||||
-->
|
||||
|
||||
## Current Behavior
|
||||
|
||||
<!--
|
||||
Describe the details of the bug. Be sure to include any steps you took for the
|
||||
problem to exist, such as the directories you created and the full command
|
||||
you ran. Include any plugins you have installed (this is very important!).
|
||||
|
||||
You can include any logs you think relevant here. If you're using GitHub pages
|
||||
and you're not sure where your logs are, please email support@github.com and
|
||||
they will happily help you.
|
||||
-->
|
||||
|
||||
## Code Sample
|
||||
|
||||
<!--
|
||||
Please provide a code repository, gist, code snippet or sample files to
|
||||
reproduce the issue.
|
||||
-->
|
||||
104
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
104
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
name: Bug Report
|
||||
description: "Is something not working as expected?"
|
||||
title: "[Bug]: "
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Hi! Thank you for taking the time to report a bug with Jekyll.
|
||||
|
||||
Please consider asking your question at https://talk.jekyllrb.com if one or more of the following is applicable to your situation:
|
||||
|
||||
- You are not sure if the issue is a bug in Jekyll.
|
||||
- The issue is caused by a third-party plugin.
|
||||
- This is just a generic usage question.
|
||||
|
||||
Additionally, please note that this platform is meant for bugs in Jekyll core only.
|
||||
Issues regarding dependencies and plugins should be reported in their respective repositories.
|
||||
- type: input
|
||||
id: os
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: The operating system of your computer.
|
||||
placeholder: "Ubuntu 21.10"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: ruby-version
|
||||
attributes:
|
||||
label: Ruby Version
|
||||
description: |
|
||||
The Ruby version you were using at the time.
|
||||
Run `ruby -v` in your terminal and paste the output in the input field.
|
||||
placeholder: "ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x64-mingw32]"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: jekyll-version
|
||||
attributes:
|
||||
label: Jekyll Version
|
||||
description: |
|
||||
The version of Jekyll used in your project.
|
||||
Run `bundle exec jekyll -v` and paste the output in the input field.
|
||||
*If you are not using a Gemfile, run `jekyll -v` instead.*
|
||||
placeholder: "jekyll 4.2.1"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: ghp-version
|
||||
attributes:
|
||||
label: GitHub Pages Version
|
||||
description: |
|
||||
Are you deploying your site using GitHub Pages?
|
||||
If yes, then we need to know the `github-pages` version used by your project. Proceed ahead otherwise.
|
||||
If you're using the `github-pages` gem in your Gemfile, paste the output from running the following:
|
||||
```
|
||||
bundle exec github-pages -v
|
||||
```
|
||||
Otherwise, enter `Latest` in the input field and proceed ahead.
|
||||
- type: textarea
|
||||
id: expected
|
||||
attributes:
|
||||
label: Expected Behavior
|
||||
description: Briefly describe what you expected to see or get with a certain functionality.
|
||||
placeholder: |
|
||||
I expected my site to be built successfully when I run the following:
|
||||
```
|
||||
bundle exec jekyll build
|
||||
```
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: actual
|
||||
attributes:
|
||||
label: Current Behavior
|
||||
description: >
|
||||
Describe the details of the bug.
|
||||
Be sure to include any steps you took for the problem to exist, such as the directories
|
||||
you created and the full command you ran.
|
||||
Include any plugins you have configured for use in the site.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Relevant log output
|
||||
description: |
|
||||
Please copy and paste any relevant log output from your terminal.
|
||||
*Note: This will be automatically formatted into code, so no need for backticks.*
|
||||
render: shell
|
||||
- type: textarea
|
||||
id: sample
|
||||
attributes:
|
||||
label: Code Sample
|
||||
description: >
|
||||
The easiest way for someone to understand an issue is if they could reproduce your issue
|
||||
in their environment. Therefore, please provide a link to your project repository alongwith
|
||||
instructions to reproduce your issue. If your project is not publicly accessible, please
|
||||
consider setting up a minimal test repository complete with necessary instructions.
|
||||
placeholder: |
|
||||
### Steps to reproduce issue
|
||||
|
||||
- Clone [my repo](https://github.com/owner/repo)
|
||||
- Install site dependencies
|
||||
- Run `bundle exec jekyll build -s src -d src/dist`
|
||||
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,4 +1,4 @@
|
||||
blank_issues_enabled: false
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Jekyll Community Forum
|
||||
url: https://talk.jekyllrb.com/
|
||||
|
||||
4
.github/ISSUE_TEMPLATE/documentation.md
vendored
4
.github/ISSUE_TEMPLATE/documentation.md
vendored
@@ -1,9 +1,9 @@
|
||||
---
|
||||
name: Documentation
|
||||
about: Found a typo or something that isn't crystal clear in our docs?
|
||||
title: 'docs: '
|
||||
title: '[Docs]: '
|
||||
labels: documentation
|
||||
assignees: DirtyF
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -27,7 +27,7 @@ assignees: ''
|
||||
implemented at the plugin level, but in Jekyll core? What use cases does it support?
|
||||
|
||||
NOTE: Please be mindful of the Jekyll philosophy (https://jekyllrb.com/philosophy/),
|
||||
particularily Section 5. Think about if 90% of the users would benefit from your
|
||||
particularly Section 5. Think about if 90% of the users would benefit from your
|
||||
feature request, and whether your feature would be better off in a plugin.
|
||||
-->
|
||||
|
||||
|
||||
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -12,6 +12,7 @@
|
||||
<!-- This is a 🐛 bug fix. -->
|
||||
<!-- This is a 🙋 feature or enhancement. -->
|
||||
<!-- This is a 🔦 documentation change. -->
|
||||
<!-- This is a 🔨 code refactoring. -->
|
||||
|
||||
<!--
|
||||
Before you submit this pull request, make sure to have a look at the following
|
||||
|
||||
32
.github/SECURITY.markdown
vendored
Normal file
32
.github/SECURITY.markdown
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Security updates are applied to the latest MINOR version of Jekyll, and the version used by GitHub Pages, v3.9.x.
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 4.2.x | :white_check_mark: |
|
||||
| 3.9.x | :white_check_mark: |
|
||||
| < 3.9.x | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please report vulnerabilities by sending an email to security@jekyllrb.com with the following information:
|
||||
|
||||
1. A description of the vulnerability
|
||||
2. Reproduction steps and/or a sample site (share a private repo to the [Jekyll Security Team](docs/pages/team.md))
|
||||
3. Your contact information
|
||||
|
||||
The Jekyll security team will respond to your submission and notify you whether it has been confirmed by the team.
|
||||
Your confidentiality is kindly requested as we work on a fix. We will provide our patch to you to test and verify that the vulnerability has
|
||||
been closed.
|
||||
|
||||
If you have created a patch and would like to submit that to us as well, we will happily consider it though we cannot guarantee that we will
|
||||
use it. If we use your patch, we will attribute authorship to you either as the commit author, or as a co-author.
|
||||
|
||||
Once a fix is verified, we will release PATCH versions of the supported MINOR versions and assign a CVE to the vulnerability. You will receive
|
||||
credit in our release post.
|
||||
|
||||
Once the patched version has been released, we will no longer request you to maintain confidentiality and you may choose to share details on
|
||||
how you found the vulnerability with the community.
|
||||
15
.github/actions/spelling/README.md
vendored
Normal file
15
.github/actions/spelling/README.md
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# check-spelling/check-spelling configuration
|
||||
|
||||
File | Purpose | Format | Info
|
||||
-|-|-|-
|
||||
[dictionary.txt](dictionary.txt) | Replacement dictionary (creating this file will override the default dictionary) | one word per line | [dictionary](https://github.com/check-spelling/check-spelling/wiki/Configuration#dictionary)
|
||||
[allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow)
|
||||
[reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject)
|
||||
[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes)
|
||||
[only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only)
|
||||
[patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
|
||||
[expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect)
|
||||
[advice.txt](advice.txt) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)
|
||||
|
||||
Note: you can replace any of these files with a directory by the same name (minus the `.txt` extension) and
|
||||
then include multiple files (with a `.txt` extension) inside that directory to merge multiple files together.
|
||||
28
.github/actions/spelling/advice.md
vendored
Normal file
28
.github/actions/spelling/advice.md
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
<!-- See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice --> <!-- markdownlint-disable MD033 MD041 -->
|
||||
|
||||
<details><summary>If you see a bunch of garbage</summary>
|
||||
|
||||
If it relates to a ...
|
||||
<details><summary>well-formed pattern</summary>
|
||||
|
||||
See if there's a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it.
|
||||
|
||||
If not, try writing one and adding it to the `patterns.txt` file.
|
||||
|
||||
Patterns are Perl 5 Regular Expressions - you can [test](
|
||||
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
|
||||
|
||||
Note that patterns can't match multiline strings.
|
||||
</details>
|
||||
<details><summary>binary-ish string</summary>
|
||||
|
||||
Please add a file path to the `excludes.txt` file instead of just accepting the garbage.
|
||||
|
||||
File paths are Perl 5 Regular Expressions - you can [test](
|
||||
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
|
||||
|
||||
`^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](
|
||||
../tree/HEAD/README.md) (on whichever branch you're using).
|
||||
</details>
|
||||
|
||||
</details>
|
||||
0
.github/actions/spelling/allow.txt
vendored
Normal file
0
.github/actions/spelling/allow.txt
vendored
Normal file
35
.github/actions/spelling/excludes.txt
vendored
Normal file
35
.github/actions/spelling/excludes.txt
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes
|
||||
|
||||
(?:^|/)(?i)COPYRIGHT
|
||||
(?:^|/)(?i)LICEN[CS]E
|
||||
(?:^|/)package(?:-lock|)\.json$
|
||||
(?:^|/)vendor/
|
||||
|
||||
/fonts/
|
||||
ignore$
|
||||
|
||||
\.avi$
|
||||
\.eot$
|
||||
\.ico$
|
||||
\.jpe?g$
|
||||
\.lock$
|
||||
\.map$
|
||||
\.min\.
|
||||
\.mod$
|
||||
\.mp[34]$
|
||||
\.png$
|
||||
\.svg$
|
||||
\.ttf$
|
||||
\.wav$
|
||||
\.woff$
|
||||
\.woff2$
|
||||
|
||||
^docs/pages/redirects/github\.html$
|
||||
^lib/jekyll/mime\.types$
|
||||
^lib/theme_template/example/index\.html$
|
||||
^lib/theme_template/example/_post\.md$
|
||||
^test/fixtures/empty_permalink\.erb$
|
||||
^test/fixtures/webrick/bar/baz\.html$
|
||||
^test/fixtures/webrick/bar/foo\.xhtml$
|
||||
^test/source/_posts/2009-06-22-no-yaml\.markdown$
|
||||
^\.github/
|
||||
760
.github/actions/spelling/expect.txt
vendored
Normal file
760
.github/actions/spelling/expect.txt
vendored
Normal file
@@ -0,0 +1,760 @@
|
||||
acl
|
||||
activesupport
|
||||
adaoraul
|
||||
addons
|
||||
aeiou
|
||||
AFile
|
||||
afterall
|
||||
Alexey
|
||||
alfredxing
|
||||
algolia
|
||||
allowfullscreen
|
||||
Anatoliy
|
||||
andreyvit
|
||||
Ankit
|
||||
Anning
|
||||
apps
|
||||
appveyor
|
||||
arengu
|
||||
args
|
||||
ariejan
|
||||
arounds
|
||||
asciinema
|
||||
asdf
|
||||
ashmaroli
|
||||
attr
|
||||
Autobuild
|
||||
autocompletion
|
||||
autogenerated
|
||||
Autolink
|
||||
autoload
|
||||
autoreconf
|
||||
autosave
|
||||
awood
|
||||
aws
|
||||
awscli
|
||||
backend
|
||||
backport
|
||||
backtick
|
||||
barcamp
|
||||
baseurl
|
||||
bashrc
|
||||
baz
|
||||
bbatsov
|
||||
bdimcheff
|
||||
bellvat
|
||||
benbalter
|
||||
Beney
|
||||
binstubs
|
||||
bip
|
||||
bitbucket
|
||||
blog
|
||||
Blogger
|
||||
blogging
|
||||
bonafide
|
||||
Bou
|
||||
breadcrumbs
|
||||
briandoll
|
||||
bridgetown
|
||||
bridgetownrb
|
||||
brightbox
|
||||
brighterplanet
|
||||
buddyworks
|
||||
Bugfix
|
||||
Burela
|
||||
byparker
|
||||
cachegrind
|
||||
calavera
|
||||
callgraphs
|
||||
cartera
|
||||
cavalle
|
||||
CDNs
|
||||
cgi
|
||||
changefreq
|
||||
changelog
|
||||
chango
|
||||
charset
|
||||
Chayoung
|
||||
chcp
|
||||
chdir
|
||||
Cheatsheet
|
||||
Checkoway
|
||||
chmod
|
||||
chown
|
||||
Chrononaut
|
||||
chruby
|
||||
cibuild
|
||||
cimg
|
||||
circleci
|
||||
CJK
|
||||
classname
|
||||
cloudcannon
|
||||
Cloudinary
|
||||
cloudsh
|
||||
CLT
|
||||
codebase
|
||||
codeclimate
|
||||
CODEOWNERS
|
||||
coderay
|
||||
codeslinger
|
||||
coffeescript
|
||||
colorator
|
||||
commandline
|
||||
commonmark
|
||||
compat
|
||||
compatibilize
|
||||
concat
|
||||
config
|
||||
configyml
|
||||
contentblocks
|
||||
CORS
|
||||
Cov
|
||||
CRLFs
|
||||
cron
|
||||
crontab
|
||||
cruft
|
||||
css
|
||||
csv
|
||||
Currin
|
||||
CVE
|
||||
CWD
|
||||
cygwin
|
||||
daringfireball
|
||||
Dassonville
|
||||
datafiles
|
||||
datetime
|
||||
DCEU
|
||||
Debian
|
||||
debuggability
|
||||
defunkt
|
||||
delegators
|
||||
deployer
|
||||
deps
|
||||
dest
|
||||
Devkit
|
||||
devops
|
||||
digitalocean
|
||||
dirs
|
||||
disqus
|
||||
ditaa
|
||||
dnf
|
||||
doclist
|
||||
doctype
|
||||
doeorg
|
||||
dommmel
|
||||
dotfile
|
||||
Dousse
|
||||
downcase
|
||||
downcased
|
||||
duckduckgo
|
||||
duritong
|
||||
Dusseau
|
||||
dysinger
|
||||
ecf
|
||||
editorconfig
|
||||
eduardoboucas
|
||||
Elasticsearch
|
||||
elsif
|
||||
Emacs
|
||||
emails
|
||||
emoji
|
||||
endcapture
|
||||
endcomment
|
||||
endfor
|
||||
endhighlight
|
||||
endif
|
||||
endraw
|
||||
endrender
|
||||
endtablerow
|
||||
Enumerables
|
||||
EOL
|
||||
erb
|
||||
errordocument
|
||||
Espinaco
|
||||
eugenebolshakov
|
||||
evaled
|
||||
exe
|
||||
execjs
|
||||
extensionpack
|
||||
extname
|
||||
exts
|
||||
favicon
|
||||
Fengyun
|
||||
ffi
|
||||
figcaption
|
||||
filesystem
|
||||
Finazzo
|
||||
firstimage
|
||||
FIXME
|
||||
flakey
|
||||
flickr
|
||||
fnmatch
|
||||
fontello
|
||||
forloop
|
||||
formcake
|
||||
formcarry
|
||||
formester
|
||||
formingo
|
||||
formkeep
|
||||
formspark
|
||||
formspree
|
||||
formx
|
||||
Forwardable
|
||||
frameborder
|
||||
freenode
|
||||
frontmatter
|
||||
fsnotify
|
||||
ftp
|
||||
fullstory
|
||||
Gaudino
|
||||
gcc
|
||||
gcnovus
|
||||
gemfile
|
||||
gemset
|
||||
gemspec
|
||||
getform
|
||||
getset
|
||||
getsimpleform
|
||||
gettalong
|
||||
gfm
|
||||
ghp
|
||||
ghpages
|
||||
giraffeacademy
|
||||
github
|
||||
githubcom
|
||||
githubusercontent
|
||||
gitignore
|
||||
gitlab
|
||||
gjtorikian
|
||||
globbed
|
||||
globbing
|
||||
google
|
||||
gotcha
|
||||
Goulven
|
||||
gridism
|
||||
GSo
|
||||
gsub
|
||||
gsubbing
|
||||
Hakiri
|
||||
hardcode
|
||||
hashbang
|
||||
hashmap
|
||||
helaili
|
||||
henrik
|
||||
heredoc
|
||||
heroku
|
||||
highlighter
|
||||
hilighting
|
||||
Hoizey
|
||||
homepage
|
||||
hostman
|
||||
hostname
|
||||
href
|
||||
htaccess
|
||||
htm
|
||||
html
|
||||
htmlproofer
|
||||
http
|
||||
httpd
|
||||
httpdocs
|
||||
hyperlinks
|
||||
Iaa
|
||||
ial
|
||||
ico
|
||||
icomoon
|
||||
iconset
|
||||
ified
|
||||
iframe
|
||||
img
|
||||
Impl
|
||||
Inlining
|
||||
invokables
|
||||
irc
|
||||
ivey
|
||||
ize
|
||||
jalali
|
||||
jameshamann
|
||||
jamstackthemes
|
||||
jan
|
||||
javascript
|
||||
Jax
|
||||
jayferd
|
||||
jcon
|
||||
jdoe
|
||||
jeffreytse
|
||||
jeffrydegrande
|
||||
Jekpack
|
||||
jekyllbot
|
||||
jekyllconf
|
||||
Jekyllers
|
||||
Jekyllin
|
||||
Jekylling
|
||||
jekyllized
|
||||
jekylllayoutconcept
|
||||
jekyllrb
|
||||
jekyllthemes
|
||||
jemoji
|
||||
jmcglone
|
||||
jneen
|
||||
johnreilly
|
||||
jpg
|
||||
jqr
|
||||
jruby
|
||||
json
|
||||
jsonify
|
||||
juretta
|
||||
jwarby
|
||||
Kacper
|
||||
Kasberg
|
||||
kbd
|
||||
Kentico
|
||||
Kewin
|
||||
keycdn
|
||||
kickster
|
||||
Kinnula
|
||||
kiwifruit
|
||||
Kolesky
|
||||
konklone
|
||||
kontent
|
||||
Kotvinsky
|
||||
kramdown
|
||||
Kulig
|
||||
Kwokfu
|
||||
Lamprecht
|
||||
laquo
|
||||
lastmod
|
||||
launchctl
|
||||
launchy
|
||||
laurilehmijoki
|
||||
ldquo
|
||||
learnxinyminutes
|
||||
lexer
|
||||
LGTM
|
||||
libcurl
|
||||
libffi
|
||||
lifecycle
|
||||
lightgray
|
||||
limjh
|
||||
linenos
|
||||
linkify
|
||||
linux
|
||||
liufengyun
|
||||
livereload
|
||||
localheinz
|
||||
localhost
|
||||
localtime
|
||||
Locher
|
||||
loglevel
|
||||
Losslessly
|
||||
lovin
|
||||
lsi
|
||||
lsquo
|
||||
lstrip
|
||||
lyche
|
||||
macos
|
||||
macromates
|
||||
mademistakes
|
||||
mailto
|
||||
Manmeet
|
||||
markdownify
|
||||
Maroli
|
||||
Marsceill
|
||||
maruku
|
||||
mathjax
|
||||
mathml
|
||||
mattr
|
||||
Maximiliano
|
||||
mchung
|
||||
mdash
|
||||
memberspace
|
||||
Memoize
|
||||
memoized
|
||||
memoizing
|
||||
mentoring
|
||||
mergable
|
||||
Mertcan
|
||||
mertkahyaoglu
|
||||
metadata
|
||||
microdata
|
||||
microsoft
|
||||
mimetype
|
||||
mingw
|
||||
minibundle
|
||||
minifier
|
||||
minitest
|
||||
Mittal
|
||||
mixin
|
||||
mkasberg
|
||||
mkd
|
||||
mkdir
|
||||
mkdn
|
||||
mkdown
|
||||
mmistakes
|
||||
modernizr
|
||||
mojombo
|
||||
moncefbelyamani
|
||||
moz
|
||||
mreid
|
||||
msdn
|
||||
mswin
|
||||
MSYS
|
||||
mtime
|
||||
multiline
|
||||
munging
|
||||
Mvvm
|
||||
myblog
|
||||
mycontent
|
||||
mydata
|
||||
mydoc
|
||||
myimage
|
||||
mypage
|
||||
myposts
|
||||
myproject
|
||||
myrepo
|
||||
mysite
|
||||
myvalue
|
||||
myvar
|
||||
myvariable
|
||||
Nadjib
|
||||
nakanishi
|
||||
namespace
|
||||
namespaced
|
||||
navbar
|
||||
nbsp
|
||||
nearlyfreespeech
|
||||
nethack
|
||||
netlify
|
||||
netlifycms
|
||||
Neue
|
||||
nginx
|
||||
ngx
|
||||
nielsenramon
|
||||
nior
|
||||
nodejs
|
||||
noifniof
|
||||
nokogiri
|
||||
notextile
|
||||
onclick
|
||||
onebox
|
||||
oneclick
|
||||
onschedule
|
||||
opensource
|
||||
openssl
|
||||
Optim
|
||||
orderofinterpretation
|
||||
orgs
|
||||
OSVDB
|
||||
osx
|
||||
packagecontrol
|
||||
pacman
|
||||
paginator
|
||||
pandoc
|
||||
pantulis
|
||||
params
|
||||
parkr
|
||||
parseable
|
||||
paspagon
|
||||
passthrough
|
||||
pathawks
|
||||
Pathutil
|
||||
paywall
|
||||
pdf
|
||||
Pelykh
|
||||
permalink
|
||||
PHP
|
||||
pinboard
|
||||
Piwigo
|
||||
pjhyett
|
||||
pkill
|
||||
pkpass
|
||||
placeholders
|
||||
planetjekyll
|
||||
plantuml
|
||||
plugin
|
||||
png
|
||||
podcasts
|
||||
popen
|
||||
Porcel
|
||||
Posterous
|
||||
postfiles
|
||||
postlayout
|
||||
postmodern
|
||||
preinstalled
|
||||
prepends
|
||||
Prioritise
|
||||
Probot
|
||||
projectlist
|
||||
pubstorm
|
||||
pufuwozu
|
||||
pwa
|
||||
pwd
|
||||
pygments
|
||||
qrush
|
||||
Quaid
|
||||
quickstart
|
||||
rackup
|
||||
Rakefile
|
||||
raquo
|
||||
razorops
|
||||
rbenv
|
||||
rdiscount
|
||||
rdoc
|
||||
rdquo
|
||||
readme
|
||||
realz
|
||||
rebund
|
||||
redcarpet
|
||||
redcloth
|
||||
redgreen
|
||||
redhat
|
||||
refactor
|
||||
refactoring
|
||||
Refheap
|
||||
regen
|
||||
regex
|
||||
regexp
|
||||
remi
|
||||
reqs
|
||||
Responsify
|
||||
revertable
|
||||
rfc
|
||||
rfelix
|
||||
RHEL
|
||||
ridk
|
||||
roadmap
|
||||
rowspan
|
||||
rspec
|
||||
rsquo
|
||||
rss
|
||||
rstrip
|
||||
rsync
|
||||
rtomayko
|
||||
Rubo
|
||||
rubocop
|
||||
rubychan
|
||||
rubygem
|
||||
rubyinstaller
|
||||
rubyprof
|
||||
Ruparelia
|
||||
Rusiczki
|
||||
rvm
|
||||
ryanflorence
|
||||
saas
|
||||
samplelist
|
||||
samrayner
|
||||
sandboxed
|
||||
Sassc
|
||||
sassify
|
||||
schemastore
|
||||
Schroers
|
||||
Schwartzian
|
||||
scp
|
||||
screenshot
|
||||
scrollbar
|
||||
scroller
|
||||
scss
|
||||
scssify
|
||||
sdk
|
||||
SDKROOT
|
||||
sectore
|
||||
semver
|
||||
seo
|
||||
serverless
|
||||
setenv
|
||||
SFTP
|
||||
shingo
|
||||
shopify
|
||||
shortlog
|
||||
shoulda
|
||||
sieversii
|
||||
sigpipe
|
||||
simplecov
|
||||
Singhaniya
|
||||
siteleaf
|
||||
sitemap
|
||||
SITENAME
|
||||
Slicehost
|
||||
slugified
|
||||
slugify
|
||||
smartforms
|
||||
smartify
|
||||
snipcart
|
||||
socio
|
||||
somedir
|
||||
sonnym
|
||||
Sonomy
|
||||
sourced
|
||||
sourcemaps
|
||||
spam
|
||||
spotify
|
||||
src
|
||||
ssg
|
||||
ssh
|
||||
SSL
|
||||
stackoverflow
|
||||
standalone
|
||||
staticfiles
|
||||
staticman
|
||||
statictastic
|
||||
STDERR
|
||||
stdout
|
||||
Stickyposts
|
||||
strftime
|
||||
stringified
|
||||
Stringify
|
||||
styleguide
|
||||
stylesheet
|
||||
subdir
|
||||
subdomain
|
||||
subfolder
|
||||
subfolderitems
|
||||
subnav
|
||||
subpages
|
||||
subpath
|
||||
subpiece
|
||||
subsubfolderitems
|
||||
subthing
|
||||
subvalues
|
||||
subwidget
|
||||
sudo
|
||||
superdirectories
|
||||
superdirs
|
||||
SUSE
|
||||
sverrirs
|
||||
svg
|
||||
svn
|
||||
swfobject
|
||||
swupd
|
||||
symlink
|
||||
symlinking
|
||||
tablerow
|
||||
tada
|
||||
Taillandier
|
||||
talkyard
|
||||
tbody
|
||||
technicalpickles
|
||||
templating
|
||||
templatize
|
||||
Termux
|
||||
textilize
|
||||
textpattern
|
||||
thead
|
||||
therubyracer
|
||||
Theunissen
|
||||
Thornquest
|
||||
thoughtbot
|
||||
throughs
|
||||
Tidelift
|
||||
timeago
|
||||
timezone
|
||||
titleize
|
||||
TLS
|
||||
tmm
|
||||
tmp
|
||||
toc
|
||||
tok
|
||||
tomjoht
|
||||
toml
|
||||
tomo
|
||||
toolset
|
||||
toshimaru
|
||||
triaged
|
||||
triaging
|
||||
truncatewords
|
||||
tsv
|
||||
ttf
|
||||
Tudou
|
||||
Tumblr
|
||||
Tweetsert
|
||||
txtpen
|
||||
Tyborska
|
||||
tzinfo
|
||||
ubuntu
|
||||
uby
|
||||
ujh
|
||||
ultron
|
||||
undumpable
|
||||
unencode
|
||||
Unescape
|
||||
unescaping
|
||||
unicode
|
||||
uniq
|
||||
upcase
|
||||
uppercasing
|
||||
uri
|
||||
url
|
||||
urlset
|
||||
username
|
||||
usr
|
||||
utf
|
||||
utils
|
||||
utime
|
||||
utm
|
||||
vanpelt
|
||||
Vasovi
|
||||
vendored
|
||||
vercel
|
||||
versioned
|
||||
versioning
|
||||
vertycal
|
||||
Veyor
|
||||
vilcans
|
||||
Vishesh
|
||||
visualstudio
|
||||
vnd
|
||||
vohedge
|
||||
vps
|
||||
vscode
|
||||
vwochnik
|
||||
Walkthroughs
|
||||
wdm
|
||||
We'd
|
||||
webfont
|
||||
webhook
|
||||
webhosting
|
||||
webmentions
|
||||
webrick
|
||||
website
|
||||
weekdate
|
||||
whitelist
|
||||
whitelisting
|
||||
wiki
|
||||
wikipedia
|
||||
wildcards
|
||||
willcodeforfoo
|
||||
woff
|
||||
wordpress
|
||||
Workaround
|
||||
workflow
|
||||
wsl
|
||||
www
|
||||
xcode
|
||||
xcrun
|
||||
xdg
|
||||
Xhmikos
|
||||
xhtml
|
||||
Xiaoiver
|
||||
XMinutes
|
||||
xml
|
||||
xmlns
|
||||
xmlschema
|
||||
yajl
|
||||
yaml
|
||||
Yarp
|
||||
Yashu
|
||||
Yastreb
|
||||
yml
|
||||
Youku
|
||||
youtube
|
||||
yunbox
|
||||
zeropadding
|
||||
Zlatan
|
||||
zlib
|
||||
zoneinfo
|
||||
zpinter
|
||||
Zsh
|
||||
zshrc
|
||||
zypper
|
||||
zzot
|
||||
frontend
|
||||
prefetching
|
||||
1
.github/actions/spelling/only.txt
vendored
Normal file
1
.github/actions/spelling/only.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
^docs/.*\.md$
|
||||
75
.github/actions/spelling/patterns.txt
vendored
Normal file
75
.github/actions/spelling/patterns.txt
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
|
||||
|
||||
# data urls
|
||||
(['"])data:.*?\g{-1}
|
||||
data:[-a-zA-Z=;:/0-9+]*,\S*
|
||||
|
||||
# YouTube
|
||||
https?://(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_]*
|
||||
<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"]
|
||||
\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]*
|
||||
youtube_id:\s*[-a-zA-Z0-9?&=_]*
|
||||
|
||||
# Google Analytics
|
||||
\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
|
||||
|
||||
# Google APIs
|
||||
\bgoogleapis\.com/[a-z]+/v\d+/[a-z]+/[@./?=\w]+
|
||||
\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
|
||||
|
||||
# Google Calendar
|
||||
\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+
|
||||
\w+\@group\.calendar\.google\.com\b
|
||||
|
||||
# Google DataStudio
|
||||
\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|)
|
||||
|
||||
# The leading `/` here is as opposed to the `\b` above
|
||||
# ... a short way to match `https://` or `http://` since most urls have one of those prefixes
|
||||
# Google Docs
|
||||
/docs\.google\.com/[a-z]+/d/(?:e/|)[0-9a-zA-Z_-]+/?
|
||||
|
||||
# Google Groups
|
||||
https://groups\.google\.com/d/topic/[^/]+/[a-zA-Z0-9]+/discussion
|
||||
https://groups\.google\.com/d/msg/[^/]+/[a-zA-Z0-9]+/[a-zA-Z0-9]+
|
||||
|
||||
# Google themes
|
||||
themes\.googleusercontent\.com/static/fonts/[^/]+/v\d+/[^.]+.
|
||||
|
||||
# Google CDN
|
||||
\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]*
|
||||
|
||||
# Goo.gl
|
||||
/goo\.gl/[a-zA-Z0-9]+
|
||||
|
||||
# Google Chrome Store
|
||||
\bchrome\.google\.com/webstore/detail/\w*(?:/\w*|)
|
||||
|
||||
# google_site_verification:
|
||||
google_site_verification: [-a-zA-Z=;:/0-9+]*
|
||||
|
||||
# Ruby-doc.org
|
||||
https://ruby-doc\.org/.*
|
||||
|
||||
# Contributors
|
||||
alphabetical order.*:.*
|
||||
twitter_handle: .*
|
||||
|
||||
# apiKey
|
||||
apiKey: '[a-f0-9]+'
|
||||
|
||||
# FontAwesome
|
||||
/(?:(?i)FontAwesome\.\w+\?\w+)
|
||||
|
||||
# Lorem
|
||||
(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus|ultrices)\b(?:\w|\s|[,.])*
|
||||
|
||||
# URL escaped characters
|
||||
\%[0-9A-F]{2}
|
||||
# c99 hex digits (not the full format, just one I've seen)
|
||||
|
||||
# hex digits including css/html color classes:
|
||||
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9a-fA-FgGrR_]{2,}(?:[uU]?[lL]{0,2}|u\d+)\b
|
||||
|
||||
# ignore long runs of a single character:
|
||||
\b([A-Za-z])\g{-1}{3,}\b
|
||||
7
.github/actions/spelling/reject.txt
vendored
Normal file
7
.github/actions/spelling/reject.txt
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
^attache$
|
||||
benefitting
|
||||
occurence
|
||||
Sorce
|
||||
^[Ss]pae
|
||||
^untill
|
||||
^wether
|
||||
6
.github/dependabot.yml
vendored
Normal file
6
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
14
.github/workflows/actions/memprof.rb
vendored
Normal file
14
.github/workflows/actions/memprof.rb
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'jekyll'
|
||||
require 'memory_profiler'
|
||||
|
||||
MemoryProfiler.report(allow_files: ['lib/jekyll/', 'lib/jekyll.rb']) do
|
||||
Jekyll::PluginManager.require_from_bundler
|
||||
Jekyll::Commands::Build.process({
|
||||
"source" => File.expand_path(ARGV[0]),
|
||||
"destination" => File.expand_path("#{ARGV[0]}/_site"),
|
||||
"disable_disk_cache" => true,
|
||||
})
|
||||
puts ''
|
||||
end.pretty_print(scale_bytes: true, normalize_paths: true)
|
||||
30
.github/workflows/benchmark.yml
vendored
Normal file
30
.github/workflows/benchmark.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
name: Micro Benchmark Runs
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
path:
|
||||
description: "Path to benchmark script relative to 'benchmark' directory."
|
||||
required: true
|
||||
default: "capture-assign.rb"
|
||||
ruby_version:
|
||||
description: "Ruby version to use (via `ruby/setup-ruby@v1`) action."
|
||||
required: false
|
||||
default: "2.7"
|
||||
|
||||
jobs:
|
||||
benchmark:
|
||||
name: "Benchmark (${{ github.event.inputs.path }}) (Ruby ${{ github.event.inputs.ruby_version }})"
|
||||
runs-on: "ubuntu-latest"
|
||||
env:
|
||||
BENCHMARK: true
|
||||
steps:
|
||||
- name: Checkout Jekyll
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ github.event.inputs.ruby_version }}
|
||||
bundler-cache: true
|
||||
- name: Run Benchmark
|
||||
run: "bundle exec ruby benchmark/${{ github.event.inputs.path }}"
|
||||
98
.github/workflows/ci.yml
vendored
98
.github/workflows/ci.yml
vendored
@@ -3,51 +3,71 @@ name: Continuous Integration
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- /.*-stable/
|
||||
- master
|
||||
- "*-stable"
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- /.*-stable/
|
||||
- master
|
||||
- "*-stable"
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: 'SUITE: ${{ matrix.test_suite }} / OS: ${{ matrix.os }}'
|
||||
runs-on: ${{ matrix.os }}
|
||||
name: "Run Tests (${{ matrix.label }})"
|
||||
runs-on: "ubuntu-latest"
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
test_suite:
|
||||
- test
|
||||
- default-site
|
||||
os:
|
||||
- ubuntu-latest
|
||||
- windows-latest
|
||||
include:
|
||||
- label: Ruby 2.7
|
||||
ruby_version: "2.7"
|
||||
- label: Ruby 3.0
|
||||
ruby_version: "3.0"
|
||||
- label: Ruby 3.1
|
||||
ruby_version: "3.1"
|
||||
- label: JRuby 9.3.4.0
|
||||
ruby_version: "jruby-9.3.4.0"
|
||||
- label: Liquid 4
|
||||
ruby_version: 3.1
|
||||
liquid_version: "~> 4.0"
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 5
|
||||
- name: Ruby
|
||||
uses: actions/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.6.x
|
||||
- name: Cache dependencies
|
||||
uses: actions/cache@v1
|
||||
with:
|
||||
path: vendor/bundle
|
||||
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gems-
|
||||
- name: 'Update Rubygems'
|
||||
run: 'gem update --system --no-document'
|
||||
- name: 'Update Bundler'
|
||||
run: 'gem update bundler --no-document'
|
||||
- name: Set up bundle
|
||||
run: |
|
||||
bundle config path vendor/bundle
|
||||
bundle install --jobs 4 --retry 3
|
||||
- name: Run Test Suite
|
||||
run: bash script/cibuild
|
||||
env:
|
||||
CI: true
|
||||
TEST_SUITE: ${{ matrix.test_suite }}
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
- name: "Set up ${{ matrix.label }}"
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby_version }}
|
||||
bundler-cache: true
|
||||
env:
|
||||
LIQUID_VERSION: ${{ matrix.liquid_version }}
|
||||
- name: Run Minitest based tests
|
||||
run: bash script/test
|
||||
- name: Run Cucumber based tests
|
||||
run: bash script/cucumber
|
||||
- name: Generate and Build a new site
|
||||
run: bash script/default-site
|
||||
|
||||
xtras:
|
||||
name: "${{ matrix.job_name }} (Ruby ${{ matrix.ruby_version }})"
|
||||
runs-on: "ubuntu-latest"
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- job_name: "Profile Docs Site"
|
||||
step_name: "Build and Profile docs site"
|
||||
script_file: "profile-docs"
|
||||
ruby_version: "2.7"
|
||||
- job_name: "Style Check"
|
||||
step_name: "Run RuboCop"
|
||||
script_file: "fmt"
|
||||
ruby_version: "2.7"
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
- name: "Set up Ruby ${{ matrix.ruby_version }}"
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby_version }}
|
||||
bundler-cache: true
|
||||
- name: ${{ matrix.step_name }}
|
||||
run: bash script/${{ matrix.script_file }}
|
||||
|
||||
52
.github/workflows/docs.yml
vendored
Normal file
52
.github/workflows/docs.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
name: Build and deploy Jekyll documentation site
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
env:
|
||||
RUBY_VERSION: 2.7
|
||||
|
||||
jobs:
|
||||
deploy_docs:
|
||||
if: "!contains(github.event.commits[0].message, '[ci skip]')"
|
||||
runs-on: 'ubuntu-latest'
|
||||
env:
|
||||
BUNDLE_PATH: "vendor/bundle"
|
||||
BUNDLE_JOBS: 4
|
||||
BUNDLE_RETRY: 3
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ env.RUBY_VERSION }}
|
||||
bundler-cache: true
|
||||
- name: Clone target branch
|
||||
run: |
|
||||
REMOTE_BRANCH="${REMOTE_BRANCH:-gh-pages}"
|
||||
REMOTE_REPO="https://${GITHUB_ACTOR}:${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git"
|
||||
|
||||
echo "Publishing to ${GITHUB_REPOSITORY} on branch ${REMOTE_BRANCH}"
|
||||
rm -rf docs/_site/
|
||||
git clone --depth=1 --branch="${REMOTE_BRANCH}" --single-branch --no-checkout \
|
||||
"${REMOTE_REPO}" docs/_site/
|
||||
- name: Build site
|
||||
run: bundle exec jekyll build --source docs --destination docs/_site --verbose --trace
|
||||
env:
|
||||
# For jekyll-github-metadata
|
||||
JEKYLL_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Deploy to GitHub Pages
|
||||
run: |
|
||||
SOURCE_COMMIT="$(git log -1 --pretty="%an: %B" "$GITHUB_SHA")"
|
||||
pushd docs/_site &>/dev/null
|
||||
: > .nojekyll
|
||||
|
||||
git add --all
|
||||
git -c user.name="${GITHUB_ACTOR}" -c user.email="${GITHUB_ACTOR}@users.noreply.github.com" \
|
||||
commit --quiet \
|
||||
--message "Deploy docs from ${GITHUB_SHA}" \
|
||||
--message "$SOURCE_COMMIT"
|
||||
git push
|
||||
|
||||
popd &>/dev/null
|
||||
34
.github/workflows/release.yml
vendored
Normal file
34
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: Release Gem
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- "*-stable"
|
||||
paths:
|
||||
- "lib/**/version.rb"
|
||||
|
||||
jobs:
|
||||
release:
|
||||
if: "github.repository_owner == 'jekyll'"
|
||||
name: "Release Gem (Ruby ${{ matrix.ruby_version }})"
|
||||
runs-on: "ubuntu-latest"
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
ruby_version:
|
||||
- 2.7
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
- name: "Set up Ruby ${{ matrix.ruby_version }}"
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby_version }}
|
||||
bundler-cache: true
|
||||
- name: Build and Publish Gem
|
||||
uses: ashmaroli/release-gem@dist
|
||||
with:
|
||||
gemspec_name: jekyll
|
||||
env:
|
||||
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_GEM_PUSH_API_KEY }}
|
||||
22
.github/workflows/spelling.yml
vendored
Normal file
22
.github/workflows/spelling.yml
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
name: Spell Check
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- "*-stable"
|
||||
# Switch from `pull_request_target` event to reduce distraction from comments
|
||||
# regarding errors reported in unmodified files.
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
- "*-stable"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Spell Check
|
||||
runs-on: "ubuntu-latest"
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
- name: Check Spellings
|
||||
uses: check-spelling/check-spelling@v0.0.19
|
||||
41
.github/workflows/third-party.yml
vendored
Normal file
41
.github/workflows/third-party.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
name: Third-Party Repository Profiling
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
jobs:
|
||||
build_n_profile:
|
||||
if: "!contains(github.event.commits[0].message, '[ci skip]')"
|
||||
runs-on: 'ubuntu-latest'
|
||||
env:
|
||||
BUNDLE_GEMFILE: "sandbox/Gemfile"
|
||||
BUNDLE_PATH: "vendor/bundle"
|
||||
BUNDLE_JOBS: 4
|
||||
BUNDLE_RETRY: 3
|
||||
steps:
|
||||
- name: Checkout Jekyll
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 5
|
||||
path: jekyll
|
||||
- name: Checkout Third-Party Repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: ashmaroli/tomjoht.github.io
|
||||
path: sandbox
|
||||
- name: Set up Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.7
|
||||
bundler-cache: true
|
||||
- name: Run Jekyll Build 3 times
|
||||
run: |
|
||||
bundle exec jekyll build -s sandbox -d sandbox/_site --trace
|
||||
bundle exec jekyll build -s sandbox -d sandbox/_site --trace
|
||||
bundle exec jekyll build -s sandbox -d sandbox/_site --trace
|
||||
- name: Memory Analysis of Jekyll Build
|
||||
run: bundle exec ruby jekyll/.github/workflows/actions/memprof.rb sandbox
|
||||
247
.rubocop.yml
247
.rubocop.yml
@@ -2,7 +2,10 @@
|
||||
inherit_from: .rubocop_todo.yml
|
||||
|
||||
require:
|
||||
- rubocop-minitest
|
||||
- rubocop-performance
|
||||
- rubocop-rake
|
||||
- rubocop-rspec
|
||||
- ./rubocop/jekyll
|
||||
|
||||
Jekyll/NoPutsAllowed:
|
||||
@@ -10,7 +13,7 @@ Jekyll/NoPutsAllowed:
|
||||
- rake/*.rake
|
||||
|
||||
AllCops:
|
||||
TargetRubyVersion: 2.4
|
||||
TargetRubyVersion: 2.7
|
||||
Include:
|
||||
- lib/**/*.rb
|
||||
- test/**/*.rb
|
||||
@@ -22,20 +25,24 @@ AllCops:
|
||||
- vendor/**/*
|
||||
- tmp/**/*
|
||||
|
||||
Gemspec/DateAssignment:
|
||||
Enabled: true
|
||||
Layout/BeginEndAlignment:
|
||||
Enabled: true
|
||||
Layout/EmptyComment:
|
||||
Enabled: false
|
||||
Layout/EmptyLinesAroundAttributeAccessor:
|
||||
Enabled: true
|
||||
Layout/EndAlignment:
|
||||
Severity: error
|
||||
Layout/HashAlignment:
|
||||
EnforcedHashRocketStyle: table
|
||||
Layout/IndentationWidth:
|
||||
Severity: error
|
||||
Layout/FirstArrayElementIndentation:
|
||||
EnforcedStyle: consistent
|
||||
Layout/FirstHashElementIndentation:
|
||||
EnforcedStyle: consistent
|
||||
Layout/HashAlignment:
|
||||
EnforcedHashRocketStyle: table
|
||||
Layout/IndentationWidth:
|
||||
Severity: error
|
||||
Layout/LineLength:
|
||||
Exclude:
|
||||
- !ruby/regexp /features\/.*.rb/
|
||||
@@ -50,24 +57,104 @@ Layout/MultilineOperationIndentation:
|
||||
EnforcedStyle: indented
|
||||
Layout/SpaceAroundMethodCallOperator:
|
||||
Enabled: true
|
||||
Layout/SpaceBeforeBrackets:
|
||||
Enabled: true
|
||||
Layout/SpaceInsideHashLiteralBraces:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- test/**/*.rb
|
||||
|
||||
Lint/AmbiguousAssignment:
|
||||
Enabled: true
|
||||
Lint/BinaryOperatorWithIdenticalOperands:
|
||||
Enabled: true
|
||||
Lint/ConstantDefinitionInBlock:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- test/**/*.rb
|
||||
Lint/DeprecatedConstants:
|
||||
Enabled: true
|
||||
Lint/DeprecatedOpenSSLConstant:
|
||||
Enabled: true
|
||||
Lint/DuplicateBranch:
|
||||
Enabled: true
|
||||
Lint/DuplicateElsifCondition:
|
||||
Enabled: true
|
||||
Lint/DuplicateRegexpCharacterClassElement:
|
||||
Enabled: true
|
||||
Lint/DuplicateRequire:
|
||||
Enabled: true
|
||||
Lint/DuplicateRescueException:
|
||||
Enabled: true
|
||||
Lint/EmptyBlock:
|
||||
Enabled: true
|
||||
Lint/EmptyClass:
|
||||
Enabled: true
|
||||
Lint/EmptyConditionalBody:
|
||||
Enabled: true
|
||||
Lint/EmptyFile:
|
||||
Enabled: true
|
||||
Lint/FloatComparison:
|
||||
Enabled: true
|
||||
Lint/HashCompareByIdentity:
|
||||
Enabled: true
|
||||
Lint/IdentityComparison:
|
||||
Enabled: true
|
||||
Lint/LambdaWithoutLiteralBlock:
|
||||
Enabled: true
|
||||
Lint/MissingSuper:
|
||||
Enabled: false
|
||||
Lint/MixedRegexpCaptureTypes:
|
||||
Enabled: false
|
||||
Lint/NestedPercentLiteral:
|
||||
Exclude:
|
||||
- test/test_site.rb
|
||||
Lint/DeprecatedOpenSSLConstant:
|
||||
Lint/NoReturnInBeginEndBlocks:
|
||||
Enabled: true
|
||||
Lint/NumberedParameterAssignment:
|
||||
Enabled: true
|
||||
Lint/OrAssignmentToConstant:
|
||||
Enabled: true
|
||||
Lint/OutOfRangeRegexpRef:
|
||||
Enabled: true
|
||||
Lint/RaiseException:
|
||||
Enabled: true
|
||||
Lint/RedundantDirGlobSort:
|
||||
Enabled: true
|
||||
Lint/RedundantSafeNavigation:
|
||||
Enabled: true
|
||||
Lint/SelfAssignment:
|
||||
Enabled: true
|
||||
Lint/StructNewOverride:
|
||||
Enabled: true
|
||||
Lint/SymbolConversion:
|
||||
Enabled: true
|
||||
Lint/ToEnumArguments:
|
||||
Enabled: false
|
||||
Lint/TopLevelReturnWithArgument:
|
||||
Enabled: true
|
||||
Lint/TrailingCommaInAttributeDeclaration:
|
||||
Enabled: true
|
||||
Lint/TripleQuotes:
|
||||
Enabled: true
|
||||
Lint/UnexpectedBlockArity:
|
||||
Enabled: true
|
||||
Lint/UnmodifiedReduceAccumulator:
|
||||
Enabled: true
|
||||
Lint/UnreachableCode:
|
||||
Severity: error
|
||||
Lint/UnreachableLoop:
|
||||
Enabled: true
|
||||
Lint/UselessMethodDefinition:
|
||||
Enabled: true
|
||||
Lint/UselessTimes:
|
||||
Enabled: true
|
||||
Lint/Void:
|
||||
Exclude:
|
||||
- lib/jekyll/site.rb
|
||||
|
||||
Metrics/AbcSize:
|
||||
Max: 21
|
||||
Max: 23
|
||||
Metrics/BlockLength:
|
||||
Exclude:
|
||||
- test/**/*.rb
|
||||
@@ -86,18 +173,48 @@ Metrics/CyclomaticComplexity:
|
||||
Exclude:
|
||||
- lib/jekyll/utils.rb
|
||||
- lib/jekyll/commands/serve.rb
|
||||
Max: 11
|
||||
Metrics/MethodLength:
|
||||
CountComments: false
|
||||
Max: 20
|
||||
Severity: error
|
||||
Metrics/ModuleLength:
|
||||
Max: 240
|
||||
Exclude:
|
||||
- lib/jekyll/filters.rb
|
||||
Max: 240
|
||||
Metrics/ParameterLists:
|
||||
Max: 4
|
||||
Metrics/PerceivedComplexity:
|
||||
Max: 8
|
||||
Max: 13
|
||||
|
||||
Minitest/AssertInDelta:
|
||||
Enabled: true
|
||||
Minitest/AssertionInLifecycleHook:
|
||||
Enabled: true
|
||||
Minitest/AssertKindOf:
|
||||
Enabled: true
|
||||
Minitest/AssertOutput:
|
||||
Enabled: true
|
||||
Minitest/AssertPathExists:
|
||||
Enabled: true
|
||||
Minitest/AssertSilent:
|
||||
Enabled: true
|
||||
Minitest/LiteralAsActualArgument:
|
||||
Enabled: true
|
||||
Minitest/TestMethodName:
|
||||
Enabled: false
|
||||
Minitest/MultipleAssertions:
|
||||
Enabled: true
|
||||
Minitest/RefuteInDelta:
|
||||
Enabled: true
|
||||
Minitest/RefuteKindOf:
|
||||
Enabled: true
|
||||
Minitest/RefutePathExists:
|
||||
Enabled: true
|
||||
Minitest/UnspecifiedException:
|
||||
Enabled: true
|
||||
Minitest/AssertEmptyLiteral:
|
||||
Enabled: false
|
||||
|
||||
Naming/FileName:
|
||||
Enabled: false
|
||||
@@ -111,6 +228,39 @@ Naming/MemoizedInstanceVariableName:
|
||||
- lib/jekyll/drops/unified_payload_drop.rb
|
||||
- lib/jekyll/page_without_a_file.rb
|
||||
|
||||
Performance/AncestorsInclude:
|
||||
Enabled: false
|
||||
Performance/ArraySemiInfiniteRangeSlice:
|
||||
Enabled: true
|
||||
Performance/BigDecimalWithNumericArgument:
|
||||
Enabled: true
|
||||
Performance/BlockGivenWithExplicitBlock:
|
||||
Enabled: true
|
||||
Performance/ChainArrayAllocation:
|
||||
Enabled: true
|
||||
Performance/CollectionLiteralInLoop:
|
||||
Enabled: true
|
||||
Performance/ConstantRegexp:
|
||||
Enabled: true
|
||||
Performance/MethodObjectAsBlock:
|
||||
Enabled: true
|
||||
Performance/RedundantSortBlock:
|
||||
Enabled: true
|
||||
Performance/RedundantStringChars:
|
||||
Enabled: true
|
||||
Performance/ReverseFirst:
|
||||
Enabled: true
|
||||
Performance/SortReverse:
|
||||
Enabled: false
|
||||
Performance/Squeeze:
|
||||
Enabled: true
|
||||
Performance/StringInclude:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- lib/jekyll/utils/platforms.rb
|
||||
Performance/Sum:
|
||||
Enabled: true
|
||||
|
||||
Security/MarshalLoad:
|
||||
Exclude:
|
||||
- !ruby/regexp /test\/.*.rb$/
|
||||
@@ -122,17 +272,41 @@ Security/YAMLLoad:
|
||||
|
||||
Style/AccessModifierDeclarations:
|
||||
Enabled: false
|
||||
Style/AccessorGrouping:
|
||||
Enabled: true
|
||||
Style/Alias:
|
||||
EnforcedStyle: prefer_alias_method
|
||||
Style/AndOr:
|
||||
Severity: error
|
||||
Style/ArgumentsForwarding:
|
||||
Enabled: false
|
||||
Style/ArrayCoercion:
|
||||
Enabled: true
|
||||
Style/BisectedAttrAccessor:
|
||||
Enabled: true
|
||||
Style/CaseLikeIf:
|
||||
Enabled: true
|
||||
Style/StringChars:
|
||||
Enabled: true
|
||||
Style/ClassAndModuleChildren:
|
||||
Exclude:
|
||||
- test/**/*.rb
|
||||
Style/ClassEqualityComparison:
|
||||
Enabled: true
|
||||
Style/CollectionCompact:
|
||||
Enabled: true
|
||||
Style/CombinableLoops:
|
||||
Enabled: true
|
||||
Style/DocumentDynamicEvalDefinition:
|
||||
Enabled: true
|
||||
Style/Documentation:
|
||||
Enabled: false
|
||||
Style/DoubleNegation:
|
||||
Enabled: false
|
||||
Style/EndlessMethod:
|
||||
Enabled: true
|
||||
Style/ExplicitBlockArgument:
|
||||
Enabled: false
|
||||
Style/ExponentialNotation:
|
||||
Enabled: true
|
||||
Style/FormatStringToken:
|
||||
@@ -142,10 +316,20 @@ Style/FormatStringToken:
|
||||
- lib/jekyll/profiler.rb
|
||||
Style/FrozenStringLiteralComment:
|
||||
EnforcedStyle: always
|
||||
Style/GlobalStdStream:
|
||||
Enabled: true
|
||||
Style/GuardClause:
|
||||
Enabled: false
|
||||
Style/HashAsLastArrayItem:
|
||||
Enabled: true
|
||||
Style/HashConversion:
|
||||
Enabled: true
|
||||
Style/HashEachMethods:
|
||||
Enabled: true
|
||||
Style/HashExcept:
|
||||
Enabled: true
|
||||
Style/HashLikeCase:
|
||||
Enabled: true
|
||||
Style/HashSyntax:
|
||||
EnforcedStyle: hash_rockets
|
||||
Severity: error
|
||||
@@ -153,6 +337,10 @@ Style/HashTransformKeys:
|
||||
Enabled: false
|
||||
Style/HashTransformValues:
|
||||
Enabled: true
|
||||
Style/IfWithBooleanLiteralBranches:
|
||||
Enabled: true
|
||||
Style/KeywordParametersOrder:
|
||||
Enabled: true
|
||||
Style/MixinUsage:
|
||||
Exclude:
|
||||
- test/helper.rb
|
||||
@@ -160,15 +348,35 @@ Style/ModuleFunction:
|
||||
Enabled: false
|
||||
Style/MultilineTernaryOperator:
|
||||
Severity: error
|
||||
Style/NegatedIfElseCondition:
|
||||
Enabled: true
|
||||
Style/NilLambda:
|
||||
Enabled: true
|
||||
Style/OptionalBooleanParameter:
|
||||
Enabled: true
|
||||
Style/PercentLiteralDelimiters:
|
||||
PreferredDelimiters:
|
||||
"%q": "{}"
|
||||
"%Q": "{}"
|
||||
"%W": ()
|
||||
"%q": "{}"
|
||||
"%r": "!!"
|
||||
"%s": "()"
|
||||
"%w": "()"
|
||||
"%W": "()"
|
||||
"%x": "()"
|
||||
"%s": ()
|
||||
"%w": ()
|
||||
"%x": ()
|
||||
Style/RedundantArgument:
|
||||
Enabled: true
|
||||
Style/RedundantAssignment:
|
||||
Enabled: true
|
||||
Style/RedundantFetchBlock:
|
||||
Enabled: false
|
||||
Style/RedundantFileExtensionInRequire:
|
||||
Enabled: true
|
||||
Style/RedundantRegexpCharacterClass:
|
||||
Enabled: true
|
||||
Style/RedundantRegexpEscape:
|
||||
Enabled: true
|
||||
Style/RedundantSelfAssignment:
|
||||
Enabled: true
|
||||
Style/RegexpLiteral:
|
||||
EnforcedStyle: percent_r
|
||||
Style/RescueModifier:
|
||||
@@ -178,12 +386,23 @@ Style/SafeNavigation:
|
||||
- lib/jekyll/document.rb
|
||||
Style/SignalException:
|
||||
EnforcedStyle: only_raise
|
||||
Style/SingleArgumentDig:
|
||||
Enabled: true
|
||||
Style/SlicingWithRange:
|
||||
Enabled: false
|
||||
Style/SoleNestedConditional:
|
||||
Enabled: true
|
||||
Style/StringConcatenation:
|
||||
Enabled: true
|
||||
Exclude:
|
||||
- lib/jekyll/commands/*.rb
|
||||
- test/**/*.rb
|
||||
Style/StringLiterals:
|
||||
EnforcedStyle: double_quotes
|
||||
Style/StringLiteralsInInterpolation:
|
||||
EnforcedStyle: double_quotes
|
||||
Style/SwapValues:
|
||||
Enabled: true
|
||||
Style/SymbolArray:
|
||||
EnforcedStyle: brackets
|
||||
Style/TrailingCommaInArrayLiteral:
|
||||
|
||||
@@ -1,18 +1,25 @@
|
||||
# This configuration was generated by
|
||||
# `rubocop --auto-gen-config`
|
||||
# on 2020-02-18 23:36:40 +0100 using RuboCop version 0.80.0.
|
||||
# `rubocop --auto-gen-config --auto-gen-only-exclude`
|
||||
# on 2022-04-06 10:48:47 UTC using RuboCop version 1.26.1.
|
||||
# The point is for the user to remove these configuration records
|
||||
# one by one as the offenses are removed from the code base.
|
||||
# Note that changes in the inspected code, or installation of new
|
||||
# versions of RuboCop, may require this file to be generated again.
|
||||
|
||||
# Offense count: 4
|
||||
# Cop supports --auto-correct.
|
||||
# Configuration parameters: AllowForAlignment, EnforcedStyleForExponentOperator.
|
||||
# SupportedStylesForExponentOperator: space, no_space
|
||||
Layout/SpaceAroundOperators:
|
||||
# Offense count: 1
|
||||
# This cop supports safe auto-correction (--auto-correct).
|
||||
Performance/BindCall:
|
||||
Exclude:
|
||||
- 'lib/jekyll/commands/build.rb'
|
||||
- 'lib/jekyll/site.rb'
|
||||
- 'lib/jekyll/tags/include.rb'
|
||||
- 'test/test_configuration.rb'
|
||||
- 'test/helper.rb'
|
||||
|
||||
# Offense count: 1
|
||||
Style/CombinableLoops:
|
||||
Exclude:
|
||||
- 'lib/jekyll/tags/post_url.rb'
|
||||
|
||||
# Offense count: 1
|
||||
# Configuration parameters: AllowedMethods.
|
||||
# AllowedMethods: respond_to_missing?
|
||||
Style/OptionalBooleanParameter:
|
||||
Exclude:
|
||||
- 'lib/jekyll/log_adapter.rb'
|
||||
|
||||
58
.travis.yml
58
.travis.yml
@@ -1,58 +0,0 @@
|
||||
bundler_args: --without benchmark:development
|
||||
script: script/cibuild
|
||||
cache: bundler
|
||||
language: ruby
|
||||
|
||||
rvm:
|
||||
- &ruby1 2.7.1
|
||||
- &ruby2 2.5.8
|
||||
- &jruby jruby-9.2.11.1
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- rvm: *ruby1
|
||||
env: TEST_SUITE=fmt
|
||||
name: "🤖️ Code Format"
|
||||
- rvm: *ruby1
|
||||
env: TEST_SUITE=default-site
|
||||
name: "🏠️ Default Site"
|
||||
- rvm: *ruby1
|
||||
env: TEST_SUITE=profile-docs
|
||||
name: "Profile Docs"
|
||||
- rvm: *ruby2
|
||||
env: TEST_SUITE=memprof
|
||||
name: "Profile Memory Allocation"
|
||||
exclude:
|
||||
- rvm: *jruby
|
||||
env: TEST_SUITE=cucumber
|
||||
|
||||
env:
|
||||
matrix:
|
||||
- TEST_SUITE=test
|
||||
- TEST_SUITE=cucumber
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- themes
|
||||
- /.*-stable/
|
||||
|
||||
before_script:
|
||||
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
||||
- chmod +x ./cc-test-reporter
|
||||
- ./cc-test-reporter before-build
|
||||
|
||||
after_script:
|
||||
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
slack:
|
||||
secure: "\
|
||||
dNdKk6nahNURIUbO3ULhA09/vTEQjK0fNbgjVjeYPEvROHgQBP1cIP3AJy8aWs8rl5Yyow4Y\
|
||||
GEilNRzKPz18AsFptVXofpwyqcBxaCfmHP809NX5PHBaadydveLm+TNVao2XeLXSWu+HUNAY\
|
||||
O1AanCUbJSEyJTju347xCBGzESU=\
|
||||
"
|
||||
|
||||
before_install:
|
||||
- gem update --system --no-document
|
||||
- gem install bundler --no-document
|
||||
49
Earthfile
Normal file
49
Earthfile
Normal file
@@ -0,0 +1,49 @@
|
||||
FROM alpine
|
||||
|
||||
# Run locally: `earthly +all` to run full CI process
|
||||
all:
|
||||
BUILD --build-arg RUBY=3.0 +test
|
||||
BUILD --build-arg RUBY=2.7 +test
|
||||
BUILD --build-arg RUBY=2.5 +test
|
||||
BUILD --build-arg RUBY=jruby:9.2.14.0 +test
|
||||
BUILD style-check
|
||||
BUILD profile-docs
|
||||
|
||||
# Run locally: `earthly +test`
|
||||
# Run with specific version: `earthly --build-arg RUBY=2.5 +test`
|
||||
test:
|
||||
FROM +deps
|
||||
RUN script/test
|
||||
RUN script/cucumber
|
||||
RUN script/default-site
|
||||
|
||||
style-check:
|
||||
FROM +deps
|
||||
RUN script/fmt
|
||||
|
||||
profile-docs:
|
||||
FROM +deps
|
||||
RUN bundle install --jobs 4
|
||||
RUN script/profile-docs
|
||||
RUN script/memprof
|
||||
|
||||
# Install dependencies and copy in source
|
||||
# used in above steps
|
||||
deps:
|
||||
ARG RUBY=3.0
|
||||
IF case $RUBY in jruby*) ;; *) false; esac
|
||||
FROM $RUBY
|
||||
ENV JRUBY_OPTS="--dev -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-XX:CompileThreshold=10 -J-XX:ReservedCodeCacheSize=128M"
|
||||
ELSE
|
||||
FROM ruby:$RUBY
|
||||
END
|
||||
WORKDIR /src
|
||||
RUN apt-get update && apt-get install nodejs dnsutils git make coreutils g++ build-essential -y
|
||||
RUN gem install bundler
|
||||
RUN gem install sassc -v '2.4.0' --source 'https://rubygems.org/'
|
||||
COPY Gemfile .
|
||||
COPY jekyll.gemspec .
|
||||
COPY lib/jekyll/version.rb lib/jekyll/version.rb
|
||||
COPY test test
|
||||
RUN bundle install --jobs 4
|
||||
COPY . .
|
||||
24
Gemfile
24
Gemfile
@@ -5,6 +5,10 @@ gemspec :name => "jekyll"
|
||||
|
||||
gem "rake", "~> 13.0"
|
||||
|
||||
if ENV["LIQUID_VERSION"] && ENV["LIQUID_VERSION"] != ""
|
||||
gem "liquid", ENV["LIQUID_VERSION"]
|
||||
end
|
||||
|
||||
group :development do
|
||||
gem "launchy", "~> 2.3"
|
||||
gem "pry"
|
||||
@@ -15,7 +19,7 @@ end
|
||||
#
|
||||
|
||||
group :test do
|
||||
gem "cucumber", "~> 3.0"
|
||||
gem "cucumber", RUBY_VERSION >= "2.5" ? "~> 5.1.2" : "~> 4.1"
|
||||
gem "httpclient"
|
||||
gem "jekyll_test_plugin"
|
||||
gem "jekyll_test_plugin_malicious"
|
||||
@@ -23,14 +27,21 @@ group :test do
|
||||
gem "nokogiri", "~> 1.7"
|
||||
gem "rspec"
|
||||
gem "rspec-mocks"
|
||||
gem "rubocop", "~> 0.84.0"
|
||||
gem "rubocop", "~> 1.26.0"
|
||||
gem "rubocop-minitest"
|
||||
gem "rubocop-performance"
|
||||
gem "rubocop-rake"
|
||||
gem "rubocop-rspec"
|
||||
gem "test-dependency-theme", :path => File.expand_path("test/fixtures/test-dependency-theme", __dir__)
|
||||
gem "test-theme", :path => File.expand_path("test/fixtures/test-theme", __dir__)
|
||||
gem "test-theme-skinny", :path => File.expand_path("test/fixtures/test-theme-skinny", __dir__)
|
||||
gem "test-theme-symlink", :path => File.expand_path("test/fixtures/test-theme-symlink", __dir__)
|
||||
gem "test-theme-w-empty-data", :path => File.expand_path("test/fixtures/test-theme-w-empty-data", __dir__)
|
||||
|
||||
gem "jruby-openssl" if RUBY_ENGINE == "jruby"
|
||||
if RUBY_ENGINE == "jruby"
|
||||
gem "http_parser.rb", "~> 0.6.0"
|
||||
gem "jruby-openssl"
|
||||
end
|
||||
end
|
||||
|
||||
#
|
||||
@@ -66,9 +77,10 @@ group :jekyll_optional_dependencies do
|
||||
gem "jekyll-paginate"
|
||||
gem "jekyll-redirect-from"
|
||||
gem "kramdown-syntax-coderay"
|
||||
gem "matrix"
|
||||
gem "mime-types", "~> 3.0"
|
||||
gem "rdoc", "~> 6.0"
|
||||
gem "tomlrb", "~> 1.2"
|
||||
gem "rdoc", "~> 6.3.0"
|
||||
gem "tomlrb"
|
||||
|
||||
platforms :ruby, :mswin, :mingw, :x64_mingw do
|
||||
gem "classifier-reborn", "~> 2.2"
|
||||
@@ -79,7 +91,7 @@ group :jekyll_optional_dependencies do
|
||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
# and associated library
|
||||
platforms :jruby, :mswin, :mingw, :x64_mingw do
|
||||
gem "tzinfo", "~> 1.2"
|
||||
gem "tzinfo", ENV["TZINFO_VERSION"] if ENV["TZINFO_VERSION"]
|
||||
gem "tzinfo-data"
|
||||
end
|
||||
end
|
||||
|
||||
341
History.markdown
341
History.markdown
@@ -1,3 +1,282 @@
|
||||
## HEAD
|
||||
|
||||
* Bump check-spelling/check-spelling from 0.0.18 to 0.0.19 (#8740)
|
||||
|
||||
### Documentation
|
||||
|
||||
* typo - do instead of don't (#8518)
|
||||
* Document support for TSV files consistently (#8488)
|
||||
* Add a disclaimer to tutorials involving Ruby code (#8525)
|
||||
* Improve documentation on developing generators (#8527)
|
||||
* Fixes typo in layouts_dir documentation (#8532)
|
||||
* Fix i.e. typos in collections.md (#8529)
|
||||
* Remove GitHub Pages content which is in GitHub docs (#8533)
|
||||
* Step By Step Instructions Review (#8399)
|
||||
* Fix typo in migrating from 3.0 to 4.0 page (#8572)
|
||||
* Fix for important missing step in macOS Installation Docs: Add the Homebrew gems directory to the PATH (#8496)
|
||||
* Use latest Jekyll-action configuration (#8579)
|
||||
* docs: troubleshoot macOS with ARM64 architecture (#8560)
|
||||
* docs: add overview of .jekyll-cache dir (#8648)
|
||||
* docs: clarify where .jekyll-metadata comes from (#8646)
|
||||
* Razorops cicd added (#8656)
|
||||
* Specify default port and host for serve commands in docs (#8624)
|
||||
* Update third-party.md (#8652)
|
||||
* Add documentation for Sass configuration options (#8587)
|
||||
* Add formcarry to forms section (#8471)
|
||||
* Add step to set SDKROOT (#8478)
|
||||
* Improve the "Markdown Options" Docs (#8681)
|
||||
* Add 'webrick' warning note to "Quickstart" Docs (#8727)
|
||||
* Update windows.md (#8701)
|
||||
* IRC networks - Libera, Freenode (#8706)
|
||||
* Improve GitHub Flavored Markdown Docs (#8684)
|
||||
* Fixing URL in MacOS install for rbenv-doctor (#8693)
|
||||
* Fix adjective in `troubleshooting.md` document (#8777)
|
||||
* Goodbye Frank. We'll miss you. 💔 (#8807)
|
||||
* Update index.html: Grammar fix. (#8803)
|
||||
* Prefer Libera. Remove Freenode. (#8811)
|
||||
* Update feature_request.md (#8797)
|
||||
* Remove AWS Amplify from the showcase (#8812)
|
||||
* Move Frank to Emeritus Core Team Members (#8813)
|
||||
* Release post for v4.2.1 (#8818)
|
||||
* Update CircleCI example (#8829)
|
||||
* Fix typo (#8835)
|
||||
* Added docs for running locally (#8852)
|
||||
* Linting README.markdown (#8900)
|
||||
* Remove text on GITHUB_TOKEN which is now built-in (#8907)
|
||||
* Add Security Policy document (#8823)
|
||||
* Manage repository meta documents consistently (#8908)
|
||||
* docs: add Layer0 deployment guide (#8915)
|
||||
* docs: Update REAMDE generated by `jekyll new-theme` (#8919)
|
||||
* Update resources.md (#8925)
|
||||
* Rewrite documentation on installing plugins (#8921)
|
||||
* Improve maintainers guide on releasing a new version (#8928)
|
||||
* Fix link for "CloudSh" (#8934)
|
||||
* Recommend using `actions/cache` in GitHub Actions documentation (#8948)
|
||||
* Remove references to EOL hakiri.io service (#8946)
|
||||
* Release post for v4.2.2 (#8982)
|
||||
* Document releasing off `*-stable` branches (#8984)
|
||||
* Update document by fix yaml syntax error (#8991)
|
||||
* Enhance option's case for Jekyll configuration (#8992)
|
||||
* Fix typo in `_docs/deployment/manual.md` (#8997)
|
||||
* Add quiet/verbose options (#8996)
|
||||
* Update README.markdown re IRC Pointer (#9005)
|
||||
* Remove Aerobatic (#9007)
|
||||
* Add Jekyll 3.9.2 release post to 'master' branch (#9013)
|
||||
* Simplify macOS installation docs (#8993)
|
||||
* Improve document about Github Actions section (#8853)
|
||||
* Update permalinks.md (#9017)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Add webrick as a dependency (#8524)
|
||||
* fix: pin rubocop to 1.12 due to error with ruby 2.4 (#8651)
|
||||
* Load Jekyll plugins from BUNDLE_GEMFILE location (#8585)
|
||||
* fix(security): CVE-2021-28834 (#8680)
|
||||
* Inject livereload script using `location.protocol` instead of `http:` (#8718)
|
||||
* Respect collections_dir config within include tag (#8756)
|
||||
* Fix regression in Convertible module from v4.2.0 (#8786)
|
||||
* Revert #7253: "Don't reset site.url to localhost:4000 by default" (#8620)
|
||||
* Improve readability of CI logs (#8877)
|
||||
* Fix deprecation message for missing doc method (#8960)
|
||||
* Fix response header for content served via `jekyll serve` (#8965)
|
||||
* Trigger livereload in sites without pages (#8337)
|
||||
* Only enable BOM encoding option on UTF encodings (#8363)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* style: enable new cops (#8538)
|
||||
* Allow dependabot to keep github actions up-to-date (#8540)
|
||||
* Update actions/cache requirement to v2.1.3 (#8543)
|
||||
* Pin rubocop version (#8564)
|
||||
* style: add rubocop 1.9 cops (#8567)
|
||||
* Cross Version Testing Locally and Faster CI (#8610)
|
||||
* Use official Ruby setup GH action (#8614)
|
||||
* Spell check action for markdown documentation (#8675)
|
||||
* Update expect to cover docs/_posts (#8677)
|
||||
* Enable Rubocop accessor grouping, fix existing offenses (#8293)
|
||||
* Tags:Highlight: Decomposed HTMLLegacy formatter (#8623)
|
||||
* Relax Rubocop Dependency (#8831)
|
||||
* Add a workflow to build gems consistently (#8830)
|
||||
* Fix random test failures in TestExcerpt #to_liquid (#8884)
|
||||
* Lock gem `psych` to `v3.x` (#8918)
|
||||
* Fix typo in Bug Report template (#8951)
|
||||
* Check symlink outside site_source without Pathutil (#9015)
|
||||
* Stop testing with Rubies older than 2.7 on non-Windows (#8955)
|
||||
* Bump actions/checkout from 2 to 3 (#8986)
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* Regenerate supported mime types (#8542)
|
||||
* Update include tag to be more permissive (#8618)
|
||||
* Optimize `Jekyll::Utils.parse_date` (#8425)
|
||||
* Update rubocop from 1.12 to 1.18 and min ruby from 2.4 to 2.5 (#8741)
|
||||
* Always hide cache-dir contents from Git (#8798)
|
||||
* Remove the warning about auto-regeneration on Windows (#8821)
|
||||
* Propagate _data folder from theme (#8815)
|
||||
* Support both tzinfo v1 and v2 alongwith non-half hour offsets. (#8880)
|
||||
* Run vendor-mimes to update mime.types (#8940)
|
||||
* Expose collection static files via `site.static_files` (#8961)
|
||||
* Expose `basename` from `document.rb` as `name` to Liquid templates (#8761)
|
||||
* Allow Configurable Converters on CSV (#8858)
|
||||
|
||||
### Site Enhancements
|
||||
|
||||
* Improvements to CSS (#7834)
|
||||
* Slightly update lang `sh` code-block styling (#8857)
|
||||
|
||||
## 4.2.2 / 2022-03-03
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Lock `http_parser.rb` gem to `v0.6.x` on JRuby.
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Backport #8830 for v4.2.x: Add a workflow to build gems consistently (#8869)
|
||||
* Lock `rubocop-performance` to `v1.11.x`.
|
||||
|
||||
## 4.2.1 / 2021-09-27
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Backport #8620 for v4.2.x: Revert #7253: "Don't reset site.url to localhost:4000 by default" (#8808)
|
||||
* Backport #8756 for v4.2.x: Respect collections_dir config within include tag (#8794)
|
||||
* Backport #8786 for v4.2.x: Fix regression in Convertible module from v4.2.0 (#8793)
|
||||
|
||||
## 4.2.0 / 2020-12-14
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* Warn on command-line with permalink conflict (#8342)
|
||||
* Suppress warning issued for redirect pages (#8347)
|
||||
* Enhance detection of conflicting destination URLs (#8459)
|
||||
* Add `:post_convert` hook to modify HTML content before layout (#8368)
|
||||
* Allow triggering `:post_convert` events atomically (#8465)
|
||||
* Debug reading Page and Layout objects (#8100)
|
||||
* Do not reset `site.url` to `http://localhost:4000` by default (#7253)
|
||||
* Add custom debug strings for Jekyll objects (#8473)
|
||||
* Debug reading data files in a site (#8481)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Replace nested conditional with guard clauses (#8294)
|
||||
* Fix: security bump (#8349)
|
||||
* Fix path matching regex in post_url Liquid tag (#8375)
|
||||
* Enable `Performance/ChainArrayAllocation` cop (#8404)
|
||||
* Enable Lint/NoReturnInBeginEndBlocks Cop (#8457)
|
||||
* Generate items from `site.include` list only once (#8463)
|
||||
* Explicitly return nil after site process phase (#8472)
|
||||
|
||||
### Optimization Fixes
|
||||
|
||||
* Implement custom delegators for drop methods (#8183)
|
||||
* Handle `nil` argument to `Jekyll.sanitized_path` (#8415)
|
||||
* Cache `Jekyll.sanitized_path` (#8424)
|
||||
* Memoize array of drop getter method names (#8421)
|
||||
* Reduce string allocations from the `link` tag (#8387)
|
||||
* Optimize parsing of parameters in `include` tag (#8192)
|
||||
* Stash documents `write?` attribute in a variable (#8389)
|
||||
* Reduce string allocations from generating doc URLs (#8392)
|
||||
* Check if site is in incremental mode optimally (#8401)
|
||||
* Utilize flexibility of `Site#in_dest_dir` (#8403)
|
||||
* Reduce allocations from rendering item as liquid (#8406)
|
||||
* Compute relative_path of pages using PathManager (#8408)
|
||||
* Reduce allocation from `normalize_whitespace` filter (#8400)
|
||||
* Use `Regexp#match?` when `MatchData` is not required (#8427)
|
||||
* Check default front matter scope against symbols (#8393)
|
||||
* Stash frequently used `Drop` setter keys for reuse (#8394)
|
||||
* Memoize defaults computed for Convertibles (#8451)
|
||||
* Reduce array allocations from merging categories (#8453)
|
||||
* Memoize destination of pages, documents and staticfiles (#8458)
|
||||
* Reduce allocations from computing item property (#8485)
|
||||
* Optimize `Page#dir` with a private method (#8489)
|
||||
* Stash attribute hash for Liquid computed for pages (#8497)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Update cucumber gem to version 4.1 (#8278)
|
||||
* Move permalink styles data to constant (#8282)
|
||||
* Update rubocop gem to 0.87.1 (#8287)
|
||||
* Update RuboCop to-do file (#8296)
|
||||
* Fix `rake console` generating LoadError (#8312)
|
||||
* Configure Performance cops (#8369)
|
||||
* Update rubocop gem to 0.90.0 (#8313)
|
||||
* Refactor `Jekyll::Utils::Platforms` (#7236)
|
||||
* Bump RuboCop to v0.91.x (#8391)
|
||||
* Add workflow to build and profile third-party repo (#8398)
|
||||
* Bump RuboCop to v0.92.x
|
||||
* Update cucumber gem version to 5.1.2 (#8413)
|
||||
* Fix test suite compatibility with JRuby (#8418)
|
||||
* chore(deps): bump Rubocop to 0.93.0 (#8430)
|
||||
* Use Ruby 2.7.1 in GitHub Actions (#8444)
|
||||
* Test that Liquid expressions are not deeply evaled (#8292)
|
||||
* Test rendering arbitrary Liquid variables by default (#7414)
|
||||
* Migrate TravisCI jobs to GitHub Actions (#8492)
|
||||
|
||||
### Documentation
|
||||
|
||||
* Update pointer to special permalink variables for collections (#8274)
|
||||
* Fix special treatment for 'page 1' in docs of pagination (#8230)
|
||||
* Add Formcake to forms section (#8283)
|
||||
* Add a note on the rendering process in the docs (#8291)
|
||||
* Add refactoring type to PULL_REQUEST_TEMPLATE (#8297)
|
||||
* Update resources.md (#7864)
|
||||
* Extra apostrophes in an URL (#8319)
|
||||
* Clarify target of subordinate clause (#8320)
|
||||
* Cherry-pick commits from conflicting branch `docs-40`
|
||||
* Update documentation on third party site (#8352)
|
||||
* Update default.md with info requested in #8314 (#8353)
|
||||
* Clarify description of `safe` option (#8354)
|
||||
* Simplifying the Git post-receive hook-example (#8358)
|
||||
* Add missing doc for build and serve commands (#8365)
|
||||
* Docs Review: Getting Started (#8372)
|
||||
* Add note about rebooting system after installation (#8359)
|
||||
* Use data file to render table at `/docs/configuration/options/#global-configuration` (#8377)
|
||||
* Use data file(s) to render table(s) at `/docs/configuration/options/` (#8380)
|
||||
* Improve maintainability of config option data (#8383)
|
||||
* Remove CircleCI v1 docs (#8410)
|
||||
* Remove `NOKOGIRI_USE_SYSTEM_LIBRARIES` from Travis CI docs (#8409)
|
||||
* Add links to all Jekyll themes on GitHub tagged with #jekyll-theme (#8447)
|
||||
* Document initializing project Gemfile from scratch (#8450)
|
||||
* Document installation of additional dependencies for installing Jekyll on Fedora (#8456)
|
||||
* Improve documentation on Hooks in Jekyll (#8467)
|
||||
* Build docs site with GitHub Actions (#8201)
|
||||
* Add link to Assets page from `_sass` section in `_docs/structure.md` (#8486)
|
||||
|
||||
### Site Enhancements
|
||||
|
||||
* Fix rendering of *showcase* images (#8504)
|
||||
|
||||
## 4.1.1 / 2020-06-24
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Disable page excerpts by default (#8222)
|
||||
* Revert introduction of PageDrop (#8221)
|
||||
* Don't generate excerpts for non-html pages (#8234)
|
||||
* Make page excerpts consistent with doc excerpts (#8236)
|
||||
|
||||
### Documentation
|
||||
|
||||
* Replace deprecated 'show' command with 'info' (#8235)
|
||||
* Change name to ▲Vercel (#8247)
|
||||
* Add language and examples to describe how to use the configuration op… (#8249)
|
||||
* Fix missing yaml front matter colon and adjust/add clarifying language. (#8250)
|
||||
* correct typo (#8261)
|
||||
* Allow hyperlinks to specific filter documentation (#8231)
|
||||
* Update link to Netlify step-by-step guide (#8264)
|
||||
* Fix grammar in documentation section (#8265)
|
||||
|
||||
### Site Enhancements
|
||||
|
||||
* Including correct Sketch website (#8241)
|
||||
* Release post for v4.1.1 (#8243)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Bump RuboCop to v0.85.x (#8223)
|
||||
* Expect drive letter only on vanilla windows (#8227)
|
||||
|
||||
## 4.1.0 / 2020-05-27
|
||||
|
||||
### Bug Fixes
|
||||
@@ -113,7 +392,7 @@
|
||||
* Fix typo in documentation on GitHub Actions (#8162)
|
||||
* Ease discovery of CLI commands (in their entirety) (#8178)
|
||||
* Remove `sudo` from Travis CI tutorial (#8187)
|
||||
* Add Gitlab Pages to 3rd party list (#8191)
|
||||
* Add GitLab Pages to 3rd party list (#8191)
|
||||
* docs: add 21yunbox for deployment (#8193)
|
||||
* Improve documentation on tags and categories (#8196)
|
||||
|
||||
@@ -160,6 +439,32 @@
|
||||
|
||||
* Fix Kramdown converter based tests for v4.0.x (#8143)
|
||||
|
||||
## 3.9.2 / 2022-03-27
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Lock `http_parser.rb` gem to `v0.6.x` on JRuby (#8943)
|
||||
* Backport #8756 for v3.9.x: Respect collections_dir config within include tag (#8795)
|
||||
* Backport #8965 for v3.9.x: Fix response header for content served via `jekyll serve` (#8976)
|
||||
|
||||
### Development Fixes
|
||||
|
||||
* Update and fix CI for `3.9-stable` on Ruby 3.x (#8942)
|
||||
* Fix CI for commits to `3.9-stable` branch (#8788)
|
||||
|
||||
## 3.9.1 / 2021-04-08
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Backport #8618 for v3.9.x: Update include tag to be more permissive (#8629)
|
||||
|
||||
## 3.9.0 / 2020-08-05
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* Allow use of kramdown v2 (#8322)
|
||||
* Add default language for kramdown syntax highlighting (#8325)
|
||||
|
||||
## 3.8.7 / 2020-05-08
|
||||
|
||||
### Bug Fixes
|
||||
@@ -416,7 +721,7 @@
|
||||
* Remove alt attribute from a tags (#7407)
|
||||
* Fix BASH code-block in ubuntu.md (#7420)
|
||||
* zlib is missing (#7428)
|
||||
* Fixed unnecessary aticles and pronouns (#7466)
|
||||
* Fixed unnecessary articles and pronouns (#7466)
|
||||
* Store SSL key and cert in site source (#7473)
|
||||
* Fix typo in tutorial for converting existing site (#7524)
|
||||
* Check if var exists before include tag (#7530)
|
||||
@@ -431,7 +736,7 @@
|
||||
* fix link to Site Source config (#7708)
|
||||
* Introduce frontmatter in step 2 (#7704)
|
||||
* Add @ashmaroli to Core Team listing (#7398)
|
||||
* Lnk to Tidelift in site's footer (#7377)
|
||||
* Link to Tidelift in site's footer (#7377)
|
||||
* Link to OpenCollective backing (#7378
|
||||
* Link to sponsor listing in README (#7405)
|
||||
* Adjust team page listings (#7395)
|
||||
@@ -582,7 +887,7 @@
|
||||
* doc: add liquid tag plugin jekyll-onebox for html previews (#6898)
|
||||
* Add `jekyll-w2m` to plugins (#6855)
|
||||
* Fix tutorials navigation HTML (#6919)
|
||||
* add Arch Linux instalation troubleshoot (#6782)
|
||||
* add Arch Linux installation troubleshoot (#6782)
|
||||
* Docs: Install Jekyll on macOS (#6881)
|
||||
* Fix CodeClimate badges [ci skip] (#6930)
|
||||
* Update index.md (#6933)
|
||||
@@ -738,7 +1043,7 @@
|
||||
* Fix list appearance by adding missing `ol` tag (#6421)
|
||||
* Explain how to override output collection index page (#6424)
|
||||
* Added github-cards to the list of plugins (#6425)
|
||||
* CoC violation correspondants (#6429)
|
||||
* CoC violation correspondents (#6429)
|
||||
* Add a note about Liquid and syntax highlighting (#6466)
|
||||
* Remove `sudo` from macOS troubleshooting instructions (#6486)
|
||||
* Add a note on `:jekyll_plugins` group in the docs (#6488)
|
||||
@@ -854,7 +1159,7 @@
|
||||
* add SUPPORT file for GitHub (#6324)
|
||||
* Rename CODE_OF_CONDUCT to show in banner (#6325)
|
||||
* Docs : illustrate page.id for a collection's document (#6329)
|
||||
* Docs: post's date can be overriden in front matter (#6334)
|
||||
* Docs: post's date can be overridden in front matter (#6334)
|
||||
* Docs: `site.url` behavior on development and production environments (#6270)
|
||||
* Fix typo in site.url section of variables.md :-[ (#6337)
|
||||
* Docs: updates (#6343)
|
||||
@@ -902,7 +1207,7 @@
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Backward compatiblize URLFilters module (#6163)
|
||||
* Backward compatibilize URLFilters module (#6163)
|
||||
* Static files contain front matter default keys when `to_liquid`'d (#6162)
|
||||
* Always normalize the result of the `relative_url` filter (#6185)
|
||||
|
||||
@@ -1372,7 +1677,7 @@
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
* Stop testing with Ruby 2.0.x, which is EOL'd. (#4381)
|
||||
* Stop testing with Ruby 2.0.x EOL (#4381)
|
||||
* Allow collections to have documents that have no file extension (#4545)
|
||||
* Add size property to `group_by` result (#4557)
|
||||
* Site Template: Removed unnecessary nesting from `_base.scss` (#4637)
|
||||
@@ -1398,7 +1703,7 @@
|
||||
* Add 'jekyll new-theme' command to help users get up and running creating a theme (#4848)
|
||||
* `markdownify` and `smartify` should convert input to string before conversion (#4958)
|
||||
* Run `Site#generate` for 'jekyll doctor' to catch plugin issues (#5005)
|
||||
* Add `normalize_whitepace` filter (#4917)
|
||||
* Add `normalize_whitespace` filter (#4917)
|
||||
* Move bin/jekyll to exe/jekyll to prevent collision with binstubs (#5014)
|
||||
* Cleaning up site template & theme updates. (#4922)
|
||||
* Add fetch method to Drops (#5056)
|
||||
@@ -1447,7 +1752,7 @@
|
||||
* Fix state leakage in Kramdown test (#4618)
|
||||
* Unify method for copying special files from repo to site (#4601)
|
||||
* Refresh the contributing file (#4596)
|
||||
* change smartify doc from copy/paste of mardownify doc (#4653)
|
||||
* change smartify doc from copy/paste of markdownify doc (#4653)
|
||||
* Update Rake & disable warnings when running tests (#4720)
|
||||
* Fix many warnings (#4537)
|
||||
* Don't blindly assume the last system when determining "open" cmd (#4717)
|
||||
@@ -1545,7 +1850,7 @@
|
||||
* Corrected pagination docs for hidden: true feature (#4903)
|
||||
* Remove a Broken Link for Refheap Plugin (#4971)
|
||||
* Instructions on how to install github-gem on Windows (#4975)
|
||||
* Minor tweak to fix missing apostrophne (#4962)
|
||||
* Minor tweak to fix missing apostrophe (#4962)
|
||||
* Instructions on how to install github-gem on Windows (v2) (#4977)
|
||||
* Fix inaccurate HTTP response header field name (#4976)
|
||||
* Add post about GSoC project (#4980)
|
||||
@@ -1553,10 +1858,10 @@
|
||||
* Update normalize.css to v4.0.0. (#4989)
|
||||
* Add jekyll-tags-list-plugin to list of third-party plugins (#5000)
|
||||
* Windows docs: Command needs to be called from blog path (#5006)
|
||||
* Update text to be consitent with example (#5010)
|
||||
* Update text to be consistent with example (#5010)
|
||||
* Update template links to point to core Liquid site (#5012)
|
||||
* Add generator-jekyllized to third-party plugins (#5027)
|
||||
* Add Jekyll Art Hallery generator plugin to list of third-party plugins (#5043)
|
||||
* Add Jekyll Art Gallery generator plugin to list of third-party plugins (#5043)
|
||||
* Add Formingo to the list of Jekyll form SaaS (#5054)
|
||||
* Highlight help nav item when navigated to. (#5058)
|
||||
* Update normalize.css to v4.2.0. (#5096)
|
||||
@@ -1708,9 +2013,9 @@
|
||||
* Reorganize and cleanup the Gemfile, shorten required depends. (#4318)
|
||||
* Remove script/rebund. (#4341)
|
||||
* Implement codeclimate platform (#4340)
|
||||
* Remove ObectSpace dumping and start using inherited, it's faster. (#4342)
|
||||
* Remove ObjectSpace dumping and start using inherited, it's faster. (#4342)
|
||||
* Add script/travis so all people can play with Travis-CI images. (#4338)
|
||||
* Move Cucumber to using RSpec-Expections and furthering JRuby support. (#4343)
|
||||
* Move Cucumber to using RSpec-Expectations and furthering JRuby support. (#4343)
|
||||
* Rearrange Cucumber and add some flair. (#4347)
|
||||
* Remove old FIXME (#4349)
|
||||
* Clean up the Gemfile (and keep all the necessary dependencies) (#4350)
|
||||
@@ -2043,7 +2348,7 @@
|
||||
* Define the `install` step in the CI example `.travis.yml` (#3622)
|
||||
* Expand collections documentation. (#3638)
|
||||
* Add the "warning" note label to excluding `vendor` in the CI docs page (#3623)
|
||||
* Upgrade pieces of the Ugrading guide for Jekyll 3 (#3607)
|
||||
* Upgrade pieces of the Upgrading guide for Jekyll 3 (#3607)
|
||||
* Showing how to access specific data items (#3468)
|
||||
* Clarify pagination works from within HTML files (#3467)
|
||||
* Add note to `excerpt_separator` documentation that it can be set globally (#3667)
|
||||
@@ -3038,7 +3343,7 @@
|
||||
* Add ReadInXMinutes plugin to the plugin list (#1222)
|
||||
* Remove plugins from the plugin list that have equivalents in Jekyll proper (#1223)
|
||||
* Add jekyll-assets to the plugin list (#1225)
|
||||
* Add jekyll-pandoc-mulitple-formats to the plugin list (#1229)
|
||||
* Add jekyll-pandoc-multiple-formats to the plugin list (#1229)
|
||||
* Remove dead link to "Using Git to maintain your blog" (#1227)
|
||||
* Tidy up the third-party plugins listing (#1228)
|
||||
* Update contributor information (#1192)
|
||||
@@ -3191,7 +3496,7 @@
|
||||
* Adds excerpt attribute to posts which contains first paragraph of content (#837)
|
||||
* Accept custom configuration file via CLI (#863)
|
||||
* Load in GitHub Pages MIME Types on `jekyll serve` (#847, #871)
|
||||
* Improve debugability of error message for a malformed highlight tag (#785)
|
||||
* Improve debuggability of error message for a malformed highlight tag (#785)
|
||||
* Allow symlinked files in unsafe mode (#824)
|
||||
* Add 'gist' Liquid tag to core (#822, #861)
|
||||
* New format of Jekyll output (#795)
|
||||
|
||||
@@ -1,19 +1,13 @@
|
||||
# [Jekyll](https://jekyllrb.com/)
|
||||
|
||||
[][ruby-gems]
|
||||
[][travis]
|
||||
[][ci-workflow]
|
||||
[][appveyor]
|
||||
[][codeclimate]
|
||||
[][coverage]
|
||||
[][hakiri]
|
||||
[](#backers)
|
||||
[](#sponsors)
|
||||
|
||||
[ruby-gems]: https://rubygems.org/gems/jekyll
|
||||
[codeclimate]: https://codeclimate.com/github/jekyll/jekyll
|
||||
[coverage]: https://codeclimate.com/github/jekyll/jekyll/coverage
|
||||
[hakiri]: https://hakiri.io/github/jekyll/jekyll/master
|
||||
[travis]: https://travis-ci.org/jekyll/jekyll
|
||||
[ci-workflow]: https://github.com/jekyll/jekyll/actions?query=workflow%3A%22Continuous+Integration%22+branch%3Amaster
|
||||
[appveyor]: https://ci.appveyor.com/project/jekyll/jekyll/branch/master
|
||||
|
||||
Jekyll is a simple, blog-aware, static site generator perfect for personal, project, or organization sites. Think of it like a file-based CMS, without all the complexity. Jekyll takes your content, renders Markdown and Liquid templates, and spits out a complete, static website ready to be served by Apache, Nginx or another web server. Jekyll is the engine behind [GitHub Pages](https://pages.github.com), which you can use to host sites right from your GitHub repositories.
|
||||
@@ -22,7 +16,7 @@ Jekyll is a simple, blog-aware, static site generator perfect for personal, proj
|
||||
|
||||
Jekyll does what you tell it to do — no more, no less. It doesn't try to outsmart users by making bold assumptions, nor does it burden them with needless complexity and configuration. Put simply, Jekyll gets out of your way and allows you to concentrate on what truly matters: your content.
|
||||
|
||||
See: https://jekyllrb.com/philosophy
|
||||
See: [https://jekyllrb.com/philosophy](https://jekyllrb.com/philosophy)
|
||||
|
||||
## Getting Started
|
||||
|
||||
@@ -30,7 +24,7 @@ See: https://jekyllrb.com/philosophy
|
||||
* Read up about its [Usage](https://jekyllrb.com/docs/usage/) and [Configuration](https://jekyllrb.com/docs/configuration/)
|
||||
* Take a gander at some existing [Sites](https://github.com/jekyll/jekyll/wiki/sites)
|
||||
* [Fork](https://github.com/jekyll/jekyll/fork) and [Contribute](https://jekyllrb.com/docs/contributing/) your own modifications
|
||||
* Have questions? Check out our official forum community [Jekyll Talk](https://talk.jekyllrb.com/) or [`#jekyll` on irc.freenode.net](https://botbot.me/freenode/jekyll/)
|
||||
* Have questions? Check out our official forum community [Jekyll Talk](https://talk.jekyllrb.com/) and [`#jekyll` Channel on Libera IRC](https://libera.chat)
|
||||
|
||||
## Diving In
|
||||
|
||||
@@ -49,7 +43,7 @@ If you don't find the answer to your problem in our [docs](https://jekyllrb.com/
|
||||
## Code of Conduct
|
||||
|
||||
In order to have a more open and welcoming community, Jekyll adheres to a
|
||||
[code of conduct](CODE_OF_CONDUCT.markdown) adapted from the Ruby on Rails code of
|
||||
[code of conduct](https://jekyllrb.com/docs/conduct/) adapted from the Ruby on Rails code of
|
||||
conduct.
|
||||
|
||||
Please adhere to this code of conduct in any interactions you have in the
|
||||
@@ -62,28 +56,27 @@ these terms, please let one of our [core team members](https://jekyllrb.com/team
|
||||
### Sponsors
|
||||
|
||||
Support this project by becoming a sponsor. Your logo will show up in this README with a link to your website. [Become a sponsor!](https://opencollective.com/jekyll#sponsor)
|
||||
|
||||
<a href="https://opencollective.com/jekyll/sponsor/0/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/0/avatar.svg" /></a>
|
||||
<a href="https://opencollective.com/jekyll/sponsor/1/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/1/avatar.svg" /></a>
|
||||
<a href="https://opencollective.com/jekyll/sponsor/2/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/2/avatar.svg" /></a>
|
||||
<a href="https://opencollective.com/jekyll/sponsor/3/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/3/avatar.svg" /></a>
|
||||
<a href="https://opencollective.com/jekyll/sponsor/4/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/4/avatar.svg" /></a>
|
||||
<a href="https://opencollective.com/jekyll/sponsor/5/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/5/avatar.svg" /></a>
|
||||
<a href="https://opencollective.com/jekyll/sponsor/6/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/6/avatar.svg" /></a>
|
||||
<a href="https://opencollective.com/jekyll/sponsor/7/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/7/avatar.svg" /></a>
|
||||
<a href="https://opencollective.com/jekyll/sponsor/8/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/8/avatar.svg" /></a>
|
||||
<a href="https://opencollective.com/jekyll/sponsor/9/website" target="_blank"><img src="https://opencollective.com/jekyll/sponsor/9/avatar.svg" /></a>
|
||||
[](https://opencollective.com/jekyll/sponsor/0/website)
|
||||
[](https://opencollective.com/jekyll/sponsor/1/website)
|
||||
[](https://opencollective.com/jekyll/sponsor/2/website)
|
||||
[](https://opencollective.com/jekyll/sponsor/3/website)
|
||||
[](https://opencollective.com/jekyll/sponsor/4/website)
|
||||
[](https://opencollective.com/jekyll/sponsor/5/website)
|
||||
[](https://opencollective.com/jekyll/sponsor/6/website)
|
||||
[](https://opencollective.com/jekyll/sponsor/7/website)
|
||||
[](https://opencollective.com/jekyll/sponsor/8/website)
|
||||
[](https://opencollective.com/jekyll/sponsor/9/website)
|
||||
|
||||
### Contributors
|
||||
|
||||
This project exists thanks to all the people who contribute.
|
||||
<a href="../../graphs/contributors"><img src="https://opencollective.com/jekyll/contributors.svg?width=890&button=false" /></a>
|
||||
[](../../graphs/contributors)
|
||||
|
||||
### Backers
|
||||
|
||||
Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/jekyll#backer)
|
||||
|
||||
<a href="https://opencollective.com/jekyll#backers" target="_blank"><img src="https://opencollective.com/jekyll/backers.svg?width=890" /></a>
|
||||
[](https://opencollective.com/jekyll#backers)
|
||||
|
||||
## License
|
||||
|
||||
|
||||
2
Rakefile
2
Rakefile
@@ -159,5 +159,5 @@ end
|
||||
|
||||
desc "Open an irb session preloaded with this library"
|
||||
task :console do
|
||||
sh "irb -rubygems -r ./lib/#{name}.rb"
|
||||
sh "irb -r ./lib/#{name}.rb"
|
||||
end
|
||||
|
||||
@@ -14,6 +14,10 @@ environment:
|
||||
BUNDLE_WITHOUT: "benchmark:development"
|
||||
matrix:
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TZINFO_VERSION: "~> 1.2"
|
||||
TEST_SUITE: "test"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TZINFO_VERSION: "~> 2.0"
|
||||
TEST_SUITE: "test"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TEST_SUITE: "default-site"
|
||||
@@ -22,6 +26,10 @@ environment:
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TEST_SUITE: "memprof"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TZINFO_VERSION: "~> 1.2"
|
||||
TEST_SUITE: "cucumber"
|
||||
- RUBY_FOLDER_VER: "26"
|
||||
TZINFO_VERSION: "~> 2.0"
|
||||
TEST_SUITE: "cucumber"
|
||||
|
||||
install:
|
||||
|
||||
@@ -34,7 +34,7 @@ puts " #{'where + first'.cyan} results in #{TEMPLATE_1.render(SITE.site_payload
|
||||
puts " #{'find'.cyan} results in #{TEMPLATE_2.render(SITE.site_payload).inspect.green}"
|
||||
|
||||
if TEMPLATE_1.render(SITE.site_payload) == TEMPLATE_2.render(SITE.site_payload)
|
||||
puts 'Success! Procceding to run benchmarks.'.green
|
||||
puts 'Success! Proceeding to run benchmarks.'.green
|
||||
puts ''
|
||||
else
|
||||
puts 'Something went wrong. Aborting.'.magenta
|
||||
|
||||
25
benchmark/parse-date
Executable file
25
benchmark/parse-date
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
require_relative '../lib/jekyll'
|
||||
require 'benchmark/ips'
|
||||
|
||||
date = "2014-08-02 14:43:06 PDT".freeze
|
||||
time = Time.parse(date)
|
||||
|
||||
Benchmark.ips do |x|
|
||||
x.report('Time.parse') do
|
||||
Time.parse(date)
|
||||
end
|
||||
|
||||
x.report('localtime') do
|
||||
Time.parse(date).localtime
|
||||
end
|
||||
|
||||
x.report('localtime parsed') do
|
||||
time.localtime
|
||||
end
|
||||
|
||||
x.report('Utils.parse_date') do
|
||||
Jekyll::Utils.parse_date(date)
|
||||
end
|
||||
end
|
||||
91
benchmark/parse-include-tag-params.rb
Executable file
91
benchmark/parse-include-tag-params.rb
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
# For pull request: https://github.com/jekyll/jekyll/pull/8192
|
||||
|
||||
require 'benchmark/ips'
|
||||
require 'bundler/setup'
|
||||
require 'memory_profiler'
|
||||
require 'jekyll'
|
||||
|
||||
CONTEXT = {"bar"=>"The quick brown fox"}
|
||||
MARKUP_1 = %Q(foo=bar lorem="ipsum \\"dolor\\"" alpha='beta \\'gamma\\'').freeze
|
||||
MARKUP_2 = %Q(foo=bar lorem="ipsum 'dolor'" alpha='beta "gamma"').freeze
|
||||
|
||||
#
|
||||
|
||||
def old_parse_params(markup)
|
||||
params = {}
|
||||
|
||||
while (match = Jekyll::Tags::IncludeTag::VALID_SYNTAX.match(markup))
|
||||
markup = markup[match.end(0)..-1]
|
||||
|
||||
value = if match[2]
|
||||
match[2].gsub('\\"', '"')
|
||||
elsif match[3]
|
||||
match[3].gsub("\\'", "'")
|
||||
elsif match[4]
|
||||
CONTEXT[match[4]]
|
||||
end
|
||||
|
||||
params[match[1]] = value
|
||||
end
|
||||
params
|
||||
end
|
||||
|
||||
def new_parse_params(markup)
|
||||
params = {}
|
||||
markup.scan(Jekyll::Tags::IncludeTag::VALID_SYNTAX) do |key, d_quoted, s_quoted, variable|
|
||||
value = if d_quoted
|
||||
d_quoted.include?('\\"') ? d_quoted.gsub('\\"', '"') : d_quoted
|
||||
elsif s_quoted
|
||||
s_quoted.include?("\\'") ? s_quoted.gsub("\\'", "'") : s_quoted
|
||||
elsif variable
|
||||
CONTEXT[variable]
|
||||
end
|
||||
|
||||
params[key] = value
|
||||
end
|
||||
params
|
||||
end
|
||||
|
||||
#
|
||||
|
||||
def report(label, markup, color)
|
||||
prof_report = MemoryProfiler.report { yield }
|
||||
|
||||
allocated_memory = prof_report.scale_bytes(prof_report.total_allocated_memsize)
|
||||
allocated_objects = prof_report.total_allocated
|
||||
retained_memory = prof_report.scale_bytes(prof_report.total_retained_memsize)
|
||||
retained_objects = prof_report.total_retained
|
||||
|
||||
puts <<~MSG.send(color)
|
||||
#{(label + " ").ljust(49, "-")}
|
||||
|
||||
MARKUP: #{markup}
|
||||
RESULT: #{yield}
|
||||
|
||||
Total allocated: #{allocated_memory} (#{allocated_objects} objects)
|
||||
Total retained: #{retained_memory} (#{retained_objects} objects)
|
||||
MSG
|
||||
end
|
||||
|
||||
report('old w/ escaping', MARKUP_1, :magenta) { old_parse_params(MARKUP_1) }
|
||||
report('new w/ escaping', MARKUP_1, :cyan) { new_parse_params(MARKUP_1) }
|
||||
|
||||
report('old no escaping', MARKUP_2, :green) { old_parse_params(MARKUP_2) }
|
||||
report('new no escaping', MARKUP_2, :yellow) { new_parse_params(MARKUP_2) }
|
||||
|
||||
#
|
||||
|
||||
Benchmark.ips do |x|
|
||||
x.report("old + esc".magenta) { old_parse_params(MARKUP_1) }
|
||||
x.report("new + esc".cyan) { new_parse_params(MARKUP_1) }
|
||||
x.compare!
|
||||
end
|
||||
|
||||
Benchmark.ips do |x|
|
||||
x.report("old - esc".green) { old_parse_params(MARKUP_2) }
|
||||
x.report("new - esc".yellow) { new_parse_params(MARKUP_2) }
|
||||
x.compare!
|
||||
end
|
||||
65
benchmark/path-manager.rb
Normal file
65
benchmark/path-manager.rb
Normal file
@@ -0,0 +1,65 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'benchmark/ips'
|
||||
require 'jekyll'
|
||||
|
||||
class FooPage
|
||||
def initialize(dir:, name:)
|
||||
@dir = dir
|
||||
@name = name
|
||||
end
|
||||
|
||||
def slow_path
|
||||
File.join(*[@dir, @name].map(&:to_s).reject(&:empty?)).sub(%r!\A/!, "")
|
||||
end
|
||||
|
||||
def fast_path
|
||||
Jekyll::PathManager.join(@dir, @name).sub(%r!\A/!, "")
|
||||
end
|
||||
end
|
||||
|
||||
nil_page = FooPage.new(:dir => nil, :name => nil)
|
||||
empty_page = FooPage.new(:dir => "", :name => "")
|
||||
root_page = FooPage.new(:dir => "", :name => "ipsum.md")
|
||||
nested_page = FooPage.new(:dir => "lorem", :name => "ipsum.md")
|
||||
slashed_page = FooPage.new(:dir => "/lorem/", :name => "/ipsum.md")
|
||||
|
||||
if nil_page.slow_path == nil_page.fast_path
|
||||
Benchmark.ips do |x|
|
||||
x.report('nil_page slow') { nil_page.slow_path }
|
||||
x.report('nil_page fast') { nil_page.fast_path }
|
||||
x.compare!
|
||||
end
|
||||
end
|
||||
|
||||
if empty_page.slow_path == empty_page.fast_path
|
||||
Benchmark.ips do |x|
|
||||
x.report('empty_page slow') { empty_page.slow_path }
|
||||
x.report('empty_page fast') { empty_page.fast_path }
|
||||
x.compare!
|
||||
end
|
||||
end
|
||||
|
||||
if root_page.slow_path == root_page.fast_path
|
||||
Benchmark.ips do |x|
|
||||
x.report('root_page slow') { root_page.slow_path }
|
||||
x.report('root_page fast') { root_page.fast_path }
|
||||
x.compare!
|
||||
end
|
||||
end
|
||||
|
||||
if nested_page.slow_path == nested_page.fast_path
|
||||
Benchmark.ips do |x|
|
||||
x.report('nested_page slow') { nested_page.slow_path }
|
||||
x.report('nested_page fast') { nested_page.fast_path }
|
||||
x.compare!
|
||||
end
|
||||
end
|
||||
|
||||
if slashed_page.slow_path == slashed_page.fast_path
|
||||
Benchmark.ips do |x|
|
||||
x.report('slashed_page slow') { slashed_page.slow_path }
|
||||
x.report('slashed_page fast') { slashed_page.fast_path }
|
||||
x.compare!
|
||||
end
|
||||
end
|
||||
@@ -90,7 +90,7 @@ end
|
||||
Correctness.new(site_docs, "redirect_from".freeze).assert!
|
||||
Correctness.new(site_docs, "title".freeze).assert!
|
||||
|
||||
def test_property(property, meta_key)
|
||||
def property(property, meta_key)
|
||||
Benchmark.ips do |x|
|
||||
x.config(time: 10, warmup: 5)
|
||||
x.report("sort_by_property_directly with #{property} property") do
|
||||
|
||||
83
benchmark/static-drop-vs-forwarded.rb
Executable file
83
benchmark/static-drop-vs-forwarded.rb
Executable file
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "forwardable"
|
||||
require "colorator"
|
||||
require "liquid"
|
||||
require "benchmark/ips"
|
||||
require "memory_profiler"
|
||||
|
||||
# Set up (memory) profiler
|
||||
|
||||
class Profiler
|
||||
def self.run
|
||||
yield new(ARGV[0] || 10_000)
|
||||
end
|
||||
|
||||
def initialize(count)
|
||||
@count = count.to_i
|
||||
end
|
||||
|
||||
def report(label, color, &block)
|
||||
prof_report = MemoryProfiler.report { @count.to_i.times(&block) }
|
||||
|
||||
allocated_memory = prof_report.scale_bytes(prof_report.total_allocated_memsize)
|
||||
allocated_objects = prof_report.total_allocated
|
||||
retained_memory = prof_report.scale_bytes(prof_report.total_retained_memsize)
|
||||
retained_objects = prof_report.total_retained
|
||||
|
||||
puts <<~MSG.send(color)
|
||||
With #{label} calls
|
||||
|
||||
Total allocated: #{allocated_memory} (#{allocated_objects} objects)
|
||||
Total retained: #{retained_memory} (#{retained_objects} objects)
|
||||
MSG
|
||||
end
|
||||
end
|
||||
|
||||
# Set up stage
|
||||
|
||||
class Drop < Liquid::Drop
|
||||
def initialize(obj)
|
||||
@obj = obj
|
||||
end
|
||||
end
|
||||
|
||||
class ForwardDrop < Drop
|
||||
extend Forwardable
|
||||
def_delegators :@obj, :name
|
||||
end
|
||||
|
||||
class StaticDrop < Drop
|
||||
def name
|
||||
@obj.name
|
||||
end
|
||||
end
|
||||
|
||||
class Document
|
||||
def name
|
||||
"lipsum"
|
||||
end
|
||||
end
|
||||
|
||||
# Set up actors
|
||||
|
||||
document = Document.new
|
||||
alpha = ForwardDrop.new(document)
|
||||
beta = StaticDrop.new(document)
|
||||
count = ARGV[0] || 10_000
|
||||
|
||||
# Run profilers
|
||||
puts "\nMemory profiles for #{count} calls to invoke drop key:"
|
||||
Profiler.run do |x|
|
||||
x.report("forwarded", :cyan) { alpha["name"] }
|
||||
x.report("static", :green) { beta["name"] }
|
||||
end
|
||||
|
||||
# Benchmark
|
||||
puts "\nBenchmarking the two scenarios..."
|
||||
Benchmark.ips do |x|
|
||||
x.report("forwarded".cyan) { alpha["name"] }
|
||||
x.report("static".green) { beta["name"] }
|
||||
x.compare!
|
||||
end
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
version: 4.1.0
|
||||
version: 4.2.2
|
||||
name: Jekyll • Simple, blog-aware, static sites
|
||||
description: Transform your plain text into static websites and blogs
|
||||
url: https://jekyllrb.com
|
||||
@@ -10,6 +10,7 @@ twitter:
|
||||
logo: "/img/logo-2x.png"
|
||||
google_analytics_id: UA-50755011-1
|
||||
google_site_verification: onQcXpAvtHBrUI5LlroHNE_FP0b2qvFyPq7VZw36iEY
|
||||
cloudinary_url: https://res.cloudinary.com/jekyll/image/upload/f_auto,q_auto,w_404
|
||||
collections:
|
||||
docs:
|
||||
permalink: "/:collection/:path/"
|
||||
@@ -59,8 +60,5 @@ sass:
|
||||
style: compressed
|
||||
strict_front_matter: true
|
||||
exclude:
|
||||
- ".gitignore"
|
||||
- ".jekyll-cache"
|
||||
- CNAME
|
||||
- icomoon-selection.json
|
||||
- readme.md
|
||||
|
||||
123
docs/_data/config_options/build.yml
Normal file
123
docs/_data/config_options/build.yml
Normal file
@@ -0,0 +1,123 @@
|
||||
- name: Regeneration
|
||||
description: Enable auto-regeneration of the site when files are modified.
|
||||
flag: "-w, --[no-]watch"
|
||||
|
||||
|
||||
- name: Configuration
|
||||
description: >-
|
||||
Specify config files instead of using <code>_config.yml</code> automatically.
|
||||
Settings in later files override settings in earlier files.
|
||||
flag: "--config FILE1[,FILE2,...]"
|
||||
|
||||
|
||||
- name: Plugins
|
||||
description: >-
|
||||
Specify plugin directories instead of using <code>_plugins/</code> automatically.
|
||||
option: "plugins_dir: [ DIR1,... ]"
|
||||
flag: "-p, --plugins DIR1[,DIR2,...]"
|
||||
|
||||
|
||||
- name: Layouts
|
||||
description: >-
|
||||
Specify layout directory instead of using <code>_layouts/</code> automatically.
|
||||
option: "layouts_dir: DIR"
|
||||
flag: --layouts DIR
|
||||
|
||||
|
||||
- name: Drafts
|
||||
description: Process and render draft posts.
|
||||
option: "show_drafts: BOOL"
|
||||
flag: -D, --drafts
|
||||
|
||||
|
||||
- name: Environment
|
||||
description: Use a specific environment value in the build.
|
||||
flag: JEKYLL_ENV=production
|
||||
|
||||
|
||||
- name: Future
|
||||
description: Publish posts or collection documents with a future date.
|
||||
option: "future: BOOL"
|
||||
flag: --future
|
||||
|
||||
|
||||
- name: Unpublished
|
||||
description: Render posts that were marked as unpublished.
|
||||
option: "unpublished: BOOL"
|
||||
flag: --unpublished
|
||||
|
||||
|
||||
- name: LSI
|
||||
description: >-
|
||||
Produce an index for related posts. Requires the
|
||||
<a href="https://jekyll.github.io/classifier-reborn/">classifier-reborn</a> plugin.
|
||||
option: "lsi: BOOL"
|
||||
flag: --lsi
|
||||
|
||||
|
||||
- name: Limit posts
|
||||
description: Limit the number of posts to parse and publish.
|
||||
option: "limit_posts: NUM"
|
||||
flag: --limit_posts NUM
|
||||
|
||||
|
||||
- name: Force polling
|
||||
description: Force watch to use polling.
|
||||
option: "force_polling: BOOL"
|
||||
flag: --force_polling
|
||||
|
||||
|
||||
- name: Verbose output
|
||||
description: Print verbose output.
|
||||
option: "verbose: BOOL"
|
||||
flag: -V, --verbose
|
||||
|
||||
|
||||
- name: Silence output
|
||||
description: Silence the normal output from Jekyll during a build.
|
||||
option: "quiet: BOOL"
|
||||
flag: -q, --quiet
|
||||
|
||||
|
||||
- name: Log level
|
||||
description: Specify a log level among debug, info, warn, or error.
|
||||
flag: JEKYLL_LOG_LEVEL=info
|
||||
|
||||
|
||||
- name: Incremental build
|
||||
description: >-
|
||||
Enable the experimental
|
||||
<a href="/docs/configuration/incremental-regeneration/">incremental
|
||||
build</a> feature. Incremental build only re-builds posts and pages that
|
||||
have changed, resulting in significant performance improvements for large
|
||||
sites, but may also break site generation in certain cases.
|
||||
option: "incremental: BOOL"
|
||||
flag: -I, --incremental
|
||||
|
||||
|
||||
- name: Disable bundle require
|
||||
description: Disables the need to require gems in `:jekyll_plugins` Gemfile
|
||||
flag: JEKYLL_NO_BUNDLER_REQUIRE=true
|
||||
|
||||
|
||||
- name: Liquid profiler
|
||||
description: Generate a Liquid rendering profile to help you identify performance bottlenecks.
|
||||
option: "profile: BOOL"
|
||||
flag: --profile
|
||||
|
||||
|
||||
- name: Strict front matter
|
||||
description: Cause a build to fail if there is a YAML syntax error in a page's front matter.
|
||||
option: "strict_front_matter: BOOL"
|
||||
flag: --strict_front_matter
|
||||
|
||||
|
||||
- name: Base URL
|
||||
description: Serve the website from the given base URL.
|
||||
option: "baseurl: URL"
|
||||
flag: -b, --baseurl URL
|
||||
|
||||
|
||||
- name: Trace
|
||||
description: Show the full backtrace when an error occurs.
|
||||
flag: -t, --trace
|
||||
77
docs/_data/config_options/global.yml
Normal file
77
docs/_data/config_options/global.yml
Normal file
@@ -0,0 +1,77 @@
|
||||
- name: Site source
|
||||
description: Change the directory where Jekyll will read files
|
||||
option: "source: DIR"
|
||||
flag: -s, --source DIR
|
||||
|
||||
|
||||
- name: Site destination
|
||||
description: Change the directory where Jekyll will write files
|
||||
option: "destination: DIR"
|
||||
flag: -d, --destination DIR
|
||||
|
||||
|
||||
- name: Safe
|
||||
description: >-
|
||||
Disable <a href="/docs/plugins/">non-whitelisted plugins</a>, caching to disk, and ignore symbolic links.
|
||||
option: "safe: BOOL"
|
||||
flag: --safe
|
||||
|
||||
|
||||
- name: Disable disk cache
|
||||
version-badge: 4.1.0
|
||||
description: >-
|
||||
Disable caching of content to disk in order to skip creating a <code>.jekyll-cache</code> or similar directory at
|
||||
the source to avoid interference with virtual environments and third-party directory watchers. Caching to disk is
|
||||
always disabled in <code>safe</code> mode.
|
||||
option: "disable_disk_cache: BOOL"
|
||||
flag: --disable-disk-cache
|
||||
|
||||
|
||||
- name: Ignore theme configuration
|
||||
version-badge: 4.1.0
|
||||
description: >-
|
||||
Jekyll 4.0 started allowing themes to bundle a <code>_config.yml</code> to simplify theme-onboarding for new users.
|
||||
In the unfortunate situation that importing a bundled theme configuration messes up the merged site-configuration,
|
||||
the user can configure Jekyll to not import the theme-config entirely.
|
||||
option: "ignore_theme_config: BOOL"
|
||||
|
||||
|
||||
- name: Exclude
|
||||
description: >-
|
||||
Exclude directories and/or files from the conversion. These exclusions are relative to the site's source directory
|
||||
and cannot be outside the source directory.
|
||||
option: "exclude: [DIR, FILE, ...]"
|
||||
|
||||
|
||||
- name: Include
|
||||
description: >-
|
||||
Force inclusion of directories and/or files in the conversion. <code>.htaccess</code> is a good example since
|
||||
dotfiles are excluded by default.
|
||||
option: "include: [DIR, FILE, ...]"
|
||||
|
||||
|
||||
- name: Keep files
|
||||
description: >-
|
||||
When clobbering the site destination, keep the selected files. Useful for files that are not generated by jekyll;
|
||||
e.g. files or assets that are generated by your build tool. The paths are relative to the <code>destination</code>.
|
||||
option: "keep_files: [DIR, FILE, ...]"
|
||||
|
||||
|
||||
- name: Time zone
|
||||
description: >-
|
||||
Set the time zone for site generation. This sets the <code>TZ</code> environment variable, which Ruby uses to handle
|
||||
time and date creation and manipulation. Any entry from the
|
||||
<a href="https://en.wikipedia.org/wiki/Tz_database">IANA Time Zone Database</a>
|
||||
is valid, e.g. <code>America/New_York</code>. A list of all available values can be found
|
||||
<a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones"> here</a>.
|
||||
When serving on a local machine, the default time zone is set by your operating system. But when served on a remote
|
||||
host/server, the default time zone depends on the server's setting or location.
|
||||
option: "timezone: TIMEZONE"
|
||||
|
||||
|
||||
- name: Encoding
|
||||
description: >-
|
||||
Set the encoding of files by name (only available for Ruby 1.9 or later). The default value is <code>utf-8</code>
|
||||
starting in 2.0.0, and <code>nil</code> before 2.0.0, which will yield the Ruby default of <code>ASCII-8BIT</code>.
|
||||
Available encodings can be shown by the command <code>ruby -e 'puts Encoding::list.join("\n")'</code>.
|
||||
option: "encoding: ENCODING"
|
||||
71
docs/_data/config_options/serve.yml
Normal file
71
docs/_data/config_options/serve.yml
Normal file
@@ -0,0 +1,71 @@
|
||||
- name: Local server port
|
||||
description: Listen on the given port. The default is `4000`.
|
||||
option: "port: PORT"
|
||||
flag: "-P, --port PORT"
|
||||
|
||||
|
||||
- name: Local server hostname
|
||||
description: Listen at the given hostname. The default is `localhost`.
|
||||
option: "host: HOSTNAME"
|
||||
flag: "-H, --host HOSTNAME"
|
||||
|
||||
|
||||
- name: Live reload
|
||||
description: Reload a page automatically on the browser when its content is edited.
|
||||
option: "livereload: BOOL"
|
||||
flag: "-l, --livereload"
|
||||
|
||||
|
||||
- name: Live reload ignore
|
||||
description: File glob patterns for LiveReload to ignore.
|
||||
option: "livereload_ignore: [ GLOB1,... ]"
|
||||
flag: "--livereload-ignore GLOB1[,GLOB2,...]"
|
||||
|
||||
|
||||
- name: Live reload min/max delay
|
||||
description: Minimum/Maximum delay before automatically reloading page.
|
||||
options:
|
||||
- "livereload_min_delay: SECONDS"
|
||||
- "livereload_max_delay: SECONDS"
|
||||
flags:
|
||||
- "--livereload-min-delay SECONDS"
|
||||
- "--livereload-max-delay SECONDS"
|
||||
|
||||
|
||||
- name: Live reload port
|
||||
description: Port for LiveReload to listen on.
|
||||
flag: "--livereload-port PORT"
|
||||
|
||||
|
||||
- name: Open URL
|
||||
description: Open the site's URL in the browser.
|
||||
option: "open_url: BOOL"
|
||||
flag: "-o, --open-url"
|
||||
|
||||
|
||||
- name: Detach
|
||||
description: Detach the server from the terminal.
|
||||
option: "detach: BOOL"
|
||||
flag: "-B, --detach"
|
||||
|
||||
|
||||
- name: Skips the initial site build
|
||||
description: Skips the initial site build which occurs before the server is started.
|
||||
option: "skip_initial_build: BOOL"
|
||||
flag: "--skip-initial-build"
|
||||
|
||||
|
||||
- name: Show directory listing
|
||||
description: Show a directory listing instead of loading your index file.
|
||||
option: "show_dir_listing: BOOL"
|
||||
flag: "--show-dir-listing"
|
||||
|
||||
|
||||
- name: X.509 (SSL) private key
|
||||
description: "SSL Private Key, stored or symlinked in the site source."
|
||||
flag: "--ssl-key"
|
||||
|
||||
|
||||
- name: X.509 (SSL) certificate
|
||||
description: "SSL Public certificate, stored or symlinked in the site source."
|
||||
flag: "--ssl-cert"
|
||||
@@ -1,14 +1,15 @@
|
||||
- title: Getting Started
|
||||
docs:
|
||||
- link: /docs/
|
||||
- link: /docs/ruby-101/
|
||||
- link: /docs/installation/
|
||||
- link: /docs/ruby-101/
|
||||
- link: /docs/community/
|
||||
- link: /docs/step-by-step/01-setup/
|
||||
- title: Build
|
||||
docs:
|
||||
- link: /docs/usage/
|
||||
- link: /docs/configuration/
|
||||
- link: /docs/rendering-process/
|
||||
- title: Content
|
||||
docs:
|
||||
- link: /docs/pages/
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
#
|
||||
- name: Relative URL
|
||||
description: >-
|
||||
Prepend the <code>baseurl</code> value to the input. Useful if
|
||||
your site is hosted at a subpath rather than the root of the domain.
|
||||
Prepend <code>baseurl</code> config value to the input to convert a URL path into a relative URL.
|
||||
This is recommended for a site that is hosted on a subpath of a domain.
|
||||
examples:
|
||||
- input: '{{ "/assets/style.css" | relative_url }}'
|
||||
output: '/my-baseurl/assets/style.css'
|
||||
@@ -27,7 +27,8 @@
|
||||
#
|
||||
|
||||
- name: Absolute URL
|
||||
description: Prepend the <code>url</code> and <code>baseurl</code> value to the input.
|
||||
description: >-
|
||||
Prepend <code>url</code> and <code>baseurl</code> values to the input to convert a URL path to an absolute URL.
|
||||
examples:
|
||||
- input: '{{ "/assets/style.css" | absolute_url }}'
|
||||
output: 'http://example.com/my-baseurl/assets/style.css'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Variables provided by Jekyll core
|
||||
#
|
||||
# name: : name of the variable
|
||||
# description: : content returned by the varialble
|
||||
# description: : content returned by the variable
|
||||
|
||||
global:
|
||||
- name: site
|
||||
@@ -76,7 +76,7 @@ site:
|
||||
Contains the url of your site as it is configured in the <code>_config.yml</code>.
|
||||
For example, if you have <code>url: http://mysite.com</code> in your configuration file,
|
||||
then it will be accessible in Liquid as <code>site.url</code>. For the development
|
||||
environment there is <a href="/news/#3-siteurl-is-set-by-the-development-server">an
|
||||
environment there is <a href="/news/2016/10/06/jekyll-3-3-is-here/#3-siteurl-is-set-by-the-development-server">an
|
||||
exception</a>, if you are running <code>jekyll serve</code> in a development environment
|
||||
<code>site.url</code> will be set to the value of <code>host</code>, <code>port</code>,
|
||||
and SSL-related options. This defaults to <code>url: http://localhost:4000</code>.
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
min_version: 2.5.0
|
||||
current_version: 2.7.1
|
||||
current_version_output: ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c)
|
||||
current_version: 3.1.1
|
||||
current_version_output: ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236)
|
||||
|
||||
@@ -1,241 +1,322 @@
|
||||
- name: Tom Preston Werner Blog
|
||||
url: http://tom.preston-werner.com/
|
||||
image: tom-preston-werner.png
|
||||
categories:
|
||||
- personal
|
||||
- blog
|
||||
- name: GitHub On Demand Training
|
||||
url: https://services.github.com/on-demand/
|
||||
categories:
|
||||
- software
|
||||
- knowledgebase
|
||||
- name: Vesterheim Norwegian-American Museum
|
||||
url: http://vesterheim.org/
|
||||
categories:
|
||||
- marketing-site
|
||||
- name: KOTN
|
||||
url: https://kotn.com/
|
||||
categories:
|
||||
- marketing-site
|
||||
- name: MvvmCross
|
||||
url: https://www.mvvmcross.com/
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
- name: Vidgrid
|
||||
url: https://www.vidgrid.com/
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
- name: Bitcoin
|
||||
url: https://bitcoin.org/en/
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
- name: Mapwize
|
||||
url: https://www.mapwize.io/
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
- name: Auth0 Blog
|
||||
url: https://auth0.com/blog/
|
||||
categories:
|
||||
- software
|
||||
- blog
|
||||
- name: AWS Amplify
|
||||
url: https://aws-amplify.github.io/
|
||||
categories:
|
||||
- open-source
|
||||
- marketing-site
|
||||
- name: Yeoman
|
||||
url: http://yeoman.io/
|
||||
categories:
|
||||
- open-source
|
||||
- marketing-site
|
||||
- name: Ionic Framwork
|
||||
url: https://ionicframework.com/
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
- name: Release Management Blog
|
||||
url: https://release.mozilla.org/
|
||||
categories:
|
||||
- software
|
||||
- blog
|
||||
- name: Freedom of Information Act
|
||||
url: https://www.foia.gov/
|
||||
categories:
|
||||
- government
|
||||
- name: Art & About Sydney
|
||||
url: https://www.artandabout.com.au/
|
||||
categories:
|
||||
- government
|
||||
- name: Passbolt Help
|
||||
url: https://help.passbolt.com/
|
||||
categories:
|
||||
- knowledgebase
|
||||
- name: We are COLLINS
|
||||
url: https://www.wearecollins.com/
|
||||
categories:
|
||||
- agency
|
||||
- name: Light Burn
|
||||
url: https://lightburn.co/
|
||||
categories:
|
||||
- agency
|
||||
- name: italia.it
|
||||
url: https://developers.italia.it/
|
||||
categories:
|
||||
- community
|
||||
- name: Sydney New Years Eve
|
||||
url: https://www.sydneynewyearseve.com/
|
||||
categories:
|
||||
- government
|
||||
- name: Login.gov
|
||||
url: https://login.gov/
|
||||
categories:
|
||||
- government
|
||||
- name: plainlanguage.gov
|
||||
url: https://plainlanguage.gov/
|
||||
categories:
|
||||
- government
|
||||
- name: U.S. Web Design Standards
|
||||
url: https://standards.usa.gov/
|
||||
categories:
|
||||
- government
|
||||
- name: Grantmaker Search
|
||||
url: https://www.grantmakers.io/
|
||||
categories:
|
||||
- marketing-site
|
||||
- name: Rehan Butt
|
||||
url: http://rehanbutt.com/
|
||||
categories:
|
||||
- personal
|
||||
- portfolio
|
||||
- name: The Markdown Guide
|
||||
url: https://www.markdownguide.org/
|
||||
categories:
|
||||
- knowledgebase
|
||||
- name: PROBOT
|
||||
url: https://probot.github.io/
|
||||
categories:
|
||||
- documentation
|
||||
- name: Matt Grey
|
||||
url: https://himatt.com/
|
||||
categories:
|
||||
- personal
|
||||
- portfolio
|
||||
- name: frame.ai
|
||||
url: https://frame.ai/
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
- name: AdHawk
|
||||
url: https://www.tryadhawk.com/
|
||||
categories:
|
||||
- agency
|
||||
- name: Lattice
|
||||
url: https://latticehq.com/
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
- name: MailTape
|
||||
url: https://www.mailta.pe/
|
||||
categories:
|
||||
- other
|
||||
- name: Digital Democracy
|
||||
url: http://www.digital-democracy.org/
|
||||
categories:
|
||||
- other
|
||||
- name: HTML Reference
|
||||
url: http://htmlreference.io/
|
||||
categories:
|
||||
- documentation
|
||||
- name: CSS Reference
|
||||
url: http://cssreference.io/
|
||||
categories:
|
||||
- documentation
|
||||
- name: Chain
|
||||
url: https://chain.com/
|
||||
categories:
|
||||
- marketing-site
|
||||
- name: Boxy Suite
|
||||
url: https://www.boxysuite.com/
|
||||
categories:
|
||||
- marketing-site
|
||||
- software
|
||||
- name: Pattern Lab
|
||||
url: http://patternlab.io/
|
||||
categories:
|
||||
- documentation
|
||||
- name: IBM MobileFirst Foundation
|
||||
url: https://mobilefirstplatform.ibmcloud.com/
|
||||
categories:
|
||||
- documentation
|
||||
- name: 18F
|
||||
url: https://18f.gsa.gov/
|
||||
categories:
|
||||
- agency
|
||||
- government
|
||||
- name: Development Seed
|
||||
url: https://developmentseed.org/
|
||||
categories:
|
||||
- agency
|
||||
- name: Isomer - Singapore Government Static Websites
|
||||
url: https://isomer.gov.sg/
|
||||
categories:
|
||||
- government
|
||||
|
||||
# - name: White House Social and Behavioral Sciences Team
|
||||
# url: https://sbst.gov/
|
||||
# image: sbst.png
|
||||
# categories:
|
||||
# - government
|
||||
|
||||
- name: SiteLeaf
|
||||
url: https://siteleaf.com
|
||||
image: siteleaf.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: CloudCannon
|
||||
url: https://cloudcannon.com/
|
||||
image: cloudcannon.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Vesterheim Norwegian-American Museum
|
||||
url: http://vesterheim.org/
|
||||
image: vesterheim.png
|
||||
categories:
|
||||
- marketing-site
|
||||
|
||||
- name: KOTN
|
||||
url: https://kotn.com/
|
||||
image: kotn.png
|
||||
categories:
|
||||
- marketing-site
|
||||
|
||||
- name: MvvmCross
|
||||
url: https://www.mvvmcross.com/
|
||||
image: mvvm.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Vidgrid
|
||||
url: https://www.vidgrid.com/
|
||||
image: vidgrid.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Bitcoin
|
||||
url: https://bitcoin.org/en/
|
||||
image: bitcoin.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Mapwize
|
||||
url: https://www.mapwize.io/
|
||||
image: mapwize.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Auth0 Blog
|
||||
url: https://auth0.com/blog/
|
||||
image: auth0-blog.png
|
||||
categories:
|
||||
- software
|
||||
- blog
|
||||
|
||||
- name: Freedom of Information Act
|
||||
url: https://www.foia.gov/
|
||||
image: foia-gov.png
|
||||
categories:
|
||||
- government
|
||||
|
||||
- name: "Art & About Sydney"
|
||||
url: https://www.artandabout.com.au/
|
||||
image: art-sydney.png
|
||||
categories:
|
||||
- government
|
||||
|
||||
- name: Passbolt Help
|
||||
url: https://help.passbolt.com/
|
||||
image: passbolt-help.png
|
||||
categories:
|
||||
- knowledgebase
|
||||
|
||||
- name: We are COLLINS
|
||||
url: https://www.wearecollins.com/
|
||||
image: collins.png
|
||||
categories:
|
||||
- agency
|
||||
|
||||
- name: Lightburn
|
||||
url: https://lightburn.co/
|
||||
image: lightburn.png
|
||||
categories:
|
||||
- agency
|
||||
|
||||
- name: italia.it
|
||||
url: https://developers.italia.it/
|
||||
image: italia-it.png
|
||||
categories:
|
||||
- community
|
||||
|
||||
- name: Sydney New Years Eve
|
||||
url: https://www.sydneynewyearseve.com/
|
||||
image: nsw.png
|
||||
categories:
|
||||
- government
|
||||
|
||||
- name: Login.gov
|
||||
url: https://login.gov/
|
||||
image: login-gov.png
|
||||
categories:
|
||||
- government
|
||||
|
||||
- name: plainlanguage.gov
|
||||
url: https://plainlanguage.gov/
|
||||
image: plainlanguage-gov.png
|
||||
categories:
|
||||
- government
|
||||
|
||||
- name: U.S. Web Design Standards
|
||||
url: https://standards.usa.gov/
|
||||
image: uswds.png
|
||||
categories:
|
||||
- government
|
||||
|
||||
- name: Grantmaker Search
|
||||
url: https://www.grantmakers.io/
|
||||
image: grantmakers.png
|
||||
categories:
|
||||
- marketing-site
|
||||
|
||||
- name: Rehan Butt
|
||||
url: http://rehanbutt.com/
|
||||
image: rehn.png
|
||||
categories:
|
||||
- personal
|
||||
- portfolio
|
||||
|
||||
- name: The Markdown Guide
|
||||
url: https://www.markdownguide.org/
|
||||
image: markdown-guide.png
|
||||
categories:
|
||||
- knowledgebase
|
||||
|
||||
- name: Probot
|
||||
url: https://probot.github.io/
|
||||
image: probot.png
|
||||
categories:
|
||||
- documentation
|
||||
|
||||
- name: Matt Grey
|
||||
url: https://himatt.com/
|
||||
image: matt-grey.png
|
||||
categories:
|
||||
- personal
|
||||
- portfolio
|
||||
|
||||
- name: Lattice
|
||||
url: https://latticehq.com/
|
||||
image: lattice.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: MailTape
|
||||
url: https://www.mailta.pe/
|
||||
image: mailtape.png
|
||||
categories:
|
||||
- other
|
||||
|
||||
- name: Digital Democracy
|
||||
url: http://www.digital-democracy.org/
|
||||
image: digital-democracy.png
|
||||
categories:
|
||||
- other
|
||||
|
||||
- name: HTML Reference
|
||||
url: http://htmlreference.io/
|
||||
image: htmlreference.png
|
||||
categories:
|
||||
- documentation
|
||||
|
||||
- name: CSS Reference
|
||||
url: http://cssreference.io/
|
||||
image: cssreference.png
|
||||
categories:
|
||||
- documentation
|
||||
|
||||
- name: Chain
|
||||
url: https://chain.com/
|
||||
image: chain.png
|
||||
categories:
|
||||
- marketing-site
|
||||
|
||||
- name: IBM MobileFirst Foundation
|
||||
url: https://mobilefirstplatform.ibmcloud.com/
|
||||
image: ibm-mobile-foundation.png
|
||||
categories:
|
||||
- documentation
|
||||
|
||||
- name: "18F"
|
||||
url: https://18f.gsa.gov/
|
||||
image: 18f.png
|
||||
categories:
|
||||
- agency
|
||||
- government
|
||||
|
||||
- name: Development Seed
|
||||
url: https://developmentseed.org/
|
||||
image: development-seed.png
|
||||
categories:
|
||||
- agency
|
||||
|
||||
- name: Isomer - Singapore Government Static Websites
|
||||
url: https://isomer.gov.sg/
|
||||
image: isomer.png
|
||||
categories:
|
||||
- government
|
||||
|
||||
- name: French Government Digital Services
|
||||
url: https://beta.gouv.fr/
|
||||
image: beta-gouv-fr.png
|
||||
categories:
|
||||
- government
|
||||
|
||||
- name: Paris Call for Trust and Security in Cyberspace
|
||||
url: https://pariscall.international/
|
||||
image: appel-de-paris.png
|
||||
categories:
|
||||
- government
|
||||
- name: Ruby on Rails
|
||||
url: http://rubyonrails.org/
|
||||
categories:
|
||||
- marketing-site
|
||||
- documentation
|
||||
- name: White House Social and Behavioral Sciences Team
|
||||
url: https://sbst.gov/
|
||||
categories:
|
||||
- government
|
||||
- name: UN World Statistics
|
||||
url: https://worldstatisticsday.org
|
||||
categories:
|
||||
- government
|
||||
- name: Sketch App
|
||||
url: https://sketchapp.com/
|
||||
|
||||
- name: GitHub On Demand Training
|
||||
url: https://services.github.com/on-demand/
|
||||
image: github-learning-lab.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
- name: Netflix Devices
|
||||
url: https://devices.netflix.com/en/
|
||||
categories:
|
||||
- marketing-site
|
||||
- knowledgebase
|
||||
|
||||
- name: TwitchCon
|
||||
url: https://www.twitchcon.com/
|
||||
image: twitchcon.png
|
||||
categories:
|
||||
- marketing-site
|
||||
- conference
|
||||
|
||||
- name: UN World Statistics
|
||||
url: https://worldstatisticsday.org
|
||||
image: world-statistics-day.png
|
||||
categories:
|
||||
- government
|
||||
|
||||
- name: Netflix Devices
|
||||
url: https://devices.netflix.com/en/
|
||||
image: netflix.png
|
||||
categories:
|
||||
- marketing-site
|
||||
|
||||
- name: Twitch Developer Documentation
|
||||
url: https://dev.twitch.tv/
|
||||
image: twitch-developers.png
|
||||
categories:
|
||||
- marketing-site
|
||||
- documentation
|
||||
|
||||
- name: Yeoman
|
||||
url: http://yeoman.io/
|
||||
image: yeoman.png
|
||||
categories:
|
||||
- open-source
|
||||
- marketing-site
|
||||
|
||||
- name: Release Management Blog
|
||||
url: https://release.mozilla.org/
|
||||
image: mozilla-release-blog.png
|
||||
categories:
|
||||
- software
|
||||
- blog
|
||||
|
||||
- name: frame.ai
|
||||
url: https://frame.ai/
|
||||
image: frame-ai.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Ionic Framework
|
||||
url: https://ionicframework.com/
|
||||
image: ionic-framework.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Spotify for Developers
|
||||
url: https://developer.spotify.com
|
||||
image: spotify-developers.png
|
||||
categories:
|
||||
- marketing-site
|
||||
- documentation
|
||||
- software
|
||||
|
||||
- name: Sketch
|
||||
url: https://sketch.com/
|
||||
image: sketch.png
|
||||
categories:
|
||||
- software
|
||||
- marketing-site
|
||||
|
||||
- name: Ruby on Rails
|
||||
url: http://rubyonrails.org/
|
||||
image: ruby-on-rails.png
|
||||
categories:
|
||||
- marketing-site
|
||||
- documentation
|
||||
|
||||
@@ -79,6 +79,8 @@ sass:
|
||||
These are passed to Sass, so any output style options Sass supports are valid
|
||||
here, too.
|
||||
|
||||
For more information on Sass configuration options, see the [Sass configuration]({{ '/docs/configuration/sass/' | relative_url }}) docs.
|
||||
|
||||
## Coffeescript
|
||||
|
||||
To enable Coffeescript in Jekyll 3.0 and up you must
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Code of Conduct
|
||||
permalink: "/docs/code_of_conduct/"
|
||||
note: This file is autogenerated. Edit /CODE_OF_CONDUCT.markdown instead.
|
||||
note: This file is autogenerated. Edit /.github/CODE_OF_CONDUCT.markdown instead.
|
||||
redirect_from: "/conduct/index.html"
|
||||
editable: false
|
||||
---
|
||||
|
||||
@@ -16,8 +16,8 @@ collections:
|
||||
- staff_members
|
||||
```
|
||||
|
||||
In this case `collections` is defined as a sequence (i.e array) with no additional metadata defined for each collection.
|
||||
You can optionally specify metadata for your collection by defining `collections` as a mapping (i.e hashmap) instead of sequence, and then defining additional fields in it:
|
||||
In this case `collections` is defined as a sequence (i.e., array) with no additional metadata defined for each collection.
|
||||
You can optionally specify metadata for your collection by defining `collections` as a mapping (i.e., hashmap) instead of sequence, and then defining additional fields in it:
|
||||
|
||||
```yaml
|
||||
collections:
|
||||
@@ -126,7 +126,7 @@ You can link to the generated page using the `url` attribute:
|
||||
|
||||
## Permalinks
|
||||
|
||||
There are special [permalink variables for collections]({{ '/docs/permalinks/' | relative_url }}) to
|
||||
There are special [permalink variables for collections]({{ '/docs/permalinks/#collections' | relative_url }}) to
|
||||
help you control the output url for the entire collection.
|
||||
|
||||
## Custom Sorting of Documents {%- include docs_version_badge.html version="4.0" -%}
|
||||
|
||||
@@ -10,15 +10,22 @@ As contributors and maintainers of this project, and in the interest of fosterin
|
||||
|
||||
Read the full [code of conduct]({{ '/docs/conduct/' | relative_url }})
|
||||
|
||||
## Reporting Security Vulnerabilities
|
||||
|
||||
Find something in our codebase that could be exploited by malicious elements?
|
||||
|
||||
Consult our [Security Policy]({{ '/docs/security/' | relative_url }}) to see if a product version is considered *outdated* and how to report
|
||||
the situation responsibly.
|
||||
|
||||
## Where to get support
|
||||
|
||||
If you're looking for support for Jekyll, there are a lot of options:
|
||||
|
||||
* Read the [Jekyll Documentation]({{ '/docs/' | relative_url }})
|
||||
* If you have a question about using Jekyll, start a discussion on the [Jekyll Forum](https://talk.jekyllrb.com/) or [StackOverflow](https://stackoverflow.com/questions/tagged/jekyll)
|
||||
* Chat with Jekyllers — Join our [Gitter channel](https://gitter.im/jekyll/jekyll) or our [IRC channel on Freenode](irc:irc.freenode.net/jekyll)
|
||||
* Chat with Jekyllers — Join our [Gitter channel](https://gitter.im/jekyll/jekyll) or our IRC channel #jekyll on [Libera](irc://irc.libera.chat/#jekyll).
|
||||
|
||||
There are a bunch of helpful community members on these services that should be willing to point you in the right direction.
|
||||
There are a bunch of helpful community members on these services who are willing to point you in the right direction.
|
||||
|
||||
**Reminder: Jekyll's issue tracker is not a support forum.**
|
||||
|
||||
|
||||
@@ -14,5 +14,6 @@ executable in the terminal.
|
||||
* [Environments]({{ '/docs/configuration/environments/' | relative_url }})
|
||||
* [Markdown Options]({{ '/docs/configuration/markdown/' | relative_url }})
|
||||
* [Liquid Options]({{ '/docs/configuration/liquid/' | relative_url }})
|
||||
* [Sass/SCSS Options]({{ '/docs/configuration/sass/' | relative_url }})
|
||||
* [Webrick Options]({{ '/docs/configuration/webrick/' | relative_url }})
|
||||
* [Incremental Regeneration]({{ '/docs/configuration/incremental-regeneration/' | relative_url }})
|
||||
|
||||
@@ -7,12 +7,19 @@ Jekyll runs with the following configuration options by default. Alternative
|
||||
settings for these options can be explicitly specified in the configuration
|
||||
file or on the command-line.
|
||||
|
||||
<div class="note info">
|
||||
<h5>Be aware of directory paths</h5>
|
||||
<p>
|
||||
In general, make directory path values in configuration keys like <code>plugins_dir</code> relative to the current working directory, not the site source. The <code>sass</code> configuration key is an exception, where values must be relative to the site source.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
```yaml
|
||||
# Where things are
|
||||
source : .
|
||||
destination : ./_site
|
||||
collections_dir : .
|
||||
plugins_dir : _plugins
|
||||
plugins_dir : _plugins # takes an array of strings and loads plugins in that order
|
||||
layouts_dir : _layouts
|
||||
data_dir : _data
|
||||
includes_dir : _includes
|
||||
@@ -70,12 +77,6 @@ liquid:
|
||||
strict_variables : false
|
||||
|
||||
# Markdown Processors
|
||||
rdiscount:
|
||||
extensions : []
|
||||
|
||||
redcarpet:
|
||||
extensions : []
|
||||
|
||||
kramdown:
|
||||
auto_ids : true
|
||||
entity_output : as_char
|
||||
|
||||
@@ -30,7 +30,7 @@ defaults:
|
||||
during automatic regeneration are not loaded until the next execution.
|
||||
</p>
|
||||
<p>
|
||||
Note <a href="{{ '/docs/datafiles' | relative_url }}">Data Files</a> are included and reloaded during automatic regeneration.
|
||||
Note <a href="{{ '/docs/datafiles/' | relative_url }}">Data Files</a> are included and reloaded during automatic regeneration.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -6,13 +6,33 @@ Liquid's response to errors can be configured by setting `error_mode`. The
|
||||
options are
|
||||
|
||||
- `lax` --- Ignore all errors.
|
||||
- `warn` --- Output a warning on the console for each error.
|
||||
- `warn` --- Output a warning on the console for each error. (default)
|
||||
- `strict` --- Output an error message and stop the build.
|
||||
|
||||
Within _config.yml, the default configuration is as follows:
|
||||
|
||||
```yaml
|
||||
liquid:
|
||||
error_mode: warn
|
||||
```
|
||||
|
||||
The above example depicts the "warn" value, which is already set by default- `error_mode: warn`. This results in any issues being called out during the build process however will continue to build if possible.
|
||||
|
||||
You can also configure Liquid's renderer to catch non-assigned variables and
|
||||
non-existing filters by setting `strict_variables` and / or `strict_filters`
|
||||
to `true` respectively. {% include docs_version_badge.html version="3.8.0" %}
|
||||
|
||||
Do note that while `error_mode` configures Liquid's parser, the `strict_variables`
|
||||
and `strict_filters` options configure Liquid's renderer and are consequently,
|
||||
mutually exclusive.
|
||||
and `strict_filters` options configure Liquid's renderer and are consequently
|
||||
orthogonal.
|
||||
|
||||
An example of setting these variables within _config.yml is as follows:
|
||||
|
||||
```yaml
|
||||
liquid:
|
||||
error_mode: strict
|
||||
strict_variables: true
|
||||
strict_filters: true
|
||||
```
|
||||
|
||||
Configuring as described above will stop your build/serve from happening and call out the offending error and halt. This is helpful when desiring to catch liquid-related issues by stopping the build or serve process and allowing you to deal with any issues.
|
||||
|
||||
@@ -5,108 +5,69 @@ permalink: "/docs/configuration/markdown/"
|
||||
The various Markdown renderers supported by Jekyll sometimes have extra options
|
||||
available.
|
||||
|
||||
### Kramdown
|
||||
## Kramdown
|
||||
|
||||
Kramdown is the default Markdown renderer for Jekyll. Below is a list of the
|
||||
currently supported options:
|
||||
Kramdown is the default Markdown renderer for Jekyll, and often works well with no additional configuration. However, it does support many configuration options.
|
||||
|
||||
* **auto_id_prefix** - Prefix used for automatically generated header IDs
|
||||
* **auto_id_stripping** - Strip all formatting from header text for automatic ID generation
|
||||
* **auto_ids** - Use automatic header ID generation
|
||||
* **coderay_bold_every** - Defines how often a line number should be made bold
|
||||
* **coderay_css** - Defines how the highlighted code gets styled
|
||||
* **coderay_default_lang** - Sets the default language for highlighting code blocks
|
||||
* **coderay_line_number_start** - The start value for the line numbers
|
||||
* **coderay_line_numbers** - Defines how and if line numbers should be shown
|
||||
* **coderay_tab_width** - The tab width used in highlighted code
|
||||
* **coderay_wrap** - Defines how the highlighted code should be wrapped
|
||||
* **enable_coderay** - Use coderay for syntax highlighting
|
||||
* **entity_output** - Defines how entities are output
|
||||
* **footnote_backlink** - Defines the text that should be used for the footnote backlinks
|
||||
* **footnote_backlink_inline** - Specifies whether the footnote backlink should always be inline
|
||||
* **footnote_nr** - The number of the first footnote
|
||||
* **gfm_quirks** - Enables a set of GFM specific quirks
|
||||
* **hard_wrap** - Interprets line breaks literally
|
||||
* **header_offset** - Sets the output offset for headers
|
||||
* **html_to_native** - Convert HTML elements to native elements
|
||||
* **line_width** - Defines the line width to be used when outputting a document
|
||||
* **link_defs** - Pre-defines link definitions
|
||||
* **math_engine** - Set the math engine
|
||||
* **math_engine_opts** - Set the math engine options
|
||||
* **parse_block_html** - Process kramdown syntax in block HTML tags
|
||||
* **parse_span_html** - Process kramdown syntax in span HTML tags
|
||||
* **smart_quotes** - Defines the HTML entity names or code points for smart quote output
|
||||
* **syntax_highlighter** - Set the syntax highlighter
|
||||
* **syntax_highlighter_opts** - Set the syntax highlighter options
|
||||
* **toc_levels** - Defines the levels that are used for the table of contents
|
||||
* **transliterated_header_ids** - Transliterate the header text before generating the ID
|
||||
* **typographic_symbols** - Defines a mapping from typographical symbol to output characters
|
||||
### Kramdown Processor
|
||||
|
||||
By default, Jekyll uses the [GitHub Flavored Markdown (GFM) processor](https://github.com/kramdown/parser-gfm) for Kramdown. (Specifying `input: GFM` is fine, but redundant.) GFM supports a couple additional Kramdown options, documented by [kramdown-parser-gfm](https://github.com/kramdown/parser-gfm). These options can be used directly in your Kramdown Jekyll config, like this:
|
||||
|
||||
### Example Usage
|
||||
```yaml
|
||||
kramdown:
|
||||
html_to_native: true
|
||||
gfm_quirks: [paragraph_end]
|
||||
```
|
||||
|
||||
|
||||
You can also change the processor used by Kramdown (as specified for the `input` key in the [Kramdown RDoc](https://kramdown.gettalong.org/rdoc/Kramdown/Document.html#method-c-new)). For example, to use the non-GFM Kramdown processor in Jekyll, add the following to your configuration.
|
||||
|
||||
```yaml
|
||||
kramdown:
|
||||
input: Kramdown
|
||||
```
|
||||
|
||||
Documentation for Kramdown parsers is available in the [Kramdown docs](https://kramdown.gettalong.org/parser/kramdown.html). If you use a Kramdown parser other than Kramdown or GFM, you'll need to add the gem for it.
|
||||
|
||||
### Syntax Highlighting (CodeRay)
|
||||
|
||||
To use the [CodeRay](http://coderay.rubychan.de/) syntax highlighter with Kramdown, you need to add a dependency on the `kramdown-syntax-coderay` gem. For example, `bundle add kramdown-syntax-coderay`. Then, you'll be able to specify CodeRay in your `syntax_highlighter` config:
|
||||
|
||||
```yaml
|
||||
kramdown:
|
||||
syntax_highlighter: coderay
|
||||
```
|
||||
|
||||
CodeRay supports several of its own configuration options, documented in the [kramdown-syntax-coderay docs](https://github.com/kramdown/syntax-coderay) which can be passed as `syntax_highlighter_opts` like this:
|
||||
|
||||
```yaml
|
||||
kramdown:
|
||||
syntax_highlighter: coderay
|
||||
syntax_highlighter_opts:
|
||||
line_numbers: table
|
||||
bold_every: 5
|
||||
```
|
||||
|
||||
### Advanced Kramdown Options
|
||||
|
||||
Kramdown supports a variety of other relatively advanced options such as `header_offset` and `smart_quotes`. These are documented in the [Kramdown configuration documentation](https://kramdown.gettalong.org/options.html) and can be added to your Kramdown config like this:
|
||||
|
||||
```yaml
|
||||
kramdown:
|
||||
header_offset: 2
|
||||
```
|
||||
|
||||
<div class="note warning">
|
||||
<h5>There are two unsupported kramdown options</h5>
|
||||
<h5>There are several unsupported kramdown options</h5>
|
||||
<p>
|
||||
Please note that both <code>remove_block_html_tags</code> and
|
||||
<code>remove_span_html_tags</code> are currently unsupported in Jekyll due
|
||||
to the fact that they are not included within the kramdown HTML converter.
|
||||
Please note that Jekyll uses Kramdown's HTML converter. Kramdown options used only by other converters, such as <code>remove_block_html_tags</code> (used by the RemoveHtmlTags converter), will not work.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
For more details about these options have a look at the [Kramdown configuration documentation](https://kramdown.gettalong.org/options.html).
|
||||
|
||||
### CommonMark
|
||||
## CommonMark
|
||||
|
||||
[CommonMark](https://commonmark.org/) is a rationalized version of Markdown syntax, implemented in C and thus faster than default Kramdown implemented in Ruby. It [slightly differs](https://github.com/commonmark/CommonMark#differences-from-original-markdown) from original Markdown and does not support all the syntax elements implemented in Kramdown, like [Block Inline Attribute Lists](https://kramdown.gettalong.org/syntax.html#block-ials).
|
||||
|
||||
It comes in two flavors: basic CommonMark with [jekyll-commonmark](https://github.com/jekyll/jekyll-commonmark) plugin and [GitHub Flavored Markdown supported by GitHub Pages](https://github.com/github/jekyll-commonmark-ghpages).
|
||||
|
||||
### Redcarpet
|
||||
|
||||
Redcarpet can be configured by providing an `extensions` sub-setting, whose
|
||||
value should be an array of strings. Each string should be the name of one of
|
||||
the `Redcarpet::Markdown` class's extensions; if present in the array, it will
|
||||
set the corresponding extension to `true`.
|
||||
|
||||
Jekyll handles two special Redcarpet extensions:
|
||||
|
||||
- `no_fenced_code_blocks` --- By default, Jekyll sets the `fenced_code_blocks`
|
||||
extension (for delimiting code blocks with triple tildes or triple backticks)
|
||||
to `true`, probably because GitHub's eager adoption of them is starting to make
|
||||
them inescapable. Redcarpet's normal `fenced_code_blocks` extension is inert
|
||||
when used with Jekyll; instead, you can use this inverted version of the
|
||||
extension for disabling fenced code.
|
||||
|
||||
Note that you can also specify a language for highlighting after the first
|
||||
delimiter:
|
||||
|
||||
```ruby
|
||||
# ...ruby code
|
||||
```
|
||||
|
||||
With both fenced code blocks and highlighter enabled, this will statically
|
||||
highlight the code; without any syntax highlighter, it will add a
|
||||
`class="LANGUAGE"` attribute to the `<code>` element, which can be used as a
|
||||
hint by various JavaScript code highlighting libraries.
|
||||
|
||||
- `smart` --- This pseudo-extension turns on SmartyPants, which converts
|
||||
straight quotes to curly quotes and runs of hyphens to em (`---`) and en (`--`) dashes.
|
||||
|
||||
All other extensions retain their usual names from Redcarpet, and no renderer
|
||||
options aside from `smart` can be specified in Jekyll. [A list of available
|
||||
extensions can be found in the Redcarpet README file.](https://github.com/vmg/redcarpet/blob/v3.2.2/README.markdown#and-its-like-really-simple-to-use)
|
||||
Make sure you're looking at the README for the right version of
|
||||
Redcarpet: Jekyll currently uses v3.2.x. The most commonly used
|
||||
extensions are:
|
||||
|
||||
- `tables`
|
||||
- `no_intra_emphasis`
|
||||
- `autolink`
|
||||
|
||||
### Custom Markdown Processors
|
||||
|
||||
If you're interested in creating a custom markdown processor, you're in luck! Create a new class in the `Jekyll::Converters::Markdown` namespace:
|
||||
|
||||
@@ -20,150 +20,25 @@ class="flag">flags</code> (specified on the command-line) that control them.
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Site Source</strong></p>
|
||||
<p class="description">Change the directory where Jekyll will read files</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">source: DIR</code></p>
|
||||
<p><code class="flag">-s, --source DIR</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Site Destination</strong></p>
|
||||
<p class="description">Change the directory where Jekyll will write files</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">destination: DIR</code></p>
|
||||
<p><code class="flag">-d, --destination DIR</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Safe</strong></p>
|
||||
<p class="description">
|
||||
Disable <a href="/docs/plugins/">custom plugins</a>, caching to disk
|
||||
and ignore symbolic links.
|
||||
</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">safe: BOOL</code></p>
|
||||
<p><code class="flag">--safe</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name">
|
||||
<strong>Disable Disk Cache</strong>
|
||||
<span class="version-badge" title="Introduced in v4.1.0">4.1.0</span>
|
||||
</p>
|
||||
<p class="description">
|
||||
Disable caching of content to disk in order to skip creating a
|
||||
<code>.jekyll-cache</code> or similar directory at the source
|
||||
to avoid interference with virtual environments and third-party
|
||||
directory watchers.
|
||||
Caching to disk is always disabled in <code>safe</code> mode.
|
||||
</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">disable_disk_cache: BOOL</code></p>
|
||||
<p><code class="flag">--disable-disk-cache</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name">
|
||||
<strong>Ignore theme configuration</strong>
|
||||
<span class="version-badge" title="Introduced in v4.1.0">4.1.0</span>
|
||||
</p>
|
||||
<p class="description">
|
||||
Jekyll 4.0 started allowing themes to bundle a <code>_config.yml</code>
|
||||
to simplify theme-onboarding for new users.
|
||||
In the unfortunate situation that importing a bundled theme configuration
|
||||
messes up the merged site-configuration, the user can configure Jekyll
|
||||
to not import the theme-config entirely.
|
||||
</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">ignore_theme_config: BOOL</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Exclude</strong></p>
|
||||
<p class="description">
|
||||
Exclude directories and/or files from the
|
||||
conversion. These exclusions are relative to the site's
|
||||
source directory and cannot be outside the source directory.
|
||||
</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">exclude: [DIR, FILE, ...]</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Include</strong></p>
|
||||
<p class="description">
|
||||
Force inclusion of directories and/or files in the conversion.
|
||||
<code>.htaccess</code> is a good example since dotfiles are excluded
|
||||
by default.
|
||||
</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">include: [DIR, FILE, ...]</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Keep files</strong></p>
|
||||
<p class="description">
|
||||
When clobbering the site destination, keep the selected files.
|
||||
Useful for files that are not generated by jekyll; e.g. files or
|
||||
assets that are generated by your build tool.
|
||||
The paths are relative to the <code>destination</code>.
|
||||
</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">keep_files: [DIR, FILE, ...]</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Time Zone</strong></p>
|
||||
<p class="description">
|
||||
Set the time zone for site generation. This sets the <code>TZ</code>
|
||||
environment variable, which Ruby uses to handle time and date
|
||||
creation and manipulation. Any entry from the
|
||||
<a href="https://en.wikipedia.org/wiki/Tz_database">IANA Time Zone
|
||||
Database</a> is valid, e.g. <code>America/New_York</code>. A list of all
|
||||
available values can be found <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">
|
||||
here</a>. When serving on a local machine, the default time zone is set by your operating system. But when served on a remote host/server, the default time zone depends on the server's setting or location.
|
||||
</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">timezone: TIMEZONE</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Encoding</strong></p>
|
||||
<p class="description">
|
||||
Set the encoding of files by name (only available for Ruby
|
||||
1.9 or later).
|
||||
The default value is <code>utf-8</code> starting in 2.0.0,
|
||||
and <code>nil</code> before 2.0.0, which will yield the Ruby
|
||||
default of <code>ASCII-8BIT</code>.
|
||||
Available encodings can be shown by the
|
||||
command <code>ruby -e 'puts Encoding::list.join("\n")'</code>.
|
||||
</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">encoding: ENCODING</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
{% for setting in site.data.config_options.global %}
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name">
|
||||
<strong>{{ setting.name }}</strong>
|
||||
{% if setting.version-badge %}
|
||||
<span class="version-badge" title="Introduced in v{{ setting.version-badge }}">{{ setting.version-badge }}</span>
|
||||
{% endif %}
|
||||
</p>
|
||||
<p class="description">{{ setting.description }}</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">{{ setting.option }}</code></p>
|
||||
{% if setting.flag %}
|
||||
<p><code class="flag">{{ setting.flag }}</code></p>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td>
|
||||
<p class='name'><strong>Defaults</strong></p>
|
||||
@@ -205,162 +80,23 @@ class="flag">flags</code> (specified on the command-line) that control them.
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Regeneration</strong></p>
|
||||
<p class="description">Enable auto-regeneration of the site when files are modified.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="flag">-w, --[no-]watch</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Configuration</strong></p>
|
||||
<p class="description">Specify config files instead of using <code>_config.yml</code> automatically. Settings in later files override settings in earlier files.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="flag">--config FILE1[,FILE2,...]</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Drafts</strong></p>
|
||||
<p class="description">Process and render draft posts.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">show_drafts: BOOL</code></p>
|
||||
<p><code class="flag">--drafts</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Environment</strong></p>
|
||||
<p class="description">Use a specific environment value in the build.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="flag">JEKYLL_ENV=production</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Future</strong></p>
|
||||
<p class="description">Publish posts or collection documents with a future date.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">future: BOOL</code></p>
|
||||
<p><code class="flag">--future</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Unpublished</strong></p>
|
||||
<p class="description">Render posts that were marked as unpublished.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">unpublished: BOOL</code></p>
|
||||
<p><code class="flag">--unpublished</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>LSI</strong></p>
|
||||
<p class="description">Produce an index for related posts. Requires the
|
||||
<a href="https://jekyll.github.io/classifier-reborn/">classifier-reborn</a> plugin.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">lsi: BOOL</code></p>
|
||||
<p><code class="flag">--lsi</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Limit Posts</strong></p>
|
||||
<p class="description">Limit the number of posts to parse and publish.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">limit_posts: NUM</code></p>
|
||||
<p><code class="flag">--limit_posts NUM</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Force polling</strong></p>
|
||||
<p class="description">Force watch to use polling.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">force_polling: BOOL</code></p>
|
||||
<p><code class="flag">--force_polling</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Verbose output</strong></p>
|
||||
<p class="description">Print verbose output.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="flag">-V, --verbose</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Silence Output</strong></p>
|
||||
<p class="description">Silence the normal output from Jekyll
|
||||
during a build</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="flag">-q, --quiet</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Incremental build</strong></p>
|
||||
<p class="description">
|
||||
Enable the experimental incremental build feature. Incremental build only
|
||||
re-builds posts and pages that have changed, resulting in significant performance
|
||||
improvements for large sites, but may also break site generation in certain
|
||||
cases.
|
||||
</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">incremental: BOOL</code></p>
|
||||
<p><code class="flag">-I, --incremental</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Liquid profiler</strong></p>
|
||||
<p class="description">
|
||||
Generate a Liquid rendering profile to help you identify performance bottlenecks.
|
||||
</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">profile: BOOL</code></p>
|
||||
<p><code class="flag">--profile</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Strict Front Matter</strong></p>
|
||||
<p class="description">
|
||||
Cause a build to fail if there is a YAML syntax error in a page's front matter.
|
||||
</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">strict_front_matter: BOOL</code></p>
|
||||
<p><code class="flag">--strict_front_matter</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Base URL</strong></p>
|
||||
<p class="description">Serve the website from the given base URL.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">baseurl: URL</code></p>
|
||||
<p><code class="flag">--baseurl URL</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
{% for setting in site.data.config_options.build %}
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name">
|
||||
<strong>{{ setting.name }}</strong>
|
||||
{% if setting.version-badge %}
|
||||
<span class="version-badge" title="Introduced in v{{ setting.version-badge }}">{{ setting.version-badge }}</span>
|
||||
{% endif %}
|
||||
</p>
|
||||
<p class="description">{{ setting.description }}</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
{% if setting.option %}<p><code class="option">{{ setting.option }}</code></p>{% endif %}
|
||||
{% if setting.flag %}<p><code class="flag">{{ setting.flag }}</code></p>{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -380,73 +116,39 @@ before your site is served.
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Local Server Port</strong></p>
|
||||
<p class="description">Listen on the given port.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">port: PORT</code></p>
|
||||
<p><code class="flag">--port PORT</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Local Server Hostname</strong></p>
|
||||
<p class="description">Listen at the given hostname.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">host: HOSTNAME</code></p>
|
||||
<p><code class="flag">--host HOSTNAME</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Live Reload</strong></p>
|
||||
<p class="description">Reload a page automatically on the browser when its content is edited.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">livereload: true</code></p>
|
||||
<p><code class="flag">-l, --livereload</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Detach</strong></p>
|
||||
<p class="description">Detach the server from the terminal.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="option">detach: BOOL</code></p>
|
||||
<p><code class="flag">-B, --detach</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>Skips the initial site build</strong></p>
|
||||
<p class="description">Skips the initial site build which occurs before the server is started.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="flag">--skip-initial-build</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>X.509 (SSL) Private Key</strong></p>
|
||||
<p class="description">SSL Private Key, stored or symlinked in the site source.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="flag">--ssl-key</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name"><strong>X.509 (SSL) Certificate</strong></p>
|
||||
<p class="description">SSL Public certificate, stored or symlinked in the site source.</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
<p><code class="flag">--ssl-cert</code></p>
|
||||
</td>
|
||||
</tr>
|
||||
{% for setting in site.data.config_options.serve %}
|
||||
<tr class="setting">
|
||||
<td>
|
||||
<p class="name">
|
||||
<strong>{{ setting.name }}</strong>
|
||||
{% if setting.version-badge %}
|
||||
<span class="version-badge" title="Introduced in v{{ setting.version-badge }}">{{ setting.version-badge }}</span>
|
||||
{% endif %}
|
||||
</p>
|
||||
<p class="description">{{ setting.description }}</p>
|
||||
</td>
|
||||
<td class="align-center">
|
||||
{% if setting.option %}
|
||||
<p><code class="option">{{ setting.option }}</code></p>
|
||||
{% elsif setting.options %}
|
||||
<p>
|
||||
{% for option in setting.options %}
|
||||
<code class="option">{{ option }}</code><br>
|
||||
{% endfor %}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if setting.flag %}
|
||||
<p><code class="flag">{{ setting.flag }}</code></p>
|
||||
{% elsif setting.flags %}
|
||||
<p>
|
||||
{% for flag in setting.flags %}
|
||||
<code class="flag">{{ flag }}</code><br>
|
||||
{% endfor %}
|
||||
</p>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
15
docs/_docs/configuration/sass.md
Normal file
15
docs/_docs/configuration/sass.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Sass/SCSS Options
|
||||
permalink: "/docs/configuration/sass/"
|
||||
---
|
||||
|
||||
Jekyll comes bundled with [jekyll-sass-converter](https://github.com/jekyll/jekyll-sass-converter) plugin. By default, Jekyll will look for Sass partials in the `_sass` directory relative to your site's `source` directory.
|
||||
|
||||
You can further configure the plugin by adding options to your Jekyll config under the `sass` attribute. See the [plugin's documentation](https://github.com/jekyll/jekyll-sass-converter#usage) for details and for its default values.
|
||||
|
||||
<div class="note info">
|
||||
<p>
|
||||
Note that directory paths specified in the <code>sass</code> configuration
|
||||
are resolved relative to your site's <code>source</code>, not relative to the location of the <code>_config.yml</code> file.
|
||||
</p>
|
||||
</div>
|
||||
@@ -15,9 +15,9 @@ To start building your project on CircleCI, all you need to do is 'follow' your
|
||||
1. Visit the 'Add Projects' page
|
||||
1. From the GitHub or Bitbucket tab on the left, choose a user or organization.
|
||||
1. Find your project in the list and click 'Build project' on the right.
|
||||
1. The first build will start on its own. You can start telling CircleCI how to build your project by creating a [circle.yml][3] file in the root of your repository.
|
||||
1. The first build will start on its own. You can start telling CircleCI how to build your project by creating a [.circleci/config.yml][3] file in the root of your repository.
|
||||
|
||||
[3]: https://circleci.com/docs/configuration/
|
||||
[3]: https://circleci.com/docs/2.0/configuration-reference/
|
||||
|
||||
## 2. Dependencies
|
||||
|
||||
@@ -28,22 +28,24 @@ The easiest way to manage dependencies for a Jekyll project (with or without Cir
|
||||
```ruby
|
||||
source 'https://rubygems.org'
|
||||
|
||||
ruby '2.4.0'
|
||||
ruby '2.7.4'
|
||||
|
||||
gem 'jekyll'
|
||||
gem 'html-proofer'
|
||||
```
|
||||
|
||||
CircleCI detects when `Gemfile` is present and will automatically run `bundle install` for you in the `dependencies` phase.
|
||||
```yaml
|
||||
- step:
|
||||
run: bundle install
|
||||
```
|
||||
|
||||
## 3. Testing
|
||||
|
||||
The most basic test that can be run is seeing if `jekyll build` actually works. This is a blocker, a dependency if you will, for other tests you might run on the generate site. So we'll run Jekyll, via Bundler, in the `dependencies` phase.
|
||||
|
||||
```yaml
|
||||
dependencies:
|
||||
post:
|
||||
- bundle exec jekyll build
|
||||
- step:
|
||||
run: bundle exec jekyll build
|
||||
```
|
||||
|
||||
### HTML Proofer
|
||||
@@ -54,52 +56,32 @@ With your site built, it's useful to run tests to check for valid HTML, broken l
|
||||
[6]: https://github.com/gjtorikian/html-proofer/blob/master/README.md#configuration
|
||||
|
||||
```yaml
|
||||
test:
|
||||
post:
|
||||
- bundle exec htmlproofer ./_site --check-html --disable-external
|
||||
- step:
|
||||
run: bundle exec htmlproofer ./_site --check-html --disable-external
|
||||
```
|
||||
|
||||
## Complete Example circle.yml File
|
||||
## Complete Example .circleci/config.yml File
|
||||
|
||||
### CircleCI v1
|
||||
|
||||
When you put it all together, here's an example of what that `circle.yml` file could look like in v1:
|
||||
|
||||
```yaml
|
||||
machine:
|
||||
environment:
|
||||
NOKOGIRI_USE_SYSTEM_LIBRARIES: true # speeds up installation of html-proofer
|
||||
|
||||
dependencies:
|
||||
post:
|
||||
- bundle exec jekyll build
|
||||
|
||||
test:
|
||||
post:
|
||||
- bundle exec htmlproofer ./_site --allow-hash-href --check-favicon --check-html --disable-external
|
||||
|
||||
deployment:
|
||||
prod:
|
||||
branch: master
|
||||
commands:
|
||||
- rsync -va --delete ./_site username@my-website:/var/html
|
||||
```
|
||||
|
||||
### CircleCI v2
|
||||
|
||||
CircleCI v2 is a Docker-based system. The example `circle.yml` below demonstrates how to
|
||||
The example `.circleci/config.yml` below demonstrates how to
|
||||
deploy your Jekyll project to AWS. In order for this to work you would first have to set the
|
||||
`S3_BUCKET_NAME` [environment variable](https://circleci.com/docs/2.0/env-vars/).
|
||||
|
||||
```yaml
|
||||
defaults: &defaults
|
||||
working_directory: ~/repo
|
||||
version: 2
|
||||
workflows:
|
||||
test-deploy:
|
||||
jobs:
|
||||
- build
|
||||
- deploy:
|
||||
requires:
|
||||
- build
|
||||
filters:
|
||||
branches:
|
||||
only: master
|
||||
version: 2.1
|
||||
jobs:
|
||||
build:
|
||||
<<: *defaults
|
||||
docker:
|
||||
- image: circleci/ruby:2.5
|
||||
- image: cimg/ruby:2.7.4
|
||||
environment:
|
||||
BUNDLE_PATH: ~/repo/vendor/bundle
|
||||
steps:
|
||||
@@ -131,9 +113,8 @@ jobs:
|
||||
paths:
|
||||
- _site
|
||||
deploy:
|
||||
<<: *defaults
|
||||
docker:
|
||||
- image: circleci/python:3.6.3
|
||||
- image: cimg/python:3.9.1
|
||||
environment:
|
||||
S3_BUCKET_NAME: <<YOUR BUCKET NAME HERE>>
|
||||
steps:
|
||||
@@ -145,17 +126,6 @@ jobs:
|
||||
- run:
|
||||
name: Upload to s3
|
||||
command: ~/.local/bin/aws s3 sync ./_site s3://$S3_BUCKET_NAME/ --delete --acl public-read
|
||||
workflows:
|
||||
version: 2
|
||||
test-deploy:
|
||||
jobs:
|
||||
- build
|
||||
- deploy:
|
||||
requires:
|
||||
- build
|
||||
filters:
|
||||
branches:
|
||||
only: master
|
||||
```
|
||||
|
||||
## Questions?
|
||||
|
||||
@@ -6,13 +6,12 @@ When building a Jekyll site with GitHub Pages, the standard flow is restricted f
|
||||
and to make it simpler to get a site setup. For more control over the build and still host the site
|
||||
with GitHub Pages you can use GitHub Actions.
|
||||
|
||||
|
||||
## Advantages of using Actions
|
||||
|
||||
### Control over gemset
|
||||
|
||||
- **Jekyll version** --- Instead of using the currently enabled version at `3.8.5`, you can use any
|
||||
version of Jekyll you want. For example `4.0.0`, or point directly to the repository.
|
||||
- **Jekyll version** --- Instead of using the currently enabled version at `3.9.0`, you can use any
|
||||
version of Jekyll you want. For example `{{site.version}}`, or point directly to the repository.
|
||||
- **Plugins** --- You can use any Jekyll plugins irrespective of them being on the
|
||||
[supported versions][ghp-whitelist] list, even `*.rb` files placed in the `_plugins` directory
|
||||
of your site.
|
||||
@@ -25,16 +24,15 @@ with GitHub Pages you can use GitHub Actions.
|
||||
- **Logging** --- The build log is visible and can be tweaked to be verbose, so it is much easier to
|
||||
debug errors using Actions.
|
||||
|
||||
|
||||
## Workspace setup
|
||||
|
||||
The first and foremost requirement is a Jekyll project hosted at GitHub. Choose an existing Jekyll
|
||||
project or follow the [Quickstart]({{ '/docs' | relative_url }}) and push the repository to GitHub
|
||||
project or follow the [quickstart]({{ '/docs/' | relative_url }}) and push the repository to GitHub
|
||||
if it is not hosted there already.
|
||||
|
||||
We're only going to cover builds from the `master` branch in this page. Therefore, ensure that you
|
||||
are working on the `master` branch. If necessary, you may create it based on your default branch.
|
||||
When the Action builds your site, the contents of the *destination* directory will be automatically
|
||||
We're only going to cover builds from the `main` branch in this page. Therefore, ensure that you
|
||||
are working on the `main` branch. If necessary, you may create it based on your default branch.
|
||||
When the Action builds your site, the contents of the _destination_ directory will be automatically
|
||||
pushed to the `gh-pages` branch with a commit, ready to be used for serving.
|
||||
|
||||
{: .note .warning}
|
||||
@@ -53,6 +51,7 @@ title: "Jekyll Actions Demo"
|
||||
```
|
||||
|
||||
{% raw %}
|
||||
|
||||
```liquid
|
||||
---
|
||||
---
|
||||
@@ -64,15 +63,15 @@ Welcome to My Home Page
|
||||
- Original date - {{ date }}
|
||||
- With timeago filter - {{ date | timeago }}
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
{% endraw %}
|
||||
|
||||
```ruby
|
||||
# Gemfile
|
||||
|
||||
source 'https://rubygems.org'
|
||||
|
||||
gem 'jekyll', '~> 4.0'
|
||||
gem 'jekyll', '~> 4.2'
|
||||
|
||||
group :jekyll_plugins do
|
||||
gem 'jekyll-timeago', '~> 0.13.1'
|
||||
@@ -93,51 +92,62 @@ was generated with an old version of Bundler.
|
||||
### Setting up the Action
|
||||
|
||||
GitHub Actions are registered for a repository by using a YAML file inside the directory path
|
||||
`.github/workflows` (note the dot at the start). Here we shall employ
|
||||
[Jekyll Actions][jekyll-actions] from the Marketplace for its simplicity.
|
||||
`.github/workflows` (note the dot at the start). For simplicity, here we use one of the
|
||||
[Jekyll Actions](#external-links) to show you how to use the action.
|
||||
|
||||
Create a **workflow file**, say `github-pages.yml`, using either the GitHub interface or by pushing
|
||||
a YAML file to the workflow directory path manually. The base contents are:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
name: Build and deploy Jekyll site to GitHub Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main # or master before October 2020
|
||||
|
||||
jobs:
|
||||
github-pages:
|
||||
runs-on: ubuntu-16.04
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: helaili/jekyll-action@2.0.1
|
||||
env:
|
||||
JEKYLL_PAT: ${{ secrets.JEKYLL_PAT }}
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: vendor/bundle
|
||||
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gems-
|
||||
- uses: helaili/jekyll-action@2.0.5 # Choose any one of the Jekyll Actions
|
||||
with: # Some relative inputs of your action
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
The above workflow can be explained as the following:
|
||||
|
||||
- We trigger the build using **on.push** condition for `master` branch only --- this prevents
|
||||
- We trigger the build using **on.push** condition for `main` branch only --- this prevents
|
||||
the Action from overwriting the `gh-pages` branch on any feature branch pushes.
|
||||
- The **name** of the job matches our YAML filename: `github-pages`.
|
||||
- The **checkout** action takes care of cloning your repository.
|
||||
- We specify our selected **action** and **version number** using `helaili/jekyll-action@2.0.0`.
|
||||
This handles the build and deploy.
|
||||
- We set a reference to a secret **environment variable** for the action to use. The `JEKYLL_PAT`
|
||||
is a *Personal Access Token* and is detailed in the next section.
|
||||
- The **cache** action is an optimization to avoid fetching and installing gems on every build.
|
||||
- We specify our selected **action** and **version number** using `helaili/jekyll-action@2.0.5`,
|
||||
this handles the build and deploy. You can choose any one of the Jekyll Actions that matches
|
||||
your project and flavor from [GitHub Marketplace](https://github.com/marketplace?type=actions&query=jekyll+action).
|
||||
- We set a reference to a secret **environment variable** for the action to use. The `GITHUB_TOKEN`
|
||||
is a secret token automatically initialized at the start of every workflow run.
|
||||
More information can be found in [GitHub documentation](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret).
|
||||
|
||||
Instead of using the **on.push** condition, you could trigger your build on a **schedule** by
|
||||
Instead of using the **on.push** condition, you could trigger your build on a **schedule** by
|
||||
using the [on.schedule] parameter. For example, here we build daily at midnight by specifying
|
||||
**cron** syntax, which can be tested at the [crontab guru] site.
|
||||
|
||||
```yaml
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
- cron: "0 0 * * *"
|
||||
```
|
||||
|
||||
Note that this string must be quoted to prevent the asterisks from being evaluated incorrectly.
|
||||
@@ -145,12 +155,18 @@ Note that this string must be quoted to prevent the asterisks from being evaluat
|
||||
[on.schedule]: https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule
|
||||
[crontab guru]: https://crontab.guru/
|
||||
|
||||
|
||||
### Providing permissions
|
||||
|
||||
The action needs permissions to push to your `gh-pages` branch. So you need to create a GitHub
|
||||
**authentication token** on your GitHub profile, then set it as an environment variable in your
|
||||
build using _Secrets_:
|
||||
At the start of each workflow run, GitHub automatically creates a unique `GITHUB_TOKEN` secret to use in
|
||||
your workflow. You can use the `GITHUB_TOKEN` to authenticate in a workflow run. You can use the
|
||||
`GITHUB_TOKEN` by using the standard syntax for referencing secrets: `${{ secrets.GITHUB_TOKEN }}`.
|
||||
For more information, please read [GitHub's docs on token authentication][github-token-ref]
|
||||
|
||||
[github-token-ref]: https://docs.github.com/en/actions/security-guides/automatic-token-authentication
|
||||
|
||||
If you need a token that requires permissions that aren't available in the `GITHUB_TOKEN`, you can create
|
||||
a Personal Access Token (PAT), and set it as a secret in your repository for this action to push to the
|
||||
`gh-pages` branch:
|
||||
|
||||
1. On your GitHub profile, under **Developer Settings**, go to the [Personal Access Tokens][tokens]
|
||||
section.
|
||||
@@ -159,23 +175,23 @@ build using _Secrets_:
|
||||
to commit to the `gh-pages` branch.
|
||||
3. **Copy** the token value.
|
||||
4. Go to your repository's **Settings** and then the **Secrets** tab.
|
||||
5. **Create** a token named `JEKYLL_PAT` (*important*). Give it a value using the value copied
|
||||
5. **Create** a token named `YOUR_CUSTOM_TOKEN` (_important_). Give it a value using the value copied
|
||||
above.
|
||||
|
||||
### Build and deploy
|
||||
|
||||
On pushing any local changes onto `master`, the action will be triggered and the build will
|
||||
On pushing any local changes onto `main`, the action will be triggered and the build will
|
||||
**start**.
|
||||
|
||||
To watch the progress and see any build errors, check on the build **status** using one of the
|
||||
following approaches:
|
||||
|
||||
- **View by commit**
|
||||
- Go to the repository level view in GitHub. Under the most recent commit (near the top) you’ll
|
||||
see a **status symbol** next to the commit message as a tick or _X_. Hover over it and click
|
||||
the **details** link.
|
||||
- Go to the repository level view in GitHub. Under the most recent commit (near the top) you’ll
|
||||
see a **status symbol** next to the commit message as a tick or _X_. Hover over it and click
|
||||
the **details** link.
|
||||
- **Actions tab**
|
||||
- Go to the repository's Actions tab. Click on the `jekyll` workflow tab.
|
||||
- Go to the repository's Actions tab. Click on the `jekyll` workflow tab.
|
||||
|
||||
If all goes well, all steps will be green and the built assets will now exist on the `gh-pages`
|
||||
branch.
|
||||
@@ -204,10 +220,13 @@ successful deploy from the Action.
|
||||
- [jekyll-actions] is an action available on the GitHub Marketplace and was used in this guide.
|
||||
- [jekyll-actions-quickstart] is an unofficial repository that includes a live demo of the
|
||||
`jekyll-actions` action. That project can be used as a template for making a new site.
|
||||
|
||||
- [jekyll-action-ts] is another action to build and publish Jekyll sites on GiHub Pages that includes HTML formatting options with Prettier and caching.
|
||||
- [jekyll-deploy-action] is a GitHub Action to deploy the Jekyll site conveniently for GitHub Pages (An alternative action with better speed and compatibility).
|
||||
|
||||
[ghp-whitelist]: https://pages.github.com/versions/
|
||||
[timeago-plugin]: https://rubygems.org/gems/jekyll-timeago
|
||||
[tokens]: https://github.com/settings/tokens
|
||||
[jekyll-actions]: https://github.com/marketplace/actions/jekyll-actions
|
||||
[jekyll-actions-quickstart]: https://github.com/MichaelCurrin/jekyll-actions-quickstart
|
||||
[jekyll-action-ts]: https://github.com/limjh16/jekyll-action-ts
|
||||
[jekyll-deploy-action]: https://github.com/jeffreytse/jekyll-deploy-action
|
||||
|
||||
61
docs/_docs/continuous-integration/razorops.md
Normal file
61
docs/_docs/continuous-integration/razorops.md
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: "Razorops"
|
||||
---
|
||||
|
||||
[Razorops][razorops-homepage] is a complete container native CI/CD solution handling all aspects of the software lifecycle from the moment a commit is created until it is deployed to production.
|
||||
Razorops has all the capabilities that you would expect from a CI/CD platform such as
|
||||
1. Code compilation/build
|
||||
2. Artifact packaging
|
||||
3. Testing Automation(unit, integration, acceptance etc.)
|
||||
4. Faster builds and shipping to production
|
||||
|
||||
Razorops is a single solution that implements the whole pipeline from start to deployment.
|
||||
|
||||
With [Razorops][razorops-homepage] you can set up your Jekyll websites project's build, test, and deploy steps just in 15 min. It supports [GitHub][github-homepage], [Bitbucket][bitbucket-homepage], and [GitLab][gitlab-homepage] repositories. The following guide will show you how to set up a free environment to build, test and deploy your Jekyll project.
|
||||
|
||||
[razorops-homepage]: https://razorops.com/
|
||||
[docker-homepage]: https://www.docker.com/
|
||||
[github-homepage]: https://github.com
|
||||
[bitbucket-homepage]: https://bitbucket.org/
|
||||
[gitlab-homepage]: https://gitlab.com
|
||||
[deploy-s3]: https://razorops.com/blog/how-to-deploy-a-static-website-to-aws-s3-with-razorops-ci-cd/
|
||||
|
||||
## 1. Getting started
|
||||
|
||||
1. Log in at [https://razorops.com/][razorops-homepage] with your GitHub/Bitbucket or Gitlab account
|
||||
2. Create a pipeline, choose your Git provider and select your Jekyll Project
|
||||
3. Add .razorops.yaml file in your root directory of your project
|
||||
4. Add environment var and your deployment is ready
|
||||
5. Add build and deployment steps as shown in this post [How to Deploy a Static Website to AWS S3 with Razorops CI/CD][deploy-s3]
|
||||
|
||||
## 2. How it works
|
||||
|
||||
Whenever you make a push to the selected branch, your steps auto runs as defined in .razorops.yaml file
|
||||
|
||||
```yaml
|
||||
tasks:
|
||||
build-and-deploy:
|
||||
steps:
|
||||
- checkout
|
||||
# commands to build jekyll website
|
||||
- commands:
|
||||
- bundle install
|
||||
- JEKYLL_ENV=production bundle exec jekyll build
|
||||
# Commands to upload static pages folder to AWS S3 or ftp
|
||||
# Set AWS access key & secrets environment variables under
|
||||
# Razorops dashboard project pipelines
|
||||
- commands:
|
||||
- aws s3 rm s3://$AWS_S3_BUCKET --recursive
|
||||
- aws s3 cp _site s3://$AWS_S3_BUCKET --recursive
|
||||
if: branch == 'main'
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
Build step generates _site folder as Jekyll default and during deploy you will able to ship code to s3 or any ftp server you can define any command to ship your website code to server.
|
||||
|
||||
Razorops is FREE for opensource projects, Try it Now
|
||||
[https://razorops.com/][razorops-homepage]
|
||||
|
||||
|
||||
@@ -105,10 +105,6 @@ branches:
|
||||
- gh-pages # test the gh-pages branch
|
||||
- /pages-(.*)/ # test every branch which starts with "pages-"
|
||||
|
||||
env:
|
||||
global:
|
||||
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
@@ -187,18 +183,6 @@ prefixed, exemplified above with the `/pages-(.*)/` regular expression.
|
||||
The `branches` directive is completely optional. Travis will build from every
|
||||
push to any branch of your repo if leave it out.
|
||||
|
||||
```yaml
|
||||
env:
|
||||
global:
|
||||
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer
|
||||
```
|
||||
|
||||
Using `html-proofer`? You'll want this environment variable. Nokogiri, used
|
||||
to parse HTML files in your compiled site, comes bundled with libraries
|
||||
which it must compile each time it is installed. Luckily, you can
|
||||
dramatically decrease the install time of Nokogiri by setting the
|
||||
environment variable `NOKOGIRI_USE_SYSTEM_LIBRARIES` to `true`.
|
||||
|
||||
<div class="note warning">
|
||||
<h5>Be sure to exclude <code>vendor</code> from your
|
||||
<code>_config.yml</code></h5>
|
||||
|
||||
@@ -8,30 +8,30 @@ Hi there! Interested in contributing to Jekyll? We'd love your help. Jekyll is a
|
||||
|
||||
## Where to get help or report a problem
|
||||
|
||||
See the [support guidelines]({{ '/docs/support/' | relative_url }})
|
||||
See the [support guidelines](https://jekyllrb.com/docs/support/)
|
||||
|
||||
## Ways to contribute
|
||||
|
||||
Whether you're a developer, a designer, or just a Jekyll devotee, there are lots of ways to contribute. Here's a few ideas:
|
||||
|
||||
* [Install Jekyll on your computer](https://jekyllrb.com/docs/installation/) and kick the tires. Does it work? Does it do what you'd expect? If not, [open an issue](https://github.com/jekyll/jekyll/issues/new) and let us know.
|
||||
* Comment on some of the project's [open issues](https://github.com/jekyll/jekyll/issues). Have you experienced the same problem? Know a work around? Do you have a suggestion for how the feature could be better?
|
||||
* Read through the [documentation](https://jekyllrb.com/docs/home/), and click the "improve this page" button, any time you see something confusing, or have a suggestion for something that could be improved.
|
||||
* Browse through the [Jekyll discussion forum](https://talk.jekyllrb.com/), and lend a hand answering questions. There's a good chance you've already experienced what another user is experiencing.
|
||||
* Find an [open issue](https://github.com/jekyll/jekyll/issues) (especially [those labeled `help-wanted`](https://github.com/jekyll/jekyll/issues?q=is%3Aopen+is%3Aissue+label%3Ahelp-wanted)), and submit a proposed fix. If it's your first pull request, we promise we won't bite, and are glad to answer any questions.
|
||||
* Help evaluate [open pull requests](https://github.com/jekyll/jekyll/pulls), by testing the changes locally and reviewing what's proposed.
|
||||
- [Install Jekyll on your computer](https://jekyllrb.com/docs/installation/) and kick the tires. Does it work? Does it do what you'd expect? If not, [open an issue](https://github.com/jekyll/jekyll/issues/new) and let us know.
|
||||
- Comment on some of the project's [open issues](https://github.com/jekyll/jekyll/issues). Have you experienced the same problem? Know a work around? Do you have a suggestion for how the feature could be better?
|
||||
- Read through the [documentation](https://jekyllrb.com/docs/home/), and click the "improve this page" button, any time you see something confusing, or have a suggestion for something that could be improved.
|
||||
- Browse through the [Jekyll discussion forum](https://talk.jekyllrb.com/), and lend a hand answering questions. There's a good chance you've already experienced what another user is experiencing.
|
||||
- Find an [open issue](https://github.com/jekyll/jekyll/issues) (especially [those labeled `help-wanted`](https://github.com/jekyll/jekyll/issues?q=is%3Aopen+is%3Aissue+label%3Ahelp-wanted)), and submit a proposed fix. If it's your first pull request, we promise we won't bite, and are glad to answer any questions.
|
||||
- Help evaluate [open pull requests](https://github.com/jekyll/jekyll/pulls), by testing the changes locally and reviewing what's proposed.
|
||||
|
||||
## Submitting a pull request
|
||||
|
||||
### Pull requests generally
|
||||
|
||||
* The smaller the proposed change, the better. If you'd like to propose two unrelated changes, submit two pull requests.
|
||||
- The smaller the proposed change, the better. If you'd like to propose two unrelated changes, submit two pull requests.
|
||||
|
||||
* The more information, the better. Make judicious use of the pull request body. Describe what changes were made, why you made them, and what impact they will have for users.
|
||||
- The more information, the better. Make judicious use of the pull request body. Describe what changes were made, why you made them, and what impact they will have for users.
|
||||
|
||||
* If this is your first pull request, it may help to [understand GitHub Flow](https://guides.github.com/introduction/flow/).
|
||||
- If this is your first pull request, it may help to [understand GitHub Flow](https://guides.github.com/introduction/flow/).
|
||||
|
||||
* If you're submitting a code contribution, be sure to read the [code contributions](#code-contributions) section below.
|
||||
- If you're submitting a code contribution, be sure to read the [code contributions](#code-contributions) section below.
|
||||
|
||||
### Submitting a pull request via github.com
|
||||
|
||||
@@ -80,11 +80,12 @@ If you ever need to update our documentation with an icon that is not already av
|
||||
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 `<jekyll>/docs/`.
|
||||
- Copy the contents of `selection.json` and overwrite existing content inside `<jekyll>/docs/icomoon-selection.json`.
|
||||
- Copy the entire `@font-face {}` declaration and only the **new-icon(s)' css declarations** further below, to update the
|
||||
|
||||
- Copy the entire `fonts` directory over and overwrite existing ones at `<jekyll>/docs/`.
|
||||
- Copy the contents of `selection.json` and overwrite existing content inside `<jekyll>/docs/icomoon-selection.json`.
|
||||
- Copy the entire `@font-face {}` declaration and only the **new-icon(s)' css declarations** further below, to update the
|
||||
`<jekyll>/docs/_sass/_font-awesome.scss` sass partial.
|
||||
- Fix paths in the `@font-face {}` declaration by adding `../` before `fonts/FontAwesome.*` like so:
|
||||
- Fix paths in the `@font-face {}` declaration by adding `../` before `fonts/FontAwesome.*` like so:
|
||||
`('../fonts/Fontawesome.woff?9h6hxj')`.
|
||||
|
||||
### Adding plugins
|
||||
@@ -105,21 +106,21 @@ If your contribution changes any Jekyll behavior, make sure to update the docume
|
||||
|
||||
#### Tests
|
||||
|
||||
* If you're creating a small fix or patch to an existing feature, a simple test is more than enough. You can usually copy/paste from an existing example in the `tests` folder, but if you need you can find out about our tests suites [Shoulda](https://github.com/thoughtbot/shoulda/tree/master) and [RSpec-Mocks](https://github.com/rspec/rspec-mocks).
|
||||
- If you're creating a small fix or patch to an existing feature, a simple test is more than enough. You can usually copy/paste from an existing example in the `tests` folder, but if you need you can find out about our tests suites [Shoulda](https://github.com/thoughtbot/shoulda/tree/master) and [RSpec-Mocks](https://github.com/rspec/rspec-mocks).
|
||||
|
||||
* If it's a brand new feature, create a new [Cucumber](https://github.com/cucumber/cucumber/) feature, reusing existing steps where appropriate.
|
||||
- If it's a brand new feature, create a new [Cucumber](https://github.com/cucumber/cucumber/) feature, reusing existing steps where appropriate.
|
||||
|
||||
### Code contributions generally
|
||||
|
||||
* Jekyll uses the [Rubocop](https://github.com/bbatsov/rubocop) static analyzer to ensure that contributions follow the [GitHub Ruby Styleguide](https://github.com/styleguide/ruby). Please check your code using `script/fmt` and resolve any errors before pushing your branch.
|
||||
- Jekyll uses the [Rubocop](https://github.com/bbatsov/rubocop) static analyzer to ensure that contributions follow the [GitHub Ruby Styleguide](https://github.com/styleguide/ruby). Please check your code using `script/fmt` and resolve any errors before pushing your branch.
|
||||
|
||||
* Don't bump the Gem version in your pull request (if you don't know what that means, you probably didn't).
|
||||
- Don't bump the Gem version in your pull request (if you don't know what that means, you probably didn't).
|
||||
|
||||
* You can use the command `script/console` to start a REPL to explore the result of
|
||||
Jekyll's methods. It also provides you with helpful methods to quickly create a
|
||||
site or configuration. [Feel free to check it out!](https://github.com/jekyll/jekyll/blob/master/script/console)
|
||||
- You can use the command `script/console` to start a REPL to explore the result of
|
||||
Jekyll's methods. It also provides you with helpful methods to quickly create a
|
||||
site or configuration. [Feel free to check it out!](https://github.com/jekyll/jekyll/blob/master/script/console)
|
||||
|
||||
* Previously, we've used the WIP Probot app to help contributors determine whether their pull request is ready for review. Please use a [draft pull request](https://help.github.com/en/articles/about-pull-requests#draft-pull-requests) instead. When you're ready, [mark the pull request as ready for review](https://help.github.com/en/articles/changing-the-stage-of-a-pull-request)
|
||||
- Previously, we've used the WIP Probot app to help contributors determine whether their pull request is ready for review. Please use a [draft pull request](https://help.github.com/en/articles/about-pull-requests#draft-pull-requests) instead. When you're ready, [mark the pull request as ready for review](https://help.github.com/en/articles/changing-the-stage-of-a-pull-request)
|
||||
|
||||
## Running tests locally
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@ Plugins/themes can also leverage Data Files to set configuration variables.
|
||||
## The Data Folder
|
||||
|
||||
The `_data` folder is where you can store additional data for Jekyll to use when
|
||||
generating your site. These files must be YAML, JSON, or CSV files (using either
|
||||
the `.yml`, `.yaml`, `.json` or `.csv` extension), and they will be
|
||||
generating your site. These files must be YAML, JSON, TSV or CSV files (using either
|
||||
the `.yml`, `.yaml`, `.json`, `.tsv`, or `.csv` extension), and they will be
|
||||
accessible via `site.data`.
|
||||
|
||||
## Example: List of members
|
||||
@@ -49,8 +49,8 @@ Parker Moore,parkr
|
||||
Liu Fengyun,liufengyun
|
||||
```
|
||||
|
||||
This data can be accessed via `site.data.members` (notice that the filename
|
||||
determines the variable name).
|
||||
This data can be accessed via `site.data.members` (notice that the file's *basename* determines the variable name and
|
||||
therefore one should avoid having data files with the same basename but different extensions, in the same directory).
|
||||
|
||||
You can now render the list of members in a template:
|
||||
|
||||
@@ -148,3 +148,30 @@ author: dave
|
||||
{% endraw %}
|
||||
|
||||
For information on how to build robust navigation for your site (especially if you have a documentation website or another type of Jekyll site with a lot of pages to organize), see [Navigation]({{ '/tutorials/navigation/' | relative_url }}).
|
||||
|
||||
## CSV/TSV Parse Options
|
||||
|
||||
The way Ruby parses CSV and TSV files can be customized with the `csv_reader` and `tsv_reader`
|
||||
configuration options. Each configuration key exposes the same options:
|
||||
|
||||
`converters`: What [CSV converters](https://ruby-doc.org/stdlib-2.5.0/libdoc/csv/rdoc/CSV.html#Converters) should be
|
||||
used when parsing the file. Available options are `integer`, `float`, `numeric`, `date`, `date_time` and
|
||||
`all`. By default, this list is empty.
|
||||
`encoding`: What encoding the files are in. Defaults to the site `encoding` configuration option.
|
||||
`headers`: Boolean field for whether to parse the first line of the file as headers. When `false`, it treats the
|
||||
first row as data. Defaults to `true`.
|
||||
|
||||
Examples:
|
||||
|
||||
```yaml
|
||||
csv_reader:
|
||||
converters:
|
||||
- numeric
|
||||
- datetime
|
||||
headers: true
|
||||
encoding: utf-8
|
||||
tsv_reader:
|
||||
converters:
|
||||
- all
|
||||
headers: false
|
||||
```
|
||||
|
||||
@@ -19,6 +19,7 @@ We have guides for the following providers:
|
||||
* [Travis CI]({{ '/docs/continuous-integration/travis-ci/' | relative_url }})
|
||||
* [CircleCI]({{ '/docs/continuous-integration/circleci/' | relative_url }})
|
||||
* [Buddy]({{ '/docs/continuous-integration/buddyworks/' | relative_url }})
|
||||
* [Razorops CI/CD]({{ '/docs/continuous-integration/razorops/' | relative_url }})
|
||||
|
||||
## Git post-receive hook
|
||||
|
||||
@@ -43,12 +44,11 @@ installed on the server:
|
||||
export GEM_HOME=$HOME/gems
|
||||
export PATH=$GEM_HOME/bin:$PATH
|
||||
|
||||
GIT_REPO=$HOME/myrepo.git
|
||||
TMP_GIT_CLONE=$HOME/tmp/myrepo
|
||||
GEMFILE=$TMP_GIT_CLONE/Gemfile
|
||||
PUBLIC_WWW=/var/www/myrepo
|
||||
|
||||
git clone $GIT_REPO $TMP_GIT_CLONE
|
||||
git clone $GIT_DIR $TMP_GIT_CLONE
|
||||
BUNDLE_GEMFILE=$GEMFILE bundle install
|
||||
BUNDLE_GEMFILE=$GEMFILE bundle exec jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW
|
||||
rm -Rf $TMP_GIT_CLONE
|
||||
|
||||
@@ -25,7 +25,7 @@ low-volume blogs as you only pay for what you use.
|
||||
|
||||
## FTP
|
||||
|
||||
Most traditional web hosting provider let you upload files to their servers over FTP. To upload a Jekyll site to a web host using FTP, run the `jekyll build` command and copy the contents of the generated `_site` folder to the root folder of your hosting account. This is most likely to be the `httpdocs` or `public_html` folder on most hosting providers.
|
||||
Most traditional web hosting providers let you upload files to their servers over FTP. To upload a Jekyll site to a web host using FTP, run the `jekyll build` command and copy the contents of the generated `_site` folder to the root folder of your hosting account. This is most likely to be the `httpdocs` or `public_html` folder on most hosting providers.
|
||||
|
||||
## scp
|
||||
|
||||
|
||||
@@ -3,11 +3,6 @@ title: 3rd Party
|
||||
permalink: /docs/deployment/third-party/
|
||||
---
|
||||
|
||||
## Aerobatic
|
||||
|
||||
[Aerobatic](https://www.aerobatic.com) has custom domains, global CDN distribution, basic auth, CORS proxying, and a growing list of plugins all included.
|
||||
|
||||
Automating the deployment of a Jekyll site is simple. See their [Jekyll docs](https://www.aerobatic.com/docs/static-site-generators/#jekyll) for more details. Your built `_site` folder is deployed to their highly-available, globally distributed hosting service.
|
||||
|
||||
## AWS Amplify
|
||||
|
||||
@@ -15,6 +10,10 @@ The [AWS Amplify Console](https://console.amplify.aws) provides continuous deplo
|
||||
|
||||
Read this [step-by-step guide](https://medium.com/@jameshamann/deploy-your-jekyll-site-using-aws-amplify-with-only-a-few-clicks-8f3dd8f26112) to deploy and host your Jekyll site on AWS Amplify.
|
||||
|
||||
## Bip
|
||||
|
||||
[Bip](https://bip.sh) provides zero downtime deployment, a global CDN, SSL, unlimited bandwidth and more for Jekyll websites. Deploy in seconds from the command line. [Visit the Bip website](https://bip.sh) for more information - which is also built with Jekyll.
|
||||
|
||||
## CloudCannon
|
||||
|
||||
[CloudCannon](https://cloudcannon.com) has everything you need to build, host
|
||||
@@ -46,22 +45,30 @@ Install the Kickster gem and you are good to go. More documentation can here fou
|
||||
|
||||
Netlify provides Global CDN, Continuous Deployment, one click HTTPS and [much more](https://www.netlify.com/features/), providing developers a robust toolset for modern web projects, without added complexity. Netlify supports custom plugins for Jekyll and has a free plan for open source projects.
|
||||
|
||||
Read this [Jekyll step-by-step guide](https://www.netlify.com/blog/2015/10/28/a-step-by-step-guide-jekyll-3.0-on-netlify/) to setup your Jekyll site on Netlify.
|
||||
Read this [Jekyll step-by-step guide](https://www.netlify.com/blog/2020/04/02/a-step-by-step-guide-jekyll-4.0-on-netlify/) to setup your Jekyll site on Netlify.
|
||||
|
||||
## Render
|
||||
|
||||
[Render](https://render.com) provides zero config continuous deployment for static sites. The service is free under 100GB monthly bandwith.
|
||||
[Render](https://render.com) provides zero config continuous deployment for static sites. The service is free under 100GB monthly bandwidth.
|
||||
|
||||
## Hostman
|
||||
|
||||
[Hostman](https://hostman.com) allows you to host websites for free with no configurations. Read [this guide](https://hostman.com/docs/jekyll) to deploy your Jekyll site on Hostman.
|
||||
|
||||
## Static Publisher
|
||||
|
||||
[Static Publisher](https://github.com/static-publisher/static-publisher) is another automated deployment option with a server listening for webhook posts, though it's not tied to GitHub specifically. It has a one-click deploy to Heroku, it can watch multiple projects from one server, it has an easy to user admin interface and can publish to either S3 or to a git repository (e.g. gh-pages).
|
||||
|
||||
## ZEIT
|
||||
## Vercel
|
||||
|
||||
[ZEIT](https://zeit.co/) provides zero config continuous deployment, HTTPS Custom domains, high performance smart CDN, you get instant static deploy for free.
|
||||
[Vercel](https://vercel.com/) provides zero config continuous deployment, HTTPS Custom domains, high performance smart CDN, you get instant static deploy for free.
|
||||
|
||||
## 21YunBox
|
||||
|
||||
[21YunBox](https://www.21yunbox.com) provides blazing fast Chinese CDN, Continuous Deployment, one click HTTPS and [much more](https://www.21yunbox.com/docs/v2/), providing developers a hassle-free solution to launch their web projects in China.
|
||||
[21YunBox](https://www.21yunbox.com) provides blazing fast Chinese CDN, Continuous Deployment, one click HTTPS and [much more](https://www.21yunbox.com/docs/), providing developers a hassle-free solution to launch their web projects in China.
|
||||
|
||||
Read this [Jekyll step-by-step guide](https://www.21yunbox.com/docs/v2/static.html#jekyll) to deploy your Jekyll site on 21YunBox.
|
||||
Read this [Jekyll step-by-step guide](https://www.21yunbox.com/docs/#/deploy-jekyll) to deploy your Jekyll site on 21YunBox.
|
||||
|
||||
## Layer0
|
||||
|
||||
[Layer0](https://www.layer0.co) is an all-in-one platform to develop, deploy, preview, experiment on, monitor, and run your headless frontend. It is focused on large, dynamic websites and best-in-class performance through EdgeJS (a JavaScript-based Content Delivery Network), predictive prefetching, and performance monitoring. Layer0 offers a free tier. Get started in just a few minutes by following [Layer0's guide to deploying Jekyll](https://docs.layer0.co/guides/jekyll).
|
||||
|
||||
@@ -15,40 +15,20 @@ simply because Jekyll treats files without front matter as static assets.
|
||||
So if you only need to push generated HTML, you're good to go without any
|
||||
further setup.
|
||||
|
||||
Never built a website with GitHub Pages before? [See this marvelous guide by
|
||||
Jonathan McGlone](http://jmcglone.com/guides/github-pages/) to get you up and
|
||||
running. This guide will teach you what you need to know about Git, GitHub, and
|
||||
Jekyll to create your very own website on GitHub Pages.
|
||||
The [GitHub Pages Documentation](https://docs.github.com/en/free-pro-team@latest/github/working-with-github-pages)
|
||||
is comprehensive and includes a [a guide to setting up a GitHub Pages site using
|
||||
Jekyll](https://docs.github.com/en/free-pro-team@latest/github/working-with-github-pages/setting-up-a-github-pages-site-with-jekyll).
|
||||
We recommend following this guide.
|
||||
|
||||
## 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](https://pages.github.com/versions/).
|
||||
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.
|
||||
|
||||
Note that GitHub Pages runs in `safe` mode and only allows [a set of whitelisted
|
||||
plugins](https://help.github.com/articles/configuring-jekyll-plugins/#default-plugins).
|
||||
|
||||
To use the currently-deployed version of the gem in your project, add the
|
||||
following to your `Gemfile`:
|
||||
|
||||
```ruby
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "github-pages", group: :jekyll_plugins
|
||||
```
|
||||
|
||||
Be sure to run `bundle update` often.
|
||||
This page contains some additional information which may be useful when working
|
||||
on GitHub Pages sites with Jekyll.
|
||||
|
||||
<div class="note">
|
||||
<h5>GitHub Pages Documentation, Help, and Support</h5>
|
||||
<p>
|
||||
For more information about what you can do with GitHub Pages, as well as for
|
||||
troubleshooting guides, you should check out
|
||||
<a href="https://help.github.com/categories/github-pages-basics/">GitHub’s Pages Help section</a>.
|
||||
<a href="https://docs.github.com/en/free-pro-team@latest/github/working-with-github-pages">GitHub’s Pages Help section</a>.
|
||||
If all else fails, you should contact <a href="https://github.com/contact">GitHub Support</a>.
|
||||
</p>
|
||||
</div>
|
||||
@@ -76,7 +56,7 @@ will resolve properly.
|
||||
## Deploying Jekyll to GitHub Pages
|
||||
|
||||
GitHub Pages work by looking at certain branches of repositories on GitHub.
|
||||
There are two basic types available: [user/organization and project pages](https://help.github.com/articles/user-organization-and-project-pages/).
|
||||
There are two basic types available: [user/organization and project pages](https://docs.github.com/en/free-pro-team@latest/github/working-with-github-pages/about-github-pages#types-of-github-pages-sites).
|
||||
The way to deploy these two types of sites are nearly identical, except for a
|
||||
few minor details.
|
||||
|
||||
@@ -115,7 +95,7 @@ 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 project pages](https://help.github.com/articles/user-organization-and-project-pages/)
|
||||
[user, organization and project pages](https://docs.github.com/en/free-pro-team@latest/github/working-with-github-pages/about-github-pages#types-of-github-pages-sites)
|
||||
to see more detailed examples.
|
||||
|
||||
<div class="note warning">
|
||||
@@ -138,3 +118,14 @@ to see more detailed examples.
|
||||
<a href="{{ '/docs/installation/windows/' | relative_url }}">Windows-specific docs page</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
### Running and Testing Locally
|
||||
|
||||
Once the project is configured with the github-pages environment, it's quite hard to switch back and forth with the local settings and the production-level settings. For that we can use certain CLI options to make the workflow hassle-free.
|
||||
|
||||
```sh
|
||||
bundle exec jekyll serve --baseurl=""
|
||||
```
|
||||
|
||||
This will run the jekyll server on your local machine i.e. on `http://localhost:4000`. Refer <a href="{{ '/docs/configuration/options/#serve-command-options' | relative_url }}">server options</a> for available options.
|
||||
|
||||
|
||||
@@ -4,6 +4,178 @@ permalink: "/docs/history/"
|
||||
note: This file is autogenerated. Edit /History.markdown instead.
|
||||
---
|
||||
|
||||
## 4.2.2 / 2022-03-03
|
||||
{: #v4-2-2}
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v4-2-2}
|
||||
|
||||
- Lock `http_parser.rb` gem to `v0.6.x` on JRuby.
|
||||
|
||||
### Development Fixes
|
||||
{: #development-fixes-v4-2-2}
|
||||
|
||||
- Backport [#8830]({{ site.repository }}/issues/8830) for v4.2.x: Add a workflow to build gems consistently ([#8869]({{ site.repository }}/issues/8869))
|
||||
- Lock `rubocop-performance` to `v1.11.x`.
|
||||
|
||||
|
||||
## 4.2.1 / 2021-09-27
|
||||
{: #v4-2-1}
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v4-2-1}
|
||||
|
||||
- Backport [#8620]({{ site.repository }}/issues/8620) for v4.2.x: Revert [#7253]({{ site.repository }}/issues/7253): "Don't reset site.url to localhost:4000 by default" ([#8808]({{ site.repository }}/issues/8808))
|
||||
- Backport [#8756]({{ site.repository }}/issues/8756) for v4.2.x: Respect collections_dir config within include tag ([#8794]({{ site.repository }}/issues/8794))
|
||||
- Backport [#8786]({{ site.repository }}/issues/8786) for v4.2.x: Fix regression in Convertible module from v4.2.0 ([#8793]({{ site.repository }}/issues/8793))
|
||||
|
||||
|
||||
## 4.2.0 / 2020-12-14
|
||||
{: #v4-2-0}
|
||||
|
||||
### Minor Enhancements
|
||||
{: #minor-enhancements-v4-2-0}
|
||||
|
||||
- Warn on command-line with permalink conflict ([#8342]({{ site.repository }}/issues/8342))
|
||||
- Suppress warning issued for redirect pages ([#8347]({{ site.repository }}/issues/8347))
|
||||
- Enhance detection of conflicting destination URLs ([#8459]({{ site.repository }}/issues/8459))
|
||||
- Add `:post_convert` hook to modify HTML content before layout ([#8368]({{ site.repository }}/issues/8368))
|
||||
- Allow triggering `:post_convert` events atomically ([#8465]({{ site.repository }}/issues/8465))
|
||||
- Debug reading Page and Layout objects ([#8100]({{ site.repository }}/issues/8100))
|
||||
- Do not reset `site.url` to `http://localhost:4000` by default ([#7253]({{ site.repository }}/issues/7253))
|
||||
- Add custom debug strings for Jekyll objects ([#8473]({{ site.repository }}/issues/8473))
|
||||
- Debug reading data files in a site ([#8481]({{ site.repository }}/issues/8481))
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v4-2-0}
|
||||
|
||||
- Replace nested conditional with guard clauses ([#8294]({{ site.repository }}/issues/8294))
|
||||
- Fix: security bump ([#8349]({{ site.repository }}/issues/8349))
|
||||
- Fix path matching regex in post_url Liquid tag ([#8375]({{ site.repository }}/issues/8375))
|
||||
- Enable `Performance/ChainArrayAllocation` cop ([#8404]({{ site.repository }}/issues/8404))
|
||||
- Enable Lint/NoReturnInBeginEndBlocks Cop ([#8457]({{ site.repository }}/issues/8457))
|
||||
- Generate items from `site.include` list only once ([#8463]({{ site.repository }}/issues/8463))
|
||||
- Explicitly return nil after site process phase ([#8472]({{ site.repository }}/issues/8472))
|
||||
|
||||
### Optimization Fixes
|
||||
{: #optimization-fixes-v4-2-0}
|
||||
|
||||
- Implement custom delegators for drop methods ([#8183]({{ site.repository }}/issues/8183))
|
||||
- Handle `nil` argument to `Jekyll.sanitized_path` ([#8415]({{ site.repository }}/issues/8415))
|
||||
- Cache `Jekyll.sanitized_path` ([#8424]({{ site.repository }}/issues/8424))
|
||||
- Memoize array of drop getter method names ([#8421]({{ site.repository }}/issues/8421))
|
||||
- Reduce string allocations from the `link` tag ([#8387]({{ site.repository }}/issues/8387))
|
||||
- Optimize parsing of parameters in `include` tag ([#8192]({{ site.repository }}/issues/8192))
|
||||
- Stash documents `write?` attribute in a variable ([#8389]({{ site.repository }}/issues/8389))
|
||||
- Reduce string allocations from generating doc URLs ([#8392]({{ site.repository }}/issues/8392))
|
||||
- Check if site is in incremental mode optimally ([#8401]({{ site.repository }}/issues/8401))
|
||||
- Utilize flexibility of `Site#in_dest_dir` ([#8403]({{ site.repository }}/issues/8403))
|
||||
- Reduce allocations from rendering item as liquid ([#8406]({{ site.repository }}/issues/8406))
|
||||
- Compute relative_path of pages using PathManager ([#8408]({{ site.repository }}/issues/8408))
|
||||
- Reduce allocation from `normalize_whitespace` filter ([#8400]({{ site.repository }}/issues/8400))
|
||||
- Use `Regexp#match?` when `MatchData` is not required ([#8427]({{ site.repository }}/issues/8427))
|
||||
- Check default front matter scope against symbols ([#8393]({{ site.repository }}/issues/8393))
|
||||
- Stash frequently used `Drop` setter keys for reuse ([#8394]({{ site.repository }}/issues/8394))
|
||||
- Memoize defaults computed for Convertibles ([#8451]({{ site.repository }}/issues/8451))
|
||||
- Reduce array allocations from merging categories ([#8453]({{ site.repository }}/issues/8453))
|
||||
- Memoize destination of pages, documents and staticfiles ([#8458]({{ site.repository }}/issues/8458))
|
||||
- Reduce allocations from computing item property ([#8485]({{ site.repository }}/issues/8485))
|
||||
- Optimize `Page#dir` with a private method ([#8489]({{ site.repository }}/issues/8489))
|
||||
- Stash attribute hash for Liquid computed for pages ([#8497]({{ site.repository }}/issues/8497))
|
||||
|
||||
### Development Fixes
|
||||
{: #development-fixes-v4-2-0}
|
||||
|
||||
- Update cucumber gem to version 4.1 ([#8278]({{ site.repository }}/issues/8278))
|
||||
- Move permalink styles data to constant ([#8282]({{ site.repository }}/issues/8282))
|
||||
- Update rubocop gem to 0.87.1 ([#8287]({{ site.repository }}/issues/8287))
|
||||
- Update RuboCop to-do file ([#8296]({{ site.repository }}/issues/8296))
|
||||
- Fix `rake console` generating LoadError ([#8312]({{ site.repository }}/issues/8312))
|
||||
- Configure Performance cops ([#8369]({{ site.repository }}/issues/8369))
|
||||
- Update rubocop gem to 0.90.0 ([#8313]({{ site.repository }}/issues/8313))
|
||||
- Refactor `Jekyll::Utils::Platforms` ([#7236]({{ site.repository }}/issues/7236))
|
||||
- Bump RuboCop to v0.91.x ([#8391]({{ site.repository }}/issues/8391))
|
||||
- Add workflow to build and profile third-party repo ([#8398]({{ site.repository }}/issues/8398))
|
||||
- Bump RuboCop to v0.92.x
|
||||
- Update cucumber gem version to 5.1.2 ([#8413]({{ site.repository }}/issues/8413))
|
||||
- Fix test suite compatibility with JRuby ([#8418]({{ site.repository }}/issues/8418))
|
||||
- chore(deps): bump Rubocop to 0.93.0 ([#8430]({{ site.repository }}/issues/8430))
|
||||
- Use Ruby 2.7.1 in GitHub Actions ([#8444]({{ site.repository }}/issues/8444))
|
||||
- Test that Liquid expressions are not deeply evaled ([#8292]({{ site.repository }}/issues/8292))
|
||||
- Test rendering arbitrary Liquid variables by default ([#7414]({{ site.repository }}/issues/7414))
|
||||
- Migrate TravisCI jobs to GitHub Actions ([#8492]({{ site.repository }}/issues/8492))
|
||||
|
||||
### Documentation
|
||||
|
||||
- Update pointer to special permalink variables for collections ([#8274]({{ site.repository }}/issues/8274))
|
||||
- Fix special treatment for 'page 1' in docs of pagination ([#8230]({{ site.repository }}/issues/8230))
|
||||
- Add Formcake to forms section ([#8283]({{ site.repository }}/issues/8283))
|
||||
- Add a note on the rendering process in the docs ([#8291]({{ site.repository }}/issues/8291))
|
||||
- Add refactoring type to PULL_REQUEST_TEMPLATE ([#8297]({{ site.repository }}/issues/8297))
|
||||
- Update resources.md ([#7864]({{ site.repository }}/issues/7864))
|
||||
- Extra apostrophes in an URL ([#8319]({{ site.repository }}/issues/8319))
|
||||
- Clarify target of subordinate clause ([#8320]({{ site.repository }}/issues/8320))
|
||||
- Cherry-pick commits from conflicting branch `docs-40`
|
||||
- Update documentation on third party site ([#8352]({{ site.repository }}/issues/8352))
|
||||
- Update default.md with info requested in [#8314]({{ site.repository }}/issues/8314) ([#8353]({{ site.repository }}/issues/8353))
|
||||
- Clarify description of `safe` option ([#8354]({{ site.repository }}/issues/8354))
|
||||
- Simplifying the Git post-receive hook-example ([#8358]({{ site.repository }}/issues/8358))
|
||||
- Add missing doc for build and serve commands ([#8365]({{ site.repository }}/issues/8365))
|
||||
- Docs Review: Getting Started ([#8372]({{ site.repository }}/issues/8372))
|
||||
- Add note about rebooting system after installation ([#8359]({{ site.repository }}/issues/8359))
|
||||
- Use data file to render table at `/docs/configuration/options/#global-configuration` ([#8377]({{ site.repository }}/issues/8377))
|
||||
- Use data file(s) to render table(s) at `/docs/configuration/options/` ([#8380]({{ site.repository }}/issues/8380))
|
||||
- Improve maintainability of config option data ([#8383]({{ site.repository }}/issues/8383))
|
||||
- Remove CircleCI v1 docs ([#8410]({{ site.repository }}/issues/8410))
|
||||
- Remove `NOKOGIRI_USE_SYSTEM_LIBRARIES` from Travis CI docs ([#8409]({{ site.repository }}/issues/8409))
|
||||
- Add links to all Jekyll themes on GitHub tagged with #jekyll-theme ([#8447]({{ site.repository }}/issues/8447))
|
||||
- Document initializing project Gemfile from scratch ([#8450]({{ site.repository }}/issues/8450))
|
||||
- Document installation of additional dependencies for installing Jekyll on Fedora ([#8456]({{ site.repository }}/issues/8456))
|
||||
- Improve documentation on Hooks in Jekyll ([#8467]({{ site.repository }}/issues/8467))
|
||||
- Build docs site with GitHub Actions ([#8201]({{ site.repository }}/issues/8201))
|
||||
- Add link to Assets page from `_sass` section in `_docs/structure.md` ([#8486]({{ site.repository }}/issues/8486))
|
||||
|
||||
### Site Enhancements
|
||||
{: #site-enhancements-v4-2-0}
|
||||
|
||||
- Fix rendering of *showcase* images ([#8504]({{ site.repository }}/issues/8504))
|
||||
|
||||
|
||||
## 4.1.1 / 2020-06-24
|
||||
{: #v4-1-1}
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v4-1-1}
|
||||
|
||||
- Disable page excerpts by default ([#8222]({{ site.repository }}/issues/8222))
|
||||
- Revert introduction of PageDrop ([#8221]({{ site.repository }}/issues/8221))
|
||||
- Don't generate excerpts for non-html pages ([#8234]({{ site.repository }}/issues/8234))
|
||||
- Make page excerpts consistent with doc excerpts ([#8236]({{ site.repository }}/issues/8236))
|
||||
|
||||
### Documentation
|
||||
|
||||
- Replace deprecated 'show' command with 'info' ([#8235]({{ site.repository }}/issues/8235))
|
||||
- Change name to ▲Vercel ([#8247]({{ site.repository }}/issues/8247))
|
||||
- Add language and examples to describe how to use the configuration op… ([#8249]({{ site.repository }}/issues/8249))
|
||||
- Fix missing yaml front matter colon and adjust/add clarifying language. ([#8250]({{ site.repository }}/issues/8250))
|
||||
- correct typo ([#8261]({{ site.repository }}/issues/8261))
|
||||
- Allow hyperlinks to specific filter documentation ([#8231]({{ site.repository }}/issues/8231))
|
||||
- Update link to Netlify step-by-step guide ([#8264]({{ site.repository }}/issues/8264))
|
||||
- Fix grammar in documentation section ([#8265]({{ site.repository }}/issues/8265))
|
||||
|
||||
### Site Enhancements
|
||||
{: #site-enhancements-v4-1-1}
|
||||
|
||||
- Including correct Sketch website ([#8241]({{ site.repository }}/issues/8241))
|
||||
- Release post for v4.1.1 ([#8243]({{ site.repository }}/issues/8243))
|
||||
|
||||
### Development Fixes
|
||||
{: #development-fixes-v4-1-1}
|
||||
|
||||
- Bump RuboCop to v0.85.x ([#8223]({{ site.repository }}/issues/8223))
|
||||
- Expect drive letter only on vanilla windows ([#8227]({{ site.repository }}/issues/8227))
|
||||
|
||||
|
||||
## 4.1.0 / 2020-05-27
|
||||
{: #v4-1-0}
|
||||
|
||||
@@ -122,7 +294,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Fix typo in documentation on GitHub Actions ([#8162]({{ site.repository }}/issues/8162))
|
||||
- Ease discovery of CLI commands (in their entirety) ([#8178]({{ site.repository }}/issues/8178))
|
||||
- Remove `sudo` from Travis CI tutorial ([#8187]({{ site.repository }}/issues/8187))
|
||||
- Add Gitlab Pages to 3rd party list ([#8191]({{ site.repository }}/issues/8191))
|
||||
- Add GitLab Pages to 3rd party list ([#8191]({{ site.repository }}/issues/8191))
|
||||
- docs: add 21yunbox for deployment ([#8193]({{ site.repository }}/issues/8193))
|
||||
- Improve documentation on tags and categories ([#8196]({{ site.repository }}/issues/8196))
|
||||
|
||||
@@ -176,6 +348,42 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Fix Kramdown converter based tests for v4.0.x ([#8143]({{ site.repository }}/issues/8143))
|
||||
|
||||
|
||||
## 3.9.2 / 2022-03-27
|
||||
{: #v3-9-2}
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v3-9-2}
|
||||
|
||||
- Lock `http_parser.rb` gem to `v0.6.x` on JRuby ([#8943]({{ site.repository }}/issues/8943))
|
||||
- Backport [#8756]({{ site.repository }}/issues/8756) for v3.9.x: Respect collections_dir config within include tag ([#8795]({{ site.repository }}/issues/8795))
|
||||
- Backport [#8965]({{ site.repository }}/issues/8965) for v3.9.x: Fix response header for content served via `jekyll serve` ([#8976]({{ site.repository }}/issues/8976))
|
||||
|
||||
### Development Fixes
|
||||
{: #development-fixes-v3-9-2}
|
||||
|
||||
- Update and fix CI for `3.9-stable` on Ruby 3.x ([#8942]({{ site.repository }}/issues/8942))
|
||||
- Fix CI for commits to `3.9-stable` branch ([#8788]({{ site.repository }}/issues/8788))
|
||||
|
||||
|
||||
## 3.9.1 / 2021-04-08
|
||||
{: #v3-9-1}
|
||||
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v3-9-1}
|
||||
|
||||
- Backport [#8618]({{ site.repository }}/issues/8618) for v3.9.x: Update include tag to be more permissive ([#8629]({{ site.repository }}/issues/8629))
|
||||
|
||||
|
||||
## 3.9.0 / 2020-08-05
|
||||
{: #v3-9-0}
|
||||
|
||||
### Minor Enhancements
|
||||
{: #minor-enhancements-v3-9-0}
|
||||
|
||||
- Allow use of kramdown v2 ([#8322]({{ site.repository }}/issues/8322))
|
||||
- Add default language for kramdown syntax highlighting ([#8325]({{ site.repository }}/issues/8325))
|
||||
|
||||
|
||||
## 3.8.7 / 2020-05-08
|
||||
{: #v3-8-7}
|
||||
|
||||
@@ -440,7 +648,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Remove alt attribute from a tags ([#7407]({{ site.repository }}/issues/7407))
|
||||
- Fix BASH code-block in ubuntu.md ([#7420]({{ site.repository }}/issues/7420))
|
||||
- zlib is missing ([#7428]({{ site.repository }}/issues/7428))
|
||||
- Fixed unnecessary aticles and pronouns ([#7466]({{ site.repository }}/issues/7466))
|
||||
- Fixed unnecessary articles and pronouns ([#7466]({{ site.repository }}/issues/7466))
|
||||
- Store SSL key and cert in site source ([#7473]({{ site.repository }}/issues/7473))
|
||||
- Fix typo in tutorial for converting existing site ([#7524]({{ site.repository }}/issues/7524))
|
||||
- Check if var exists before include tag ([#7530]({{ site.repository }}/issues/7530))
|
||||
@@ -455,7 +663,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- fix link to Site Source config ([#7708]({{ site.repository }}/issues/7708))
|
||||
- Introduce frontmatter in step 2 ([#7704]({{ site.repository }}/issues/7704))
|
||||
- Add @ashmaroli to Core Team listing ([#7398]({{ site.repository }}/issues/7398))
|
||||
- Lnk to Tidelift in site's footer ([#7377]({{ site.repository }}/issues/7377))
|
||||
- Link to Tidelift in site's footer ([#7377]({{ site.repository }}/issues/7377))
|
||||
- Link to OpenCollective backing ([#7378]({{ site.repository }}/issues/7378)
|
||||
- Link to sponsor listing in README ([#7405]({{ site.repository }}/issues/7405))
|
||||
- Adjust team page listings ([#7395]({{ site.repository }}/issues/7395))
|
||||
@@ -631,7 +839,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- doc: add liquid tag plugin jekyll-onebox for html previews ([#6898]({{ site.repository }}/issues/6898))
|
||||
- Add `jekyll-w2m` to plugins ([#6855]({{ site.repository }}/issues/6855))
|
||||
- Fix tutorials navigation HTML ([#6919]({{ site.repository }}/issues/6919))
|
||||
- add Arch Linux instalation troubleshoot ([#6782]({{ site.repository }}/issues/6782))
|
||||
- add Arch Linux installation troubleshoot ([#6782]({{ site.repository }}/issues/6782))
|
||||
- Docs: Install Jekyll on macOS ([#6881]({{ site.repository }}/issues/6881))
|
||||
- Fix CodeClimate badges [ci skip] ([#6930]({{ site.repository }}/issues/6930))
|
||||
- Update index.md ([#6933]({{ site.repository }}/issues/6933))
|
||||
@@ -806,7 +1014,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Fix list appearance by adding missing `ol` tag ([#6421]({{ site.repository }}/issues/6421))
|
||||
- Explain how to override output collection index page ([#6424]({{ site.repository }}/issues/6424))
|
||||
- Added github-cards to the list of plugins ([#6425]({{ site.repository }}/issues/6425))
|
||||
- CoC violation correspondants ([#6429]({{ site.repository }}/issues/6429))
|
||||
- CoC violation correspondents ([#6429]({{ site.repository }}/issues/6429))
|
||||
- Add a note about Liquid and syntax highlighting ([#6466]({{ site.repository }}/issues/6466))
|
||||
- Remove `sudo` from macOS troubleshooting instructions ([#6486]({{ site.repository }}/issues/6486))
|
||||
- Add a note on `:jekyll_plugins` group in the docs ([#6488]({{ site.repository }}/issues/6488))
|
||||
@@ -937,7 +1145,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- add SUPPORT file for GitHub ([#6324]({{ site.repository }}/issues/6324))
|
||||
- Rename CODE_OF_CONDUCT to show in banner ([#6325]({{ site.repository }}/issues/6325))
|
||||
- Docs : illustrate page.id for a collection's document ([#6329]({{ site.repository }}/issues/6329))
|
||||
- Docs: post's date can be overriden in front matter ([#6334]({{ site.repository }}/issues/6334))
|
||||
- Docs: post's date can be overridden in front matter ([#6334]({{ site.repository }}/issues/6334))
|
||||
- Docs: `site.url` behavior on development and production environments ([#6270]({{ site.repository }}/issues/6270))
|
||||
- Fix typo in site.url section of variables.md :-[ ([#6337]({{ site.repository }}/issues/6337))
|
||||
- Docs: updates ([#6343]({{ site.repository }}/issues/6343))
|
||||
@@ -994,7 +1202,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
### Bug Fixes
|
||||
{: #bug-fixes-v3-5-1}
|
||||
|
||||
- Backward compatiblize URLFilters module ([#6163]({{ site.repository }}/issues/6163))
|
||||
- Backward compatibilize URLFilters module ([#6163]({{ site.repository }}/issues/6163))
|
||||
- Static files contain front matter default keys when `to_liquid`'d ([#6162]({{ site.repository }}/issues/6162))
|
||||
- Always normalize the result of the `relative_url` filter ([#6185]({{ site.repository }}/issues/6185))
|
||||
|
||||
@@ -1507,7 +1715,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
### Minor Enhancements
|
||||
{: #minor-enhancements-v3-2-0}
|
||||
|
||||
- Stop testing with Ruby 2.0.x, which is EOL'd. ([#4381]({{ site.repository }}/issues/4381))
|
||||
- Stop testing with Ruby 2.0.x EOL ([#4381]({{ site.repository }}/issues/4381))
|
||||
- Allow collections to have documents that have no file extension ([#4545]({{ site.repository }}/issues/4545))
|
||||
- Add size property to `group_by` result ([#4557]({{ site.repository }}/issues/4557))
|
||||
- Site Template: Removed unnecessary nesting from `_base.scss` ([#4637]({{ site.repository }}/issues/4637))
|
||||
@@ -1533,7 +1741,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Add 'jekyll new-theme' command to help users get up and running creating a theme ([#4848]({{ site.repository }}/issues/4848))
|
||||
- `markdownify` and `smartify` should convert input to string before conversion ([#4958]({{ site.repository }}/issues/4958))
|
||||
- Run `Site#generate` for 'jekyll doctor' to catch plugin issues ([#5005]({{ site.repository }}/issues/5005))
|
||||
- Add `normalize_whitepace` filter ([#4917]({{ site.repository }}/issues/4917))
|
||||
- Add `normalize_whitespace` filter ([#4917]({{ site.repository }}/issues/4917))
|
||||
- Move bin/jekyll to exe/jekyll to prevent collision with binstubs ([#5014]({{ site.repository }}/issues/5014))
|
||||
- Cleaning up site template & theme updates. ([#4922]({{ site.repository }}/issues/4922))
|
||||
- Add fetch method to Drops ([#5056]({{ site.repository }}/issues/5056))
|
||||
@@ -1585,7 +1793,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Fix state leakage in Kramdown test ([#4618]({{ site.repository }}/issues/4618))
|
||||
- Unify method for copying special files from repo to site ([#4601]({{ site.repository }}/issues/4601))
|
||||
- Refresh the contributing file ([#4596]({{ site.repository }}/issues/4596))
|
||||
- change smartify doc from copy/paste of mardownify doc ([#4653]({{ site.repository }}/issues/4653))
|
||||
- change smartify doc from copy/paste of markdownify doc ([#4653]({{ site.repository }}/issues/4653))
|
||||
- Update Rake & disable warnings when running tests ([#4720]({{ site.repository }}/issues/4720))
|
||||
- Fix many warnings ([#4537]({{ site.repository }}/issues/4537))
|
||||
- Don't blindly assume the last system when determining "open" cmd ([#4717]({{ site.repository }}/issues/4717))
|
||||
@@ -1684,7 +1892,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Corrected pagination docs for hidden: true feature ([#4903]({{ site.repository }}/issues/4903))
|
||||
- Remove a Broken Link for Refheap Plugin ([#4971]({{ site.repository }}/issues/4971))
|
||||
- Instructions on how to install github-gem on Windows ([#4975]({{ site.repository }}/issues/4975))
|
||||
- Minor tweak to fix missing apostrophne ([#4962]({{ site.repository }}/issues/4962))
|
||||
- Minor tweak to fix missing apostrophe ([#4962]({{ site.repository }}/issues/4962))
|
||||
- Instructions on how to install github-gem on Windows (v2) ([#4977]({{ site.repository }}/issues/4977))
|
||||
- Fix inaccurate HTTP response header field name ([#4976]({{ site.repository }}/issues/4976))
|
||||
- Add post about GSoC project ([#4980]({{ site.repository }}/issues/4980))
|
||||
@@ -1692,10 +1900,10 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Update normalize.css to v4.0.0. ([#4989]({{ site.repository }}/issues/4989))
|
||||
- Add jekyll-tags-list-plugin to list of third-party plugins ([#5000]({{ site.repository }}/issues/5000))
|
||||
- Windows docs: Command needs to be called from blog path ([#5006]({{ site.repository }}/issues/5006))
|
||||
- Update text to be consitent with example ([#5010]({{ site.repository }}/issues/5010))
|
||||
- Update text to be consistent with example ([#5010]({{ site.repository }}/issues/5010))
|
||||
- Update template links to point to core Liquid site ([#5012]({{ site.repository }}/issues/5012))
|
||||
- Add generator-jekyllized to third-party plugins ([#5027]({{ site.repository }}/issues/5027))
|
||||
- Add Jekyll Art Hallery generator plugin to list of third-party plugins ([#5043]({{ site.repository }}/issues/5043))
|
||||
- Add Jekyll Art Gallery generator plugin to list of third-party plugins ([#5043]({{ site.repository }}/issues/5043))
|
||||
- Add Formingo to the list of Jekyll form SaaS ([#5054]({{ site.repository }}/issues/5054))
|
||||
- Highlight help nav item when navigated to. ([#5058]({{ site.repository }}/issues/5058))
|
||||
- Update normalize.css to v4.2.0. ([#5096]({{ site.repository }}/issues/5096))
|
||||
@@ -1873,9 +2081,9 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Reorganize and cleanup the Gemfile, shorten required depends. ([#4318]({{ site.repository }}/issues/4318))
|
||||
- Remove script/rebund. ([#4341]({{ site.repository }}/issues/4341))
|
||||
- Implement codeclimate platform ([#4340]({{ site.repository }}/issues/4340))
|
||||
- Remove ObectSpace dumping and start using inherited, it's faster. ([#4342]({{ site.repository }}/issues/4342))
|
||||
- Remove ObjectSpace dumping and start using inherited, it's faster. ([#4342]({{ site.repository }}/issues/4342))
|
||||
- Add script/travis so all people can play with Travis-CI images. ([#4338]({{ site.repository }}/issues/4338))
|
||||
- Move Cucumber to using RSpec-Expections and furthering JRuby support. ([#4343]({{ site.repository }}/issues/4343))
|
||||
- Move Cucumber to using RSpec-Expectations and furthering JRuby support. ([#4343]({{ site.repository }}/issues/4343))
|
||||
- Rearrange Cucumber and add some flair. ([#4347]({{ site.repository }}/issues/4347))
|
||||
- Remove old FIXME ([#4349]({{ site.repository }}/issues/4349))
|
||||
- Clean up the Gemfile (and keep all the necessary dependencies) ([#4350]({{ site.repository }}/issues/4350))
|
||||
@@ -2231,7 +2439,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Define the `install` step in the CI example `.travis.yml` ([#3622]({{ site.repository }}/issues/3622))
|
||||
- Expand collections documentation. ([#3638]({{ site.repository }}/issues/3638))
|
||||
- Add the "warning" note label to excluding `vendor` in the CI docs page ([#3623]({{ site.repository }}/issues/3623))
|
||||
- Upgrade pieces of the Ugrading guide for Jekyll 3 ([#3607]({{ site.repository }}/issues/3607))
|
||||
- Upgrade pieces of the Upgrading guide for Jekyll 3 ([#3607]({{ site.repository }}/issues/3607))
|
||||
- Showing how to access specific data items ([#3468]({{ site.repository }}/issues/3468))
|
||||
- Clarify pagination works from within HTML files ([#3467]({{ site.repository }}/issues/3467))
|
||||
- Add note to `excerpt_separator` documentation that it can be set globally ([#3667]({{ site.repository }}/issues/3667))
|
||||
@@ -3357,7 +3565,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Add ReadInXMinutes plugin to the plugin list ([#1222]({{ site.repository }}/issues/1222))
|
||||
- Remove plugins from the plugin list that have equivalents in Jekyll proper ([#1223]({{ site.repository }}/issues/1223))
|
||||
- Add jekyll-assets to the plugin list ([#1225]({{ site.repository }}/issues/1225))
|
||||
- Add jekyll-pandoc-mulitple-formats to the plugin list ([#1229]({{ site.repository }}/issues/1229))
|
||||
- Add jekyll-pandoc-multiple-formats to the plugin list ([#1229]({{ site.repository }}/issues/1229))
|
||||
- Remove dead link to "Using Git to maintain your blog" ([#1227]({{ site.repository }}/issues/1227))
|
||||
- Tidy up the third-party plugins listing ([#1228]({{ site.repository }}/issues/1228))
|
||||
- Update contributor information ([#1192]({{ site.repository }}/issues/1192))
|
||||
@@ -3532,7 +3740,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
|
||||
- Adds excerpt attribute to posts which contains first paragraph of content ([#837]({{ site.repository }}/issues/837))
|
||||
- Accept custom configuration file via CLI ([#863]({{ site.repository }}/issues/863))
|
||||
- Load in GitHub Pages MIME Types on `jekyll serve` ([#847]({{ site.repository }}/issues/847), [#871]({{ site.repository }}/issues/871))
|
||||
- Improve debugability of error message for a malformed highlight tag ([#785]({{ site.repository }}/issues/785))
|
||||
- Improve debuggability of error message for a malformed highlight tag ([#785]({{ site.repository }}/issues/785))
|
||||
- Allow symlinked files in unsafe mode ([#824]({{ site.repository }}/issues/824))
|
||||
- Add 'gist' Liquid tag to core ([#822]({{ site.repository }}/issues/822), [#861]({{ site.repository }}/issues/861))
|
||||
- New format of Jekyll output ([#795]({{ site.repository }}/issues/795))
|
||||
|
||||
@@ -6,39 +6,50 @@ redirect_from:
|
||||
- /docs/quickstart/
|
||||
- /docs/extras/
|
||||
---
|
||||
Jekyll is a static site generator. You give it text written in your
|
||||
favorite markup language and it uses layouts to create a static website. You can
|
||||
tweak how you want the site URLs to look, what data gets displayed on the
|
||||
site, and more.
|
||||
Jekyll is a static site generator. It takes text written in your
|
||||
favorite markup language and uses layouts to create a static website. You can
|
||||
tweak the site's look and feel, URLs, the data displayed on the page, and more.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
See [requirements]({{ '/docs/installation/#requirements' | relative_url }}).
|
||||
Jekyll requires the following:
|
||||
|
||||
* Ruby version **{{ site.data.ruby.min_version }}** or higher
|
||||
* RubyGems
|
||||
* GCC and Make
|
||||
|
||||
See [Requirements]({{ '/docs/installation/#requirements' | relative_url }}) for guides and details.
|
||||
|
||||
## Instructions
|
||||
|
||||
1. Install a full [Ruby development environment]({{ '/docs/installation/' | relative_url }}).
|
||||
2. Install Jekyll and [bundler]({{ '/docs/ruby-101/#bundler' | relative_url }}) [gems]({{ '/docs/ruby-101/#gems' | relative_url }}).
|
||||
```
|
||||
1. Install all [prerequisites]({{ '/docs/installation/' | relative_url }}).
|
||||
2. Install the jekyll and bundler [gems]({{ '/docs/ruby-101/#gems' | relative_url }}).
|
||||
```sh
|
||||
gem install jekyll bundler
|
||||
```
|
||||
3. Create a new Jekyll site at `./myblog`.
|
||||
```
|
||||
```sh
|
||||
jekyll new myblog
|
||||
```
|
||||
4. Change into your new directory.
|
||||
```
|
||||
```sh
|
||||
cd myblog
|
||||
```
|
||||
5. Build the site and make it available on a local server.
|
||||
```
|
||||
```sh
|
||||
bundle exec jekyll serve
|
||||
```
|
||||
6. Browse to [http://localhost:4000](http://localhost:4000){:target="_blank"}
|
||||
|
||||
If you encounter any errors during this process, see the
|
||||
[troubleshooting]({{ '/docs/troubleshooting/#configuration-problems' | relative_url }}) page. Also,
|
||||
make sure you've installed the development headers and other prerequisites as
|
||||
mentioned on the [requirements]({{ '/docs/installation/#requirements' | relative_url }}) page.
|
||||
{: .note .warning}
|
||||
If you are using Ruby version 3.0.0 or higher, step 5 [may fail](https://github.com/github/pages-gem/issues/752). You may fix it by adding `webrick` to your dependencies: `bundle add webrick`
|
||||
|
||||
Note: Installation might be different depending on your operating system. See our [guides](https://jekyllrb.com/docs/installation/#guides) for OS specific instructions.
|
||||
{: .note .info}
|
||||
Pass the `--livereload` option to `serve` to automatically refresh the page with each change you make to the source files: `bundle exec jekyll serve --livereload`
|
||||
|
||||
|
||||
If you encounter any errors during this process, check that you have installed all the prerequisites in [Requirements]({{ '/docs/installation/#requirements' | relative_url }}).
|
||||
If you still have issues, see [Troubleshooting]({{ '/docs/troubleshooting/#configuration-problems' | relative_url }}).
|
||||
|
||||
{: .note .info}
|
||||
Installation varies based on your operating system. See our [guides]({{ '/docs/installation/#guides' | relative_url }}) for OS-specific instructions.
|
||||
|
||||
@@ -4,19 +4,19 @@ description: Official guide to install Jekyll on macOS, GNU/Linux or Windows.
|
||||
permalink: /docs/installation/
|
||||
---
|
||||
|
||||
Jekyll is a [Ruby Gem](/docs/ruby-101/#gems) that can be installed on most systems.
|
||||
Jekyll is a [Ruby Gem]({{ '/docs/ruby-101/#gems' | relative_url }}) that can be installed on most systems.
|
||||
|
||||
## Requirements
|
||||
|
||||
* [Ruby](https://www.ruby-lang.org/en/downloads/) version **{{ site.data.ruby.min_version }}** or above, including all development headers (ruby version can be checked by running `ruby -v`)
|
||||
* [RubyGems](https://rubygems.org/pages/download) (which you can check by running `gem -v`)
|
||||
* [GCC](https://gcc.gnu.org/install/) and [Make](https://www.gnu.org/software/make/) (in case your system doesn't have them installed, which you can check by running `gcc -v`,`g++ -v` and `make -v` in your system's command line interface)
|
||||
* [Ruby](https://www.ruby-lang.org/en/downloads/) version **{{ site.data.ruby.min_version }}** or higher, including all development headers (check your Ruby version using `ruby -v`)
|
||||
* [RubyGems](https://rubygems.org/pages/download) (check your Gems version using `gem -v`)
|
||||
* [GCC](https://gcc.gnu.org/install/) and [Make](https://www.gnu.org/software/make/) (check versions using `gcc -v`,`g++ -v`, and `make -v`)
|
||||
|
||||
## Guides
|
||||
|
||||
For detailed install instructions have a look at the guide for your operating system.
|
||||
For detailed install instructions, follow the guide for your operating system.
|
||||
|
||||
* [macOS]({{ '/docs/installation/macos/' | relative_url }})
|
||||
* [Ubuntu Linux]({{ '/docs/installation/ubuntu/' | relative_url }})
|
||||
* [Other Linux distros]({{ '/docs/installation/other-linux/' | relative_url }})
|
||||
* [Ubuntu]({{ '/docs/installation/ubuntu/' | relative_url }})
|
||||
* [Other Linux]({{ '/docs/installation/other-linux/' | relative_url }})
|
||||
* [Windows]({{ '/docs/installation/windows/' | relative_url }})
|
||||
@@ -3,134 +3,92 @@ title: Jekyll on macOS
|
||||
permalink: /docs/installation/macos/
|
||||
---
|
||||
|
||||
## Install Command Line Tools
|
||||
First, you need to install the command-line tools to be able to compile native extensions, open a terminal and run:
|
||||
## Supported macOS versions
|
||||
|
||||
```sh
|
||||
xcode-select --install
|
||||
```
|
||||
- Monterey (macOS 12)
|
||||
- Big Sur (macOS 11)
|
||||
- Catalina (macOS 10.15)
|
||||
|
||||
Older macOS versions might work, but we don't officially support them.
|
||||
|
||||
## Install Ruby
|
||||
|
||||
Jekyll requires **Ruby > {{ site.data.ruby.min_version }}**.
|
||||
macOS Catalina 10.15 comes with ruby 2.6.3, so you're fine.
|
||||
If you're running a previous macOS system, you'll have to install a newer version of Ruby.
|
||||
To install Jekyll on macOS, you need a proper Ruby development environment.
|
||||
While macOS comes preinstalled with Ruby, we don't recommend using that version
|
||||
to install Jekyll. This external article goes over the various reasons
|
||||
[why you shouldn't use the system Ruby](https://www.moncefbelyamani.com/why-you-shouldn-t-use-the-system-ruby-to-install-gems-on-a-mac/).
|
||||
|
||||
### With Homebrew {#brew}
|
||||
To run the latest Ruby version you need to install it through [Homebrew](https://brew.sh).
|
||||
Instead, you'll need to install a separate and newer version of Ruby using a
|
||||
version manager such as [asdf], [chruby], [rbenv], or [rvm]. Version managers
|
||||
allow you to easily install multiple versions of Ruby, and switch between them.
|
||||
|
||||
We recommend `chruby` because it's the simplest and least likely to cause issues.
|
||||
|
||||
The instructions below are an excerpt from this detailed external guide to
|
||||
[install Ruby on Mac]. They work best if you're setting up development tools
|
||||
for the first time on your Mac. If you've already tried to install Ruby or
|
||||
Jekyll on your Mac, or if you run into any issues, read that guide.
|
||||
|
||||
[asdf]: https://asdf-vm.com/
|
||||
[chruby]: https://github.com/postmodern/chruby
|
||||
[rbenv]: https://github.com/rbenv/rbenv
|
||||
[rvm]: https://rvm.io/
|
||||
[install Ruby on Mac]: https://www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/
|
||||
|
||||
### Step 1: Install Homebrew
|
||||
|
||||
[Homebrew](https://brew.sh/) makes it easy to install development tools on a Mac.
|
||||
|
||||
```sh
|
||||
# Install Homebrew
|
||||
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||
|
||||
brew install ruby
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
```
|
||||
|
||||
Add the brew ruby path to your shell config:
|
||||
### Step 2: Install chruby and the latest Ruby with ruby-install
|
||||
|
||||
```bash
|
||||
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
|
||||
```
|
||||
|
||||
Then relaunch your terminal and check your updated Ruby setup:
|
||||
Install `chruby` and `ruby-install` with Homebrew:
|
||||
|
||||
```sh
|
||||
which ruby
|
||||
# /usr/local/opt/ruby/bin/ruby
|
||||
brew install chruby ruby-install
|
||||
```
|
||||
|
||||
Install the latest stable version of Ruby:
|
||||
|
||||
```sh
|
||||
ruby-install ruby
|
||||
```
|
||||
|
||||
This will take a few minutes, and once it's done, configure your shell to
|
||||
automatically use `chruby`:
|
||||
|
||||
```sh
|
||||
echo "source $(brew --prefix)/opt/chruby/share/chruby/chruby.sh" >> ~/.zshrc
|
||||
echo "source $(brew --prefix)/opt/chruby/share/chruby/auto.sh" >> ~/.zshrc
|
||||
echo "chruby ruby-{{ site.data.ruby.current_version }}" >> ~/.zshrc
|
||||
```
|
||||
|
||||
If you're using Bash, replace `.zshrc` with `.bash_profile`. If you're not sure,
|
||||
read this external guide to
|
||||
[find out which shell you're using](https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/).
|
||||
|
||||
Quit and relaunch Terminal, then check that everything is working:
|
||||
|
||||
```sh
|
||||
ruby -v
|
||||
{{ site.data.ruby.current_version_output }}
|
||||
```
|
||||
|
||||
Yay, we are now running current stable Ruby!
|
||||
It should show {{ site.data.ruby.current_version_output }} or a newer version.
|
||||
|
||||
### With rbenv {#rbenv}
|
||||
|
||||
People often use [rbenv](https://github.com/rbenv/rbenv) to manage multiple
|
||||
Ruby versions. This is very useful when you need to be able to run a given Ruby version on a project.
|
||||
|
||||
```sh
|
||||
# Install Homebrew
|
||||
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||
|
||||
# Install rbenv and ruby-build
|
||||
brew install rbenv
|
||||
|
||||
# Set up rbenv integration with your shell
|
||||
rbenv init
|
||||
|
||||
# Check your installation
|
||||
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
|
||||
```
|
||||
|
||||
Restart your terminal for changes to take effect.
|
||||
Now you can install the Ruby version of our choice, let's go with current latest stable Ruby:
|
||||
|
||||
```sh
|
||||
rbenv install {{ site.data.ruby.current_version }}
|
||||
rbenv global {{ site.data.ruby.current_version }}
|
||||
ruby -v
|
||||
{{ site.data.ruby.current_version_output }}
|
||||
```
|
||||
|
||||
That's it! Head over [rbenv command references](https://github.com/rbenv/rbenv#command-reference) to learn how to use different versions of Ruby in your projects.
|
||||
Next, read that same external guide for important notes about
|
||||
[setting and switching between Ruby versions with chruby](https://www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/#how-to-install-different-versions-of-ruby-and-switch-between-them).
|
||||
|
||||
## Install Jekyll
|
||||
|
||||
Now all that is left is installing [Bundler]({{ '/docs/ruby-101/#bundler' | relative_url }}) and Jekyll.
|
||||
|
||||
### Local Install
|
||||
After installing Ruby with chruby, install the latest Jekyll gem:
|
||||
|
||||
```sh
|
||||
gem install --user-install bundler jekyll
|
||||
gem install jekyll
|
||||
```
|
||||
|
||||
and then get your Ruby version using
|
||||
## Troubleshooting
|
||||
|
||||
```sh
|
||||
ruby -v
|
||||
{{ site.data.ruby.current_version_output }}
|
||||
```
|
||||
|
||||
Then append your path file with the following, replacing the `X.X` with the first two digits of your Ruby version.
|
||||
|
||||
```bash
|
||||
echo 'export PATH="$HOME/.gem/ruby/X.X.0/bin:$PATH"' >> ~/.bash_profile
|
||||
```
|
||||
|
||||
To check that your gem paths point to your home directory run:
|
||||
|
||||
```sh
|
||||
gem env
|
||||
```
|
||||
|
||||
And check that `GEM PATHS:` points to a path in your home directory.
|
||||
|
||||
{: .note .info}
|
||||
Every time you update Ruby to a version with a different first two digits, you will need to update your path to match.
|
||||
|
||||
### Global Install
|
||||
|
||||
{: .note .warning}
|
||||
We strongly recommend against installing Ruby gems globally to avoid file permissions problems and using `sudo`.
|
||||
|
||||
#### On Mojave (10.14)
|
||||
|
||||
Because of SIP Protections in Mojave, you must run:
|
||||
|
||||
```sh
|
||||
sudo gem install bundler
|
||||
sudo gem install -n /usr/local/bin/ jekyll
|
||||
```
|
||||
|
||||
#### Before Mojave (<10.14)
|
||||
|
||||
You only have to run:
|
||||
|
||||
```sh
|
||||
sudo gem install bundler jekyll
|
||||
```
|
||||
|
||||
## Problems?
|
||||
|
||||
Check out the [troubleshooting]({{ '/docs/troubleshooting/' | relative_url }}) page or [ask for help on our forum](https://talk.jekyllrb.com).
|
||||
See [Troubleshooting]({{ '/docs/troubleshooting/' | relative_url }}) or [ask for help on our forum](https://talk.jekyllrb.com).
|
||||
|
||||
@@ -2,21 +2,30 @@
|
||||
title: Jekyll on Linux
|
||||
permalink: /docs/installation/other-linux/
|
||||
---
|
||||
Installation on other Linux distributions works similarly as on [Ubuntu](../ubuntu/).
|
||||
|
||||
On Fedora, the dependencies can be installed as follows:
|
||||
Installation on other Linux distributions works similarly to installing on [Ubuntu](../ubuntu/).
|
||||
|
||||
## Install prerequisites
|
||||
|
||||
### Fedora
|
||||
|
||||
```sh
|
||||
sudo dnf install ruby ruby-devel @development-tools
|
||||
sudo dnf install ruby ruby-devel openssl-devel redhat-rpm-config @development-tools
|
||||
```
|
||||
### RHEL8/CentOS8
|
||||
|
||||
```sh
|
||||
sudo dnf install ruby ruby-devel
|
||||
sudo dnf group install "Development Tools"
|
||||
```
|
||||
|
||||
On Debian:
|
||||
### Debian
|
||||
|
||||
```sh
|
||||
sudo apt-get install ruby-full build-essential
|
||||
```
|
||||
|
||||
On Gentoo Linux:
|
||||
### Gentoo
|
||||
|
||||
```sh
|
||||
sudo emerge -av jekyll
|
||||
@@ -28,22 +37,24 @@ or
|
||||
sudo emerge --ask --verbose jekyll
|
||||
```
|
||||
|
||||
On ArchLinux:
|
||||
### ArchLinux
|
||||
|
||||
```sh
|
||||
sudo pacman -S ruby base-devel
|
||||
```
|
||||
|
||||
On openSUSE:
|
||||
### OpenSUSE
|
||||
|
||||
```sh
|
||||
sudo zypper install -t pattern devel_ruby devel_C_C++
|
||||
sudo zypper install ruby-devel
|
||||
```
|
||||
|
||||
On Clear Linux:
|
||||
### Clear Linux
|
||||
|
||||
```sh
|
||||
sudo swupd bundle-add ruby-basic
|
||||
```
|
||||
## Install Jekyll
|
||||
|
||||
The rest works the same as on [Ubuntu](../ubuntu/).
|
||||
Follow the instructions for [Ubuntu](../ubuntu/).
|
||||
|
||||
@@ -2,17 +2,19 @@
|
||||
title: Jekyll on Ubuntu
|
||||
permalink: /docs/installation/ubuntu/
|
||||
---
|
||||
Before we install Jekyll, we need to make sure we have all the required
|
||||
dependencies.
|
||||
|
||||
## Install dependencies
|
||||
|
||||
Install Ruby and other [prerequisites]({{ '/docs/installation/#requirements' | relative_url }}):
|
||||
|
||||
```sh
|
||||
sudo apt-get install ruby-full build-essential zlib1g-dev
|
||||
```
|
||||
|
||||
It is best to avoid installing Ruby Gems as the root user. Therefore, we need to
|
||||
Avoid installing RubyGems packages (called gems) as the root user. Instead,
|
||||
set up a gem installation directory for your user account. The following
|
||||
commands will add environment variables to your `~/.bashrc` file to configure
|
||||
the gem installation path. Run them now:
|
||||
the gem installation path:
|
||||
|
||||
```sh
|
||||
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
|
||||
@@ -21,7 +23,7 @@ echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
Finally, install Jekyll:
|
||||
Finally, install Jekyll and Bundler:
|
||||
|
||||
```sh
|
||||
gem install jekyll bundler
|
||||
|
||||
@@ -5,28 +5,32 @@ redirect_from:
|
||||
- /docs/windows/
|
||||
---
|
||||
|
||||
While Windows is not an officially-supported platform, it can be used to run Jekyll with the proper tweaks. This page aims to
|
||||
collect some of the general knowledge and lessons that have been unearthed by Windows users.
|
||||
While Windows is not an officially-supported platform, it can be used to run Jekyll with the proper tweaks.
|
||||
|
||||
## Installing Jekyll
|
||||
## Installing Ruby and Jekyll
|
||||
|
||||
### Installation via RubyInstaller
|
||||
|
||||
The easiest way to run Jekyll is by using the [RubyInstaller](https://rubyinstaller.org/) for Windows.
|
||||
The easiest way to install Ruby and Jekyll is by using the [RubyInstaller](https://rubyinstaller.org/) for Windows.
|
||||
|
||||
RubyInstaller is a self-contained Windows-based installer that includes the Ruby language, an execution environment,
|
||||
important documentation, and more.
|
||||
We only cover RubyInstaller-2.4 and newer here, older versions need to
|
||||
|
||||
We only cover RubyInstaller-2.4 and newer here. Older versions need to
|
||||
[install the Devkit](https://github.com/oneclick/rubyinstaller/wiki/Development-Kit) manually.
|
||||
|
||||
1. Download and Install a **Ruby+Devkit** version from [RubyInstaller Downloads](https://rubyinstaller.org/downloads/).
|
||||
1. Download and install a **Ruby+Devkit** version from [RubyInstaller Downloads](https://rubyinstaller.org/downloads/).
|
||||
Use default options for installation.
|
||||
2. Run the `ridk install` step on the last stage of the installation wizard. This is needed for installing gems with native
|
||||
extensions. You can find additional information regarding this in the
|
||||
[RubyInstaller Documentation](https://github.com/oneclick/rubyinstaller2#using-the-installer-on-a-target-system)
|
||||
3. Open a new command prompt window from the start menu, so that changes to the `PATH` environment variable becomes effective.
|
||||
Install Jekyll and Bundler via: `gem install jekyll bundler`
|
||||
4. Check if Jekyll installed properly: `jekyll -v`
|
||||
Install Jekyll and Bundler using `gem install jekyll bundler`
|
||||
4. Check if Jekyll has been installed properly: `jekyll -v`
|
||||
|
||||
{: .note .info}
|
||||
You may receive an error when checking if Jekyll has not been installed properly. Reboot your system and run `jekyll -v` again.
|
||||
If the error persists, please open a [RubyInstaller issue](https://github.com/oneclick/rubyinstaller2/issues/new).
|
||||
|
||||
That's it, you're ready to use Jekyll!
|
||||
|
||||
@@ -38,19 +42,15 @@ If you are using Windows 10 version 1607 or later, another option to run Jekyll
|
||||
{: .note .info}
|
||||
You must have [Windows Subsystem for Linux](https://msdn.microsoft.com/en-us/commandline/wsl/about) enabled.
|
||||
|
||||
First let's make sure all our packages / repositories are up to date. Open a new Command Prompt instance, and type the following:
|
||||
Make sure all your packages and repositories are up to date. Open a new Command Prompt or PowerShell window and type `bash`.
|
||||
|
||||
```sh
|
||||
bash
|
||||
```
|
||||
|
||||
Your Command Prompt instance should now be a Bash instance. Now we must update our repo lists and packages.
|
||||
Your terminal should now be a Bash instance. Next, update your repository lists and packages:
|
||||
|
||||
```sh
|
||||
sudo apt-get update -y && sudo apt-get upgrade -y
|
||||
```
|
||||
|
||||
Now we can install Ruby. To do this we will use a repository from [BrightBox](https://www.brightbox.com/docs/ruby/ubuntu/),
|
||||
Next, install Ruby. To do this, let's use a repository from [BrightBox](https://www.brightbox.com/docs/ruby/ubuntu/),
|
||||
which hosts optimized versions of Ruby for Ubuntu.
|
||||
|
||||
```sh
|
||||
@@ -59,27 +59,28 @@ sudo apt-get update
|
||||
sudo apt-get install ruby2.5 ruby2.5-dev build-essential dh-autoreconf
|
||||
```
|
||||
|
||||
Next let's update our Ruby gems:
|
||||
Next, update your Ruby gems:
|
||||
|
||||
```sh
|
||||
gem update
|
||||
```
|
||||
|
||||
Now all that is left to do is install Jekyll.
|
||||
Install Jekyll:
|
||||
|
||||
```sh
|
||||
gem install jekyll bundler
|
||||
```
|
||||
|
||||
(*Note: no `sudo` here.*)
|
||||
{: .note .info}
|
||||
No `sudo` here.
|
||||
|
||||
Check if Jekyll installed properly by running:
|
||||
Check your Jekyll version:
|
||||
|
||||
```sh
|
||||
jekyll -v
|
||||
```
|
||||
|
||||
**And that's it!**
|
||||
That's it! You're ready to start using Jekyll.
|
||||
|
||||
You can make sure time management is working properly by inspecting your `_posts` folder. You should see a markdown file
|
||||
with the current date in the filename.
|
||||
@@ -96,47 +97,38 @@ Bash on Ubuntu on Windows is still under development, so you may run into issues
|
||||
|
||||
## Encoding
|
||||
|
||||
If you use UTF-8 encoding, make sure that no `BOM` header characters exist in your files or very, very bad things will happen to
|
||||
Jekyll. This is especially relevant when you're running Jekyll on Windows.
|
||||
If you use UTF-8 encoding, Jekyll will break if a file starts with characters representing a [BOM](https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8). Therefore, remove this sequence of bytes if it appears at the beginning of your file.
|
||||
|
||||
Additionally, you might need to change the code page of the console window to UTF-8 in case you get a
|
||||
`Liquid Exception: Incompatible character encoding` error during the site generation process. It can be done with the following
|
||||
command:
|
||||
`Liquid Exception: Incompatible character encoding` error during the site generation process. Run the following:
|
||||
|
||||
```sh
|
||||
chcp 65001
|
||||
```
|
||||
|
||||
## Time-Zone Management
|
||||
## Time Zone 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.
|
||||
Since Windows doesn't have a native source of zoneinfo data, the Ruby Interpreter doesn't understand IANA Timezones.
|
||||
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
|
||||
Though Windows users could alternatively define their blog's timezone by setting the key to use the 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:
|
||||
sites *will* have to update their `Gemfile` (and installed gems) 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]
|
||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
# and associated library.
|
||||
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
||||
gem "tzinfo", ">= 1", "< 3"
|
||||
gem "tzinfo-data"
|
||||
end
|
||||
```
|
||||
|
||||
<div class="note warning">
|
||||
<h5>TZInfo 2.0 incompatibility</h5>
|
||||
<p>
|
||||
Version 2.0 of the TZInfo library has introduced a change in how timezone offsets are calculated.
|
||||
This will result in incorrect date and time for your posts when the site is built with Jekyll 3.x on Windows.
|
||||
</p>
|
||||
<p>
|
||||
We therefore recommend that you lock the Timezone library to version 1.2 and above by listing
|
||||
<code>gem 'tzinfo', '~> 1.2'</code> in your <code>Gemfile</code>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## Auto Regeneration
|
||||
|
||||
Jekyll uses the `listen` gem to watch for changes when the `--watch` switch is specified during a build or serve.
|
||||
|
||||
@@ -70,7 +70,7 @@ using [plugins](/docs/plugins/).
|
||||
{% for filter in site.data.jekyll_filters %}
|
||||
<tr>
|
||||
<td>
|
||||
<p class="name"><strong>{{ filter.name }}</strong></p>
|
||||
<p id="{{ filter.name | slugify }}" class="name"><strong>{{ filter.name }}</strong></p>
|
||||
<p>
|
||||
{{- filter.description -}}
|
||||
{%- if filter.version_badge %}
|
||||
|
||||
@@ -122,6 +122,25 @@ One major benefit of using the `link` or `post_url` tag is link validation. If t
|
||||
|
||||
Note you cannot add filters to `link` tags. For example, you cannot append a string using Liquid filters, such as {% raw %}`{% link mypage.html | append: "#section1" %}`{% endraw %}. To link to sections on a page, you will need to use regular HTML or Markdown linking techniques.
|
||||
|
||||
The name of the file you want to link can be specified as a variable instead of an actual file name. For example, suppose you defined a variable in your page's front matter like this:
|
||||
|
||||
```yaml
|
||||
---
|
||||
title: My page
|
||||
my_variable: footer_company_a.html
|
||||
---
|
||||
```
|
||||
|
||||
You could then reference that variable in your link:
|
||||
|
||||
{% raw %}
|
||||
```liquid
|
||||
{% link {{ page.my_variable }} %}
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
In this example, the `link` tag would render a link to the file `footer_company_a.html`.
|
||||
|
||||
### Linking to posts
|
||||
|
||||
If you want to include a link to a post on your site, the `post_url` tag will generate the correct permalink URL for the post you specify.
|
||||
|
||||
@@ -13,7 +13,7 @@ You want to maintain Jekyll? Use it often. Do weird things with it. Do normal th
|
||||
|
||||
## 2. Help Triage Issues
|
||||
|
||||
Watch the repository you're interested in. Join [an Affinity Team](https://teams.jekyllrb.com) and receive mentions regarding a particular interest area of the project. When you receive a notification for an issue that has not been triaged by a maintainer, dive in. Can you reproduce the issue? Can you determine the fix? [More tips on Triaging an Issue in our maintainer guide](../triaging-an-issue). Every maintainer loves an issue that is resolved before they get to it. :smiley:
|
||||
Watch the repository you're interested in. Join [an Affinity Team](https://teams.jekyllrb.com) and receive mentions regarding a particular interest area of the project. When you receive a notification for an issue that has not been triaged by a maintainer, dive in. Can you reproduce the issue? Can you determine the fix? [More tips on Triaging an Issue in our maintainer guide](../triaging-an-issue/). Every maintainer loves an issue that is resolved before they get to it. :smiley:
|
||||
|
||||
## 3. Write Documentation
|
||||
|
||||
@@ -25,7 +25,7 @@ As a maintainer, you will be reviewing pull requests which update code. You shou
|
||||
|
||||
## 5. Review Pull Requests
|
||||
|
||||
Start by reviewing one pull request a week. Leave detailed comments and [follow our guide for reviewing pull requests](../reviewing-a-pull-request).
|
||||
Start by reviewing one pull request a week. Leave detailed comments and [follow our guide for reviewing pull requests](../reviewing-a-pull-request/).
|
||||
|
||||
## 6. Ask!
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ Hello! This is where we document various processes for maintaining Jekyll. Being
|
||||
- [Avoiding burnout](avoiding-burnout/)
|
||||
- [Special Labels](special-labels/)
|
||||
- [Releasing a new version](releasing-a-new-version/)
|
||||
- [Releasing a new version off `*-stable` branches](releasing-off-stable-branches/)
|
||||
|
||||
Interested in becoming a maintainer? Here is some documentation for **contributors**:
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ title: "Merging a Pull Request"
|
||||
|
||||
All pull requests should be subject to code review. Code review is a [foundational value](https://blog.fullstory.com/what-we-learned-from-google-code-reviews-arent-just-for-catching-bugs/) of good engineering teams. Besides providing validation of correctness, it promotes a sense of community and gives other maintainers understanding of all parts of the code base. In short, code review is crucial to a healthy open source project.
|
||||
|
||||
**Read our guide for [Reviewing a pull request](../reviewing-a-pull-request) before merging.** Notably, the change must have tests if for code, and at least two maintainers must give it an OK.
|
||||
**Read our guide for [Reviewing a pull request](../reviewing-a-pull-request/) before merging.** Notably, the change must have tests if for code, and at least two maintainers must give it an OK.
|
||||
|
||||
## Merging
|
||||
|
||||
|
||||
@@ -2,25 +2,107 @@
|
||||
title: "Releasing a new version"
|
||||
---
|
||||
|
||||
**This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the contributions of others. You may find what is written here interesting, but it’s definitely not for everyone.
|
||||
**This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the
|
||||
contributions of others. You may find what is written here interesting, but it's definitely not for everyone.
|
||||
{: .note .info}
|
||||
|
||||
The most important thing to understand before making a release is that there's no need to feel nervous. Most things are revertable, and even if you do publish an incomplete gem version, we can always skip that one. Don't hestitate to contact the other maintainers if you feel unsure or don't know what to do next.
|
||||
The most important thing to understand before making a release is that there's no need to feel nervous. Most things are revertable, and even if
|
||||
you do publish an incomplete gem version, we can always skip that one. Don't hesitate to contact the other maintainers if you feel unsure or
|
||||
don't know what to do next.
|
||||
|
||||
### Bump the version
|
||||
|
||||
The only important place you need to manually bump the version is in `lib/jekyll/version.rb`. Adjust that, and everything else should work fine.
|
||||
|
||||
### Update the history document
|
||||
The version will mostly be of the format `"major.minor.patch"`. At times, we may decide to ship pre-releases which will be in the format
|
||||
`"major.minor.patch.suffix"`. `suffix` is not standardized and may be anything like `pre.alpha1`, `pre.rc2`, or simply `beta3`, etc.
|
||||
|
||||
Replace the first header of the history document with a version milestone. This looks like the following:
|
||||
To determine the correct version, consult the `## HEAD` section of our history document, `History.markdown`, first.
|
||||
|
||||
```diff
|
||||
-## HEAD
|
||||
+## 3.7.1 / 2018-01-25
|
||||
- If there's a subsection titled `Major Enhancements`
|
||||
- Increment the `major` component of the version string and reset both `minor` and `patch` components to `0`.
|
||||
- Add `suffix` if applicable.
|
||||
- For example, `"3.9.1" => "4.0.0"` or, `"3.9.1 => "4.0.0.alpha1"`.
|
||||
- Skip to next step in the release process.
|
||||
|
||||
- If there's a subsection titled `Minor Enhancements`
|
||||
- Increment just the `minor` component and reset the patch component to `0`.
|
||||
- Add `suffix` if applicable.
|
||||
- For example, `"4.0.2" => "4.1.0"` or `"4.1.0" => "4.2.0.pre"`.
|
||||
- Skip to next step in the release process.
|
||||
|
||||
- For anything else, increment just the `patch` component or `suffix` component as applicable. For example, `"4.0.2" => "4.0.3"` or
|
||||
`"4.1.0.beta3" => "4.1.0.rc"`.
|
||||
|
||||
### Write a release post
|
||||
|
||||
In case this wasn't done already, you can generate a new release post scaffold using the included `rake` command:
|
||||
|
||||
```sh
|
||||
bundle exec rake site:releases:new[3.8.0]
|
||||
```
|
||||
|
||||
Adjust the version number and the date. The `## HEAD` heading will be regenerated next time a pull request is merged.
|
||||
where `3.8.0` should be replaced with the new version.
|
||||
|
||||
Then, write the post. Be sure to thank all of the collaborators and maintainers who have contributed since the last release. You can generate
|
||||
a log of their names using the following command:
|
||||
|
||||
```sh
|
||||
git shortlog -sn master...v3.7.2
|
||||
```
|
||||
|
||||
where `v3.7.2` is the git tag for the previous release. In case the tag doesn't exist in your repository, run:
|
||||
|
||||
```sh
|
||||
git pull
|
||||
```
|
||||
|
||||
Be sure to open a pull request for your release post once its finished.
|
||||
|
||||
### Update the History document
|
||||
|
||||
Replace the first header of `History.markdown` with a version milestone. This looks like the following:
|
||||
|
||||
```diff
|
||||
- ## HEAD
|
||||
+ ## 3.7.1 / 2018-01-25
|
||||
```
|
||||
|
||||
Adjust the version number and the date. The `## HEAD` heading will be regenerated the next time a pull request is merged.
|
||||
|
||||
Rearrange the subsections (as a whole) based on decreasing priorities as illustrated below:
|
||||
|
||||
```
|
||||
## 4.2.0 / 2020-12-14
|
||||
|
||||
### Major Enhancements
|
||||
|
||||
...
|
||||
|
||||
### Minor Enhancements
|
||||
|
||||
...
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
...
|
||||
|
||||
### Security Fixes
|
||||
|
||||
...
|
||||
|
||||
### Optimization Fixes
|
||||
|
||||
...
|
||||
|
||||
### Development Fixes
|
||||
|
||||
...
|
||||
|
||||
### Site Enhancements
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
Once you've done this, update the website by running the following command:
|
||||
|
||||
@@ -30,60 +112,51 @@ bundle exec rake site:generate
|
||||
|
||||
This updates the website's changelog, and pushes the versions in various other places.
|
||||
|
||||
It's recommended that you go over the `History.markdown` file manually one more time, in case there are any spelling errors or such. Feel free to fix those manually, and after you're done generating the website changelog, commit your changes.
|
||||
|
||||
## Write a release post
|
||||
|
||||
In case this isn't done already, you can generate a new release post using the included `rake` command:
|
||||
|
||||
```sh
|
||||
bundle exec rake site:releases:new[3.8.0]
|
||||
```
|
||||
|
||||
where `3.8.0` should be replaced with the new version. Then, write the post. Be sure to thank all of the collaborators and maintainers who have contributed since the last release. You can generate a log of their names using the following command:
|
||||
|
||||
```sh
|
||||
git shortlog -sn master...v3.7.2
|
||||
```
|
||||
|
||||
where, again `v3.7.2` is the last release. Be sure to open a pull request for your release post.
|
||||
It's recommended that you go over the `History.markdown` file manually one more time, in case there are any spelling errors or such. Feel free
|
||||
to fix those manually, and after you're done generating the website changelog, commit your changes.
|
||||
|
||||
### Push the version
|
||||
|
||||
Before you do this step, make sure the following things are done:
|
||||
|
||||
- You have permission to push a new gem version to RubyGems
|
||||
- You're logged into RubyGems on your command line
|
||||
- A release post has been prepared, and is ideally already live
|
||||
- All of the prior steps are done, committed, and pushed to `master`
|
||||
- A release post has been prepared, and is ideally already live via a prior pull request.
|
||||
- All of the prior steps are done, especially the change to `lib/jekyll/version.rb` has been staged for commit.
|
||||
- Commit staged changes to the local `master` branch preferably with commit message `"Release :gem: v[CURRENT_VERSION]"`.
|
||||
|
||||
Really the only thing left to do is to run this command:
|
||||
The only thing left to do now is to run this command:
|
||||
|
||||
```sh
|
||||
bundle exec rake release
|
||||
git push upstream master
|
||||
```
|
||||
|
||||
This will automatically build the new gem, make a release commit and tag and then push the new gem to RubyGems. Don't worry about creating a GitHub release, @jekyllbot should take care of that.
|
||||
where `upstream` references `git@github.com:jekyll/jekyll.git`.
|
||||
|
||||
And then, you're done! :tada: Feel free to celebrate!
|
||||
This will trigger a GitHub Actions workflow that will automatically build the new gem, tag the release commit, push the tag to GitHub and
|
||||
then finally, push the new gem to RubyGems. Don't worry about creating a GitHub release either, @jekyllbot will take care of that when the
|
||||
release workflow publishes the new tag.
|
||||
|
||||
If you have access to the [@jekyllrb](https://twitter.com/jekyllrb) Twitter account, you should tweet the release post from there. If not, just ask another maintainer to do it or to give you access.
|
||||
And then, if the workflow has completed successfully, you're done! :tada:
|
||||
Feel free to celebrate!
|
||||
|
||||
If you have access to the [@jekyllrb](https://twitter.com/jekyllrb) Twitter account, you should tweet the release post from there. If not, just
|
||||
ask another maintainer to do it or to give you access.
|
||||
|
||||
### Build the docs
|
||||
|
||||
We package our documentation as a :gem: Gem for offline use.
|
||||
|
||||
This is done with the
|
||||
[**jekyll-docs**](https://github.com/jekyll/jekyll-docs#building) repository,
|
||||
and more detailed instructions are provided there.
|
||||
This is done with the [**jekyll-docs**](https://github.com/jekyll/jekyll-docs#building) repository, and more detailed instructions are
|
||||
provided there.
|
||||
|
||||
## For non-core gems
|
||||
|
||||
If you're not a maintainer for `jekyll/jekyll`, the procedure is much simpler in a lot of cases. Generally, the procedure still looks like this:
|
||||
If you're not a maintainer for `jekyll/jekyll`, the procedure is much simpler in a lot of cases. Generally, the procedure still looks like
|
||||
this:
|
||||
|
||||
- Bump the gem version manually, usually in `lib/<plugin_name>/version.rb`
|
||||
- Adjust the history file
|
||||
- Run `bundle exec rake release` or `script/release`, depending on which of the two exists
|
||||
- Commit changes to default branch preferably with message `"Release :gem: v[CURRENT_VERSION]"`
|
||||
- Push to remote repository
|
||||
- Rejoice
|
||||
|
||||
Be sure to ask your project's maintainers if you're unsure!
|
||||
|
||||
63
docs/_docs/maintaining/releasing-off-stable-branches.md
Normal file
63
docs/_docs/maintaining/releasing-off-stable-branches.md
Normal file
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: Releasing off older stable branches
|
||||
---
|
||||
|
||||
Apart from having releases cut from the default `master` branch, Jekyll Core may occasionally cut releases containing security patches and
|
||||
critical bug-fixes for older versions under maintenance. Such releases are cut from specially named branches, following the pattern
|
||||
`[x].[y]-stable` where `[x]` denotes semver-major-version and `[y]`, the semver-minor-version. For example, the branch `3.9-stable` refers to
|
||||
commits released as part of `jekyll-3.9.x` series.
|
||||
|
||||
Co-ordinating a release off a `*-stable` branch is complicated mainly because the default branch has to inevitably reflect the release as well.
|
||||
|
||||
## Requirements
|
||||
|
||||
- The maintainer has to have **write-access** to both the concerned `*-stable` and `master` branches.
|
||||
- The maintainer needs to complete the task using their **local CLI program** instead of dispatching via GitHub Web UI.
|
||||
- The maintainer is abreast with the workflow to [release off `master`]({{ 'docs/maintaining/releasing-a-new-version/' | relative_url }}). The
|
||||
procedure documented in the following section is an abridged adaptation of the workflow for `master`.
|
||||
- A release post has been drafted and **is awaiting publish to `master`** via an approved pull request.
|
||||
- Stable internet connection.
|
||||
|
||||
## Trigger release workflow
|
||||
|
||||
1. Ensure that you've **checked out the concerned `*-stable` branch** and is up-to-date with its counterpart at `jekyll/jekyll` at GitHub.
|
||||
2. Bump the `VERSION` string in `lib/jekyll/version.rb`.
|
||||
3. Update the **History document** as documented [here]({{ 'docs/maintaining/releasing-a-new-version/#update-the-history-document' | relative_url }}).<br/>
|
||||
(**IMPORTANT: Do not run `rake site:generate` on the stable branch though**).
|
||||
4. Copy the entire History section pertaining to current release and paste into a new tab / window of your text-editor. We will use this
|
||||
temporary snippet at a future stage.
|
||||
5. Commit changes to the version-file and History document with commit message `Release :gem: v[CURRENT_VERSION]`.
|
||||
6. Push commit to upstream remote `jekyll/jekyll` at GitHub.
|
||||
|
||||
## Publish release post
|
||||
|
||||
1. Ensure the `Release Gem` workflow has completed successfully.
|
||||
2. Merge release-post pull request to `master`.
|
||||
|
||||
## Update default branch to reflect release off the stable branch
|
||||
|
||||
1. Locally, check out `master` and ensure it is up-to-date with its remote counterpart at `jekyll/jekyll` at GitHub.
|
||||
2. Update History document using the snippet in the temporary tab / window created earlier. The various sections in the History document are
|
||||
primarily in reverse chronological order and secondarily scoped to the semver-major-version. For example, a release section for `v3.9.2`
|
||||
will be listed above the section for `v3.9.1` but under release sections for v4.x.
|
||||
The snippet stashed earlier has to be injected into the correct location manually.
|
||||
3. Optionally, update `VERSION` string in `lib/jekyll/version.rb`. (*If existing version is lesser than latest version*).
|
||||
4. Now **run `rake site:generate`** to update various meta files:
|
||||
- docs/_config.yml
|
||||
- docs/_docs/history.md
|
||||
- docs/latest_version.txt
|
||||
5. Commit changes to various meta files with commit message `Release :gem: v[CURRENT_VERSION]`.
|
||||
6. Push commit to upstream remote.
|
||||
|
||||
## Publish GitHub Release
|
||||
|
||||
Unlike releases cut off the `master` branch, our JekyllBot does not automatically create and publish a GitHub Release for tags created from
|
||||
*non-default* branches. Therefore, the maintainer has to **manually create and publish** the concerned GitHub Release.
|
||||
1. Choose the newly pushed tag.
|
||||
2. Title is same as the name of the selected tag.
|
||||
3. The release snippet stashed previously forms the body.
|
||||
4. Delete the snippet's title (`## x.y.z / YYYY-MM-DD`) from the release body.
|
||||
5. Publish.
|
||||
|
||||
Note: The GitHub Release may optionally be *drafted* prior to updating the default branch and then *published* immediately after pushing the
|
||||
update commit to the default branch to streamline the procedure.
|
||||
@@ -33,39 +33,9 @@ If you have a lot of pages, you can organize them into subfolders. The same subf
|
||||
|
||||
## Changing the output URL
|
||||
|
||||
You might want to have a particular folder structure for your source files that changes for the built site. With [permalinks](/docs/permalinks) you have full control of the output URL.
|
||||
You might want to have a particular folder structure for your source files that changes for the built site. With [permalinks](/docs/permalinks/) you have full control of the output URL.
|
||||
|
||||
## Liquid Representation
|
||||
## Excerpts for pages
|
||||
|
||||
From Jekyll 4.1 onwards, there is a minor change in how instances of `Jekyll::Page` are exposed to layouts and other Liquid
|
||||
templates. `Jekyll::Page` instances now use a `Liquid::Drop` instead of a `Hash`. This change results in greater performance
|
||||
for a site with numerous *standlone pages not within a collection*.
|
||||
|
||||
### For plugin developers
|
||||
|
||||
While end-users do not need to take any extra action due to this change, plugin authors depending on the existing behavior *may*
|
||||
need to make minor changes to their plugins.
|
||||
|
||||
If a `Jekyll::Page` subclass' `to_liquid` method calls `super`, it will have to be slightly modified.
|
||||
```ruby
|
||||
class Foo::BarPage < Jekyll::Page
|
||||
def to_liquid(*)
|
||||
payload = super # This needs to be changed to `super.to_h`
|
||||
# to obtain a Hash as in v4.0.0.
|
||||
|
||||
do_something(payload) # Logic specific to `Foo::BarPage` objects
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
`Jekyll::Page` subclasses won't inherit the optimization automatically until the next major version. However, plugin authors
|
||||
can opt-in to the optimization in their subclasses by wrapping the temporary `liquid_drop` method if the subclass doesn't
|
||||
override the superclass method:
|
||||
```ruby
|
||||
class Foo::BarPage < Jekyll::Page
|
||||
def to_liquid(*)
|
||||
liquid_drop # Returns an instance of `Jekyll::Drops::PageDrop`.
|
||||
# Will be removed in Jekyll 5.0.
|
||||
end
|
||||
end
|
||||
```
|
||||
From Jekyll 4.1.1 onwards, one can *choose* to generate excerpts for their pages by setting `page_excerpts` to `true` in their
|
||||
config file.
|
||||
|
||||
@@ -154,7 +154,7 @@ page with links to all but the current page.
|
||||
{% if page == paginator.page %}
|
||||
<em>{{ page }}</em>
|
||||
{% elsif page == 1 %}
|
||||
<a href="{{ paginator.previous_page_path | relative_url }}">{{ page }}</a>
|
||||
<a href="{{ '/' | relative_url }}">{{ page }}</a>
|
||||
{% else %}
|
||||
<a href="{{ site.paginate_path | relative_url | replace: ':num', page }}">{{ page }}</a>
|
||||
{% endif %}
|
||||
|
||||
@@ -229,7 +229,7 @@ Here's the full list of placeholders available:
|
||||
<td>
|
||||
<p>
|
||||
Title from the document’s filename. May be overridden via
|
||||
the document’s <code>slug</code> front matter.
|
||||
the document’s <code>slug</code> front matter. Preserves case from the source.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -409,6 +409,7 @@ Collections have the following placeholders available:
|
||||
variable value if any is present in the document; if none is
|
||||
defined then <code>:title</code> will be equivalent to
|
||||
<code>:name</code>, aka the slug generated from the filename.
|
||||
Preserves case from the source.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -7,6 +7,9 @@ Jekyll has a plugin system with hooks that allow you to create custom generated
|
||||
content specific to your site. You can run custom code for your site without
|
||||
having to modify the Jekyll source itself.
|
||||
|
||||
{: .note .info}
|
||||
You can add specific plugins to the `whitelist` key in `_config.yml` to allow them to run in safe mode.
|
||||
|
||||
* [Installation]({{ '/docs/plugins/installation/' | relative_url }}) - How to install plugins
|
||||
* [Your first plugin]({{ '/docs/plugins/your-first-plugin/' | relative_url }}) - How to write plugins
|
||||
* [Generators]({{ '/docs/plugins/generators/' | relative_url }}) - Create additional content on your site
|
||||
|
||||
@@ -19,6 +19,8 @@ end
|
||||
Liquid::Template.register_filter(Jekyll::AssetFilter)
|
||||
```
|
||||
|
||||
For more details on creating custom Liquid Filters, head to the [Liquid docs](https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers#create-your-own-filters).
|
||||
|
||||
<div class="note">
|
||||
<h5>ProTip™: Access the site object using Liquid</h5>
|
||||
<p>
|
||||
|
||||
@@ -3,36 +3,34 @@ title: Generators
|
||||
permalink: /docs/plugins/generators/
|
||||
---
|
||||
|
||||
You can create a generator when you need Jekyll to create additional content
|
||||
based on your own rules.
|
||||
You can create a generator when you need Jekyll to create additional content based on your own rules.
|
||||
|
||||
A generator is a subclass of `Jekyll::Generator` that defines a `generate`
|
||||
method, which receives an instance of
|
||||
[`Jekyll::Site`]({{ site.repository }}/blob/master/lib/jekyll/site.rb). The
|
||||
return value of `generate` is ignored.
|
||||
A generator is a subclass of `Jekyll::Generator` that defines a `generate` method, which receives an instance of
|
||||
[`Jekyll::Site`]({{ site.repository }}/blob/master/lib/jekyll/site.rb). The return value of `generate` is ignored.
|
||||
|
||||
Generators run after Jekyll has made an inventory of the existing content, and
|
||||
before the site is generated. Pages with front matter are stored as
|
||||
instances of
|
||||
[`Jekyll::Page`]({{ site.repository }}/blob/master/lib/jekyll/page.rb)
|
||||
and are available via `site.pages`. Static files become instances of
|
||||
Generators run after Jekyll has made an inventory of the existing content, and before the site is generated. Pages with
|
||||
front matter are stored as instances of [`Jekyll::Page`]({{ site.repository }}/blob/master/lib/jekyll/page.rb) and are
|
||||
available via `site.pages`. Static files become instances of
|
||||
[`Jekyll::StaticFile`]({{ site.repository }}/blob/master/lib/jekyll/static_file.rb)
|
||||
and are available via `site.static_files`. See
|
||||
[the Variables documentation page](/docs/variables/) and
|
||||
[`Jekyll::Site`]({{ site.repository }}/blob/master/lib/jekyll/site.rb)
|
||||
for details.
|
||||
and are available via `site.static_files`. See [the Variables documentation page](/docs/variables/) and
|
||||
[`Jekyll::Site`]({{ site.repository }}/blob/master/lib/jekyll/site.rb) for details.
|
||||
|
||||
For instance, a generator can inject values computed at build time for template
|
||||
variables. In the following example, the template `reading.html` has two
|
||||
variables `ongoing` and `done` that are filled in the generator:
|
||||
In the following example, the generator will inject values computed at build time for template variables. The template
|
||||
named `reading.html` has two undefined variables `ongoing` and `done` that will be defined or assigned a value when
|
||||
the generator runs:
|
||||
|
||||
```ruby
|
||||
module Reading
|
||||
class Generator < Jekyll::Generator
|
||||
def generate(site)
|
||||
ongoing, done = Book.all.partition(&:ongoing?)
|
||||
book_data = site.data['books']
|
||||
ongoing = book_data.select { |book| book['status'] == 'ongoing' }
|
||||
done = book_data.select { |book| book['status'] == 'finished' }
|
||||
|
||||
reading = site.pages.detect {|page| page.name == 'reading.html'}
|
||||
# get template
|
||||
reading = site.pages.find { |page| page.name == 'reading.html'}
|
||||
|
||||
# inject data into template
|
||||
reading.data['ongoing'] = ongoing
|
||||
reading.data['done'] = done
|
||||
end
|
||||
@@ -40,42 +38,80 @@ module Reading
|
||||
end
|
||||
```
|
||||
|
||||
The following example is a more complex generator that generates new pages. In this example, the generator will create a series of files under the `categories` directory for each category, listing the posts in each category using the `category_index.html` layout.
|
||||
The following example is a more complex generator that generates new pages.
|
||||
|
||||
In this example, the aim of the generator is to create a page for each category registered in the `site`. The pages are
|
||||
created at runtime, so their contents, front matter and other attributes need to be designed by the plugin itself.
|
||||
* The pages are intended to render a list of all documents under a given category. So the basename of the rendered file
|
||||
would be better as `index.html`.
|
||||
* Having the ability to configure the pages via [front matter defaults](/docs/configuration/front-matter-defaults/)
|
||||
would be awesome! So assigning a particular `type` to these pages would be beneficial.
|
||||
|
||||
```ruby
|
||||
module Jekyll
|
||||
class CategoryPageGenerator < Generator
|
||||
module SamplePlugin
|
||||
class CategoryPageGenerator < Jekyll::Generator
|
||||
safe true
|
||||
|
||||
def generate(site)
|
||||
if site.layouts.key? 'category_index'
|
||||
dir = site.config['category_dir'] || 'categories'
|
||||
site.categories.each_key do |category|
|
||||
site.pages << CategoryPage.new(site, site.source, File.join(dir, category), category)
|
||||
end
|
||||
site.categories.each do |category, posts|
|
||||
site.pages << CategoryPage.new(site, category, posts)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# A Page subclass used in the `CategoryPageGenerator`
|
||||
class CategoryPage < Page
|
||||
def initialize(site, base, dir, category)
|
||||
@site = site
|
||||
@base = base
|
||||
@dir = dir
|
||||
@name = 'index.html'
|
||||
# Subclass of `Jekyll::Page` with custom method definitions.
|
||||
class CategoryPage < Jekyll::Page
|
||||
def initialize(site, category, posts)
|
||||
@site = site # the current site instance.
|
||||
@base = site.source # path to the source directory.
|
||||
@dir = category # the directory the page will reside in.
|
||||
|
||||
self.process(@name)
|
||||
self.read_yaml(File.join(base, '_layouts'), 'category_index.html')
|
||||
self.data['category'] = category
|
||||
# All pages have the same filename, so define attributes straight away.
|
||||
@basename = 'index' # filename without the extension.
|
||||
@ext = '.html' # the extension.
|
||||
@name = 'index.html' # basically @basename + @ext.
|
||||
|
||||
category_title_prefix = site.config['category_title_prefix'] || 'Category: '
|
||||
self.data['title'] = "#{category_title_prefix}#{category}"
|
||||
# Initialize data hash with a key pointing to all posts under current category.
|
||||
# This allows accessing the list in a template via `page.linked_docs`.
|
||||
@data = {
|
||||
'linked_docs' => posts
|
||||
}
|
||||
|
||||
# Look up front matter defaults scoped to type `categories`, if given key
|
||||
# doesn't exist in the `data` hash.
|
||||
data.default_proc = proc do |_, key|
|
||||
site.frontmatter_defaults.find(relative_path, :categories, key)
|
||||
end
|
||||
end
|
||||
|
||||
# Placeholders that are used in constructing page URL.
|
||||
def url_placeholders
|
||||
{
|
||||
:category => @dir,
|
||||
:basename => basename,
|
||||
:output_ext => output_ext,
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
The generated pages can now be set up to use a particular layout or output at a particular path in the destination
|
||||
directory all via the config file using front matter defaults. For example:
|
||||
|
||||
```yaml
|
||||
# _config.yml
|
||||
|
||||
defaults:
|
||||
- scope:
|
||||
type: categories # select all category pages
|
||||
values:
|
||||
layout: category_page
|
||||
permalink: categories/:category/
|
||||
```
|
||||
|
||||
## Technical Aspects
|
||||
|
||||
Generators need to implement only one method:
|
||||
|
||||
<div class="mobile-side-scroller">
|
||||
@@ -99,6 +135,10 @@ Generators need to implement only one method:
|
||||
</table>
|
||||
</div>
|
||||
|
||||
If your generator is contained within a single file, it can be named whatever you want but it should have an `.rb` extension. If your generator is split across multiple files, it should be packaged as a Rubygem to be published at https://rubygems.org/. In this case, the name of the gem depends on the availability of the name at that site because no two gems can have the same name.
|
||||
If your generator is contained within a single file, it can be named whatever you want but it should have an `.rb`
|
||||
extension. If your generator is split across multiple files, it should be packaged as a Rubygem to be published at
|
||||
https://rubygems.org/. In this case, the name of the gem depends on the availability of the name at that site because
|
||||
no two gems can have the same name.
|
||||
|
||||
By default, Jekyll looks for generators in the `_plugins` directory. However, you can change the default directory by assigning the desired name to the key `plugins_dir` in the config file.
|
||||
By default, Jekyll looks for generators in the `_plugins` directory. However, you can change the default directory by
|
||||
assigning the desired name to the key `plugins_dir` in the config file.
|
||||
|
||||
@@ -3,81 +3,75 @@ title: Hooks
|
||||
permalink: /docs/plugins/hooks/
|
||||
---
|
||||
|
||||
Using hooks, your plugin can exercise fine-grained control over various aspects
|
||||
of the build process. If your plugin defines any hooks, Jekyll will call them
|
||||
at pre-defined points.
|
||||
Using hooks, your plugin can exercise fine-grained control over various aspects of the build process. If your plugin defines any hooks, Jekyll
|
||||
will call them at pre-defined points.
|
||||
|
||||
Hooks are registered to a container and an event name. To register one, you
|
||||
call Jekyll::Hooks.register, and pass the container, event name, and code to
|
||||
call whenever the hook is triggered. For example, if you want to execute some
|
||||
custom functionality every time Jekyll renders a post, you could register a
|
||||
hook like this:
|
||||
Hooks are registered to an owner and an event name. To register one, you call `Jekyll::Hooks.register`, and pass the hook owner, event name,
|
||||
and code to call whenever the hook is triggered. For example, if you want to execute some custom functionality every time Jekyll renders a
|
||||
page, you could register a hook like this:
|
||||
|
||||
```ruby
|
||||
Jekyll::Hooks.register :posts, :post_render do |post|
|
||||
# code to call after Jekyll renders a post
|
||||
Jekyll::Hooks.register :pages, :post_render do |page|
|
||||
# code to call after Jekyll renders a page
|
||||
end
|
||||
```
|
||||
|
||||
Jekyll provides hooks for <code>:site</code>, <code>:pages</code>,
|
||||
<code>:posts</code>, <code>:documents</code> and <code>:clean</code>. In all
|
||||
cases, Jekyll calls your hooks with the container object as the first callback
|
||||
parameter. All `:pre_render` hooks and the`:site, :post_render` hook will also
|
||||
provide a payload hash as a second parameter. In the case of `:pre_render`, the
|
||||
payload gives you full control over the variables that are available while
|
||||
rendering. In the case of `:site, :post_render`, the payload contains final
|
||||
values after rendering all the site (useful for sitemaps, feeds, etc).
|
||||
*Note: The `:post_convert` events mentioned hereafter is a feature introduced in v4.2.0.*
|
||||
|
||||
The complete list of available hooks is below:
|
||||
Out of the box, Jekyll has pre-defined hook points for owners `:site`, `:pages`, `:documents` and `:clean`. Additionally, the hook points
|
||||
defined for `:documents` can be utilized for individual collections only by invoking the collection type instead. i.e. `:posts` for documents
|
||||
in collection `_posts` and `:movies` for documents in collection `_movies`. In all cases, Jekyll calls your hooks with the owner object as the
|
||||
first callback parameter.
|
||||
|
||||
Every registered hook owner supports the following events — `:post_init`, `:pre_render`, `:post_convert`, `:post_render`, `:post_write`
|
||||
— however, the `:site` owner is set up to *respond* to *special event names*. Refer to the subsequent section for details.
|
||||
|
||||
All `:pre_render` hooks and the `:site, :post_render` hook will also provide a `payload` hash as a second parameter. While in the case of
|
||||
`:pre_render` events, the payload gives you full control over the variables that are available during rendering, with the `:site, :post_render`
|
||||
event, the payload contains final values after rendering all the site (useful for sitemaps, feeds, etc).
|
||||
|
||||
## Built-in Hook Owners and Events
|
||||
The complete list of available hooks:
|
||||
|
||||
<div class="mobile-side-scroller">
|
||||
<table>
|
||||
<table id="builtin-hooks">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Container</th>
|
||||
<th>Owner</th>
|
||||
<th>Event</th>
|
||||
<th>Called</th>
|
||||
<th>Triggered at</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<td rowspan="6">
|
||||
<p><code>:site</code></p>
|
||||
<p>Encompasses the entire site</p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:after_init</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Just after the site initializes, but before setup & render. Good
|
||||
for modifying the configuration of the site.</p>
|
||||
<p>Just after the site initializes. Good for modifying the configuration of the site. Triggered once per build / serve session</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:site</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:after_reset</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Just after site reset</p>
|
||||
<p>Just after the site resets during regeneration</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:site</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:post_read</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>After site data has been read and loaded from disk</p>
|
||||
<p>After all source files have been read and loaded from disk</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:site</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:pre_render</code></p>
|
||||
</td>
|
||||
@@ -86,9 +80,6 @@ The complete list of available hooks is below:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:site</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:post_render</code></p>
|
||||
</td>
|
||||
@@ -97,19 +88,17 @@ The complete list of available hooks is below:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:site</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:post_write</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>After writing the whole site to disk</p>
|
||||
<p>After writing all of the rendered files to disk</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<td rowspan="5">
|
||||
<p><code>:pages</code></p>
|
||||
<p>Allows fine-grained control over all pages in the site</p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:post_init</code></p>
|
||||
@@ -119,9 +108,6 @@ The complete list of available hooks is below:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:pages</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:pre_render</code></p>
|
||||
</td>
|
||||
@@ -131,8 +117,13 @@ The complete list of available hooks is below:
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:pages</code></p>
|
||||
<p><code>:post_convert</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>After converting the page content, but before rendering the page layout</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:post_render</code></p>
|
||||
</td>
|
||||
@@ -141,9 +132,6 @@ The complete list of available hooks is below:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:pages</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:post_write</code></p>
|
||||
</td>
|
||||
@@ -152,8 +140,56 @@ The complete list of available hooks is below:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="5">
|
||||
<p><code>:documents</code></p>
|
||||
<p>Allows fine-grained control over all documents in the site including posts and documents in user-defined collections</p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:post_init</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Whenever any document is initialized</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:pre_render</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Just before rendering a document</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:post_convert</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
After converting the document content, but before rendering the document
|
||||
layout
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:post_render</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>After rendering a document, but before writing it to disk</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:post_write</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>After writing a document to disk</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="5">
|
||||
<p><code>:posts</code></p>
|
||||
<p>Allows fine-grained control over all posts in the site without affecting documents in user-defined collections</p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:post_init</code></p>
|
||||
@@ -163,9 +199,6 @@ The complete list of available hooks is below:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:posts</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:pre_render</code></p>
|
||||
</td>
|
||||
@@ -175,8 +208,13 @@ The complete list of available hooks is below:
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:posts</code></p>
|
||||
<p><code>:post_convert</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>After converting the post content, but before rendering the postlayout</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:post_render</code></p>
|
||||
</td>
|
||||
@@ -185,9 +223,6 @@ The complete list of available hooks is below:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:posts</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:post_write</code></p>
|
||||
</td>
|
||||
@@ -195,53 +230,10 @@ The complete list of available hooks is below:
|
||||
<p>After writing a post to disk</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:documents</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:post_init</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Whenever a document is initialized</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:documents</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:pre_render</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Just before rendering a document</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:documents</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:post_render</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>After rendering a document, but before writing it to disk</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:documents</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:post_write</code></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>After writing a document to disk</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p><code>:clean</code></p>
|
||||
<p>Fine-grained control on the list of obsolete files determined to be deleted during the site's cleanup phase.</p>
|
||||
</td>
|
||||
<td>
|
||||
<p><code>:on_obsolete</code></p>
|
||||
@@ -253,3 +245,45 @@ The complete list of available hooks is below:
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
## Hooks for custom Jekyll objects
|
||||
|
||||
You can also register and trigger hooks for Jekyll objects introduced by your plugin. All it takes is placing `trigger` calls under a suitable
|
||||
`owner` name, at positions desired within your custom class and registering the `owner` by your plugin.
|
||||
|
||||
To illustrate, consider the following plugin that implements custom functionality for every custom `Excerpt` object initialized:
|
||||
|
||||
```ruby
|
||||
module Foobar
|
||||
class HookedExcerpt < Jekyll::Excerpt
|
||||
def initialize(doc)
|
||||
super
|
||||
trigger_hooks(:post_init)
|
||||
end
|
||||
|
||||
def output
|
||||
@output ||= trigger_hooks(:post_render, renderer.run)
|
||||
end
|
||||
|
||||
def renderer
|
||||
@renderer ||= Jekyll::Renderer.new(
|
||||
doc.site, self, site.site_payload
|
||||
)
|
||||
end
|
||||
|
||||
def trigger_hooks(hook_name, *args)
|
||||
Jekyll::Hooks.trigger :excerpts, hook_name, self, *args
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Jekyll::Hooks.register :excerpts, :post_init do |excerpt|
|
||||
Jekyll.logger.debug "Initialized:",
|
||||
"Hooked Excerpt for #{excerpt.doc.inspect}"
|
||||
end
|
||||
|
||||
Jekyll::Hooks.register :excerpts, :post_render do |excerpt, output|
|
||||
return output unless excerpt.doc.type == :posts
|
||||
Foobar.transform(output)
|
||||
end
|
||||
```
|
||||
|
||||
@@ -3,77 +3,123 @@ title: Plugins
|
||||
permalink: /docs/plugins/installation/
|
||||
---
|
||||
|
||||
You have 3 options for installing plugins:
|
||||
Jekyll has built-in support for using plugins to extend the core functionality.
|
||||
|
||||
1. In your site source root, make a `_plugins` directory. Place your plugins
|
||||
here. Any file ending in `*.rb` inside this directory will be loaded before
|
||||
Jekyll generates your site.
|
||||
Primarily, any file with extension `.rb` placed within a `_plugins` directory at the root of the site's `source`, will be automatically loaded
|
||||
during a build session.
|
||||
|
||||
2. In your `_config.yml` file, add a new array with the key `plugins` (or `gems` for Jekyll < `3.5.0`) and the
|
||||
values of the gem names of the plugins you'd like to use. An example:
|
||||
This behavior can be configured as follows:
|
||||
|
||||
```yaml
|
||||
# This will require each of these plugins automatically.
|
||||
plugins:
|
||||
- jekyll-gist
|
||||
- jekyll-coffeescript
|
||||
- jekyll-assets
|
||||
- another-jekyll-plugin
|
||||
```
|
||||
- The `_plugins` directory may be changed either directly via the command-line or via the configuration file(s).
|
||||
- Plugins in the `_plugins` directory (or its equivalent(s)) will not be loaded when Jekyll is running in `safe` mode.
|
||||
- This route cannot be used to extend the Jekyll CLI.
|
||||
|
||||
Then install your plugins using `gem install jekyll-gist jekyll-coffeescript jekyll-assets another-jekyll-plugin`
|
||||
To work with plugins packaged as gems, one has to list the desired gems in the configuration file under a top-level key named `plugins`.
|
||||
Additionally, if you're building in `safe` mode, the gem needs to be listed under a top-level key named `whitelist`. For example:
|
||||
|
||||
3. Add the relevant plugins to a Bundler group in your `Gemfile`. An
|
||||
example:
|
||||
```yaml
|
||||
plugins:
|
||||
- jekyll-gist
|
||||
- jekyll-coffeescript
|
||||
- jekyll-seo-tag
|
||||
- some-other-jekyll-plugin
|
||||
|
||||
```ruby
|
||||
group :jekyll_plugins do
|
||||
gem "jekyll-gist"
|
||||
gem "jekyll-coffeescript"
|
||||
gem "jekyll-assets"
|
||||
gem "another-jekyll-plugin"
|
||||
end
|
||||
```
|
||||
# Enable safe mode
|
||||
safe: true
|
||||
|
||||
Now you need to install all plugins from your Bundler group by running single command `bundle install`.
|
||||
# Whitelist plugins under safe mode.
|
||||
# Note that `some-other-jekyll-plugin` is not listed here. Therefore,
|
||||
# it will not be loaded under safe mode.
|
||||
whitelist:
|
||||
- jekyll-gist
|
||||
- jekyll-coffeescript
|
||||
- jekyll-seo-tag
|
||||
```
|
||||
|
||||
In the absence of a Gemfile, one must manually ensure that listed plugins have been installed prior to invoking Jekyll. For example, the
|
||||
latest versions of gems in the above list may be installed to a system-wide location by running:
|
||||
|
||||
```sh
|
||||
gem install jekyll-gist jekyll-coffeescript jekyll-remote-theme some-other-jekyll-plugin
|
||||
```
|
||||
|
||||
## Using a Gemfile
|
||||
|
||||
The maintenance of various gem dependencies may be greatly simplified by using a Gemfile (usually at the root of the site's source) in
|
||||
conjunction with a Rubygem named `bundler`. The Gemfile however **should** list all the primary dependencies of your site, including Jekyll
|
||||
itself, not just gem-based plugins of the site because Bundler narrows the scope of installed gems to just *runtime dependencies* resolved by
|
||||
evaluating the Gemfile. For example:
|
||||
|
||||
```ruby
|
||||
source "https://rubygems.org"
|
||||
|
||||
# Use the latest version.
|
||||
gem "jekyll"
|
||||
|
||||
# The theme of current site, locked to a certain version.
|
||||
gem "minima", "2.4.1"
|
||||
|
||||
# Plugins of this site loaded during a build with proper
|
||||
# site configuration.
|
||||
gem "jekyll-gist"
|
||||
gem "jekyll-coffeescript"
|
||||
gem "jekyll-seo-tag", "~> 1.5"
|
||||
gem "some-other-jekyll-plugin"
|
||||
|
||||
# A dependency of a custom-plugin inside `_plugins` directory.
|
||||
gem "nokogiri", "~> 1.11"
|
||||
```
|
||||
|
||||
The gems listed in the Gemfile can be collectively installed by simply running `bundle install`.
|
||||
|
||||
### The `:jekyll_plugins` Gemfile group
|
||||
{: #the-jekyll_plugins-group}
|
||||
|
||||
Jekyll gives a special treatment to gems listed as part of the `:jekyll_plugins` group in a Gemfile. Any gem under this group is loaded at
|
||||
the very beginning of any Jekyll process, irrespective of the `--safe` CLI flag or entries in the configuration file(s).
|
||||
|
||||
While this route allows one to enhance Jekyll's CLI with additional subcommands and options, or avoid having to list gems in the configuration
|
||||
file, the downside is the necessity to be mindful of what gems are included in the group. For example:
|
||||
|
||||
```ruby
|
||||
source "https://rubygems.org"
|
||||
|
||||
# Use the latest version.
|
||||
gem "jekyll"
|
||||
|
||||
# The theme of current site, locked to a certain version.
|
||||
gem "minima", "2.4.1"
|
||||
|
||||
# Plugins of this site loaded only if configured correctly.
|
||||
gem "jekyll-gist"
|
||||
gem "jekyll-coffeescript"
|
||||
|
||||
# Gems loaded irrespective of site configuration.
|
||||
group :jekyll_plugins do
|
||||
gem "jekyll-cli-plus"
|
||||
gem "jekyll-seo-tag", "~> 1.5"
|
||||
gem "some-other-jekyll-plugin"
|
||||
end
|
||||
```
|
||||
|
||||
<div class="note info">
|
||||
<h5>Plugins on GitHub Pages</h5>
|
||||
<p>
|
||||
<a href="https://pages.github.com/">GitHub Pages</a> is powered by Jekyll.
|
||||
All Pages sites are generated using the <code>--safe</code> option
|
||||
to disable plugins (with the exception of some
|
||||
<a href="https://pages.github.com/versions">whitelisted plugins</a>) for
|
||||
security reasons. Unfortunately, this means
|
||||
your plugins won’t work if you’re deploying to GitHub Pages.<br><br>
|
||||
You can still use GitHub Pages to publish your site, but you’ll need to
|
||||
convert the site locally and push the generated static files to your GitHub
|
||||
repository instead of the Jekyll source files.
|
||||
<a href="https://pages.github.com/">GitHub Pages</a> is powered by Jekyll. All GitHub Pages sites are generated using the
|
||||
<code>--safe</code> option to disable plugins (with the exception of some
|
||||
<a href="https://pages.github.com/versions">whitelisted plugins</a>) for security reasons. Unfortunately, this means your plugins won't
|
||||
work if you’re deploying via GitHub Pages.<br><br>
|
||||
You can still use GitHub Pages to publish your site, but you’ll need to build the site locally and push the generated files to your
|
||||
GitHub repository instead of the Jekyll source files.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="note">
|
||||
<h5>
|
||||
<code>_plugins</code>, <code>_config.yml</code> and <code>Gemfile</code>
|
||||
can be used simultaneously
|
||||
<code>_plugins</code>, <code>_config.yml</code> and <code>Gemfile</code> can be used simultaneously
|
||||
</h5>
|
||||
<p>
|
||||
You may use any of the aforementioned plugin options simultaneously in the
|
||||
same site if you so choose. Use of one does not restrict the use of the
|
||||
others.
|
||||
You may use any of the aforementioned plugin routes simultaneously in the same site if you so choose.
|
||||
Use of one does not restrict the use of the others.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
### The jekyll_plugins group
|
||||
|
||||
Jekyll gives this particular group of gems in your `Gemfile` a different
|
||||
treatment. Any gem included in this group is loaded before Jekyll starts
|
||||
processing the rest of your source directory.
|
||||
|
||||
A gem included here will be activated even if its not explicitly listed under
|
||||
the `plugins:` key in your site's config file.
|
||||
|
||||
{: .note .warning}
|
||||
Gems included in the <code>:jekyll-plugins</code> group are activated
|
||||
regardless of the <code>--safe</code> mode setting. Be aware of which
|
||||
gems are included under this group!
|
||||
|
||||
@@ -136,7 +136,7 @@ recommended best practices to help structure your plugin.
|
||||
We recommend using a [gem](/docs/ruby-101/#gems) for your plugin. This will
|
||||
help you manage dependencies, keep separation from your site source code and
|
||||
allow you to share functionality across multiple projects. For tips on creating
|
||||
a gem take a look a the
|
||||
a gem take a look at the
|
||||
[Ruby gems guide](https://guides.rubygems.org/make-your-own-gem/) or look
|
||||
through the source code of an existing plugin such as
|
||||
[jekyll-feed](https://github.com/jekyll/jekyll-feed).
|
||||
|
||||
@@ -177,7 +177,7 @@ When the post also has front matter defining categories, they just get added to
|
||||
the existing list if not present already.
|
||||
|
||||
The hallmark difference between categories and tags is that categories of a post
|
||||
may be incorporated into [the generated URL]('/docs/permalinks/#global') for the
|
||||
may be incorporated into [the generated URL](/docs/permalinks/#global) for the
|
||||
post, while tags cannot be.
|
||||
|
||||
Therefore, depending on whether front matter has `category: classic hollywood`,
|
||||
|
||||
28
docs/_docs/rendering-process.md
Normal file
28
docs/_docs/rendering-process.md
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
---
|
||||
|
||||
For any Jekyll site, a *build session* consists of discrete phases in the following order --- *setting up plugins,
|
||||
reading source files, running generators, rendering templates*, and finally *writing files to disk*.
|
||||
|
||||
While the phases above are self-explanatory, the one phase that warrants dissection is *the rendering phase*.
|
||||
|
||||
The rendering phase is further divisible into three optional stages. Every file rendered, passes through one or more of
|
||||
these stages as determined by the file's content string, front matter and extension. The stages are akin to an assembly
|
||||
line, with the *output* from a stage being the *input* for the succeeding stage:
|
||||
- **Interpreting Liquid expressions in the file**<br/>
|
||||
This stage evaluates Liquid expressions in the current file. By default, the interpretation is *shallow* --- in that
|
||||
any Liquid expression in resulting output is not further interpreted. Moreover, any Liquid expression in the file's
|
||||
front matter is left untouched.
|
||||
- **Unleashing the converters**<br/>
|
||||
This stage invokes the converter mapped to the current file's extension and converts the input string. This is when
|
||||
Markdown gets converted into HTML and Sass / Scss into CSS or CoffeeScript into JavaScript, etc, etc. Since this stage
|
||||
is determined by the file's extension, Markdown or Sass inside a `.html` file will remain untouched.
|
||||
- **Populating the layouts**<br/>
|
||||
By this stage, *the source file* is considered rendered and it will not be revisited. However, based on the file's
|
||||
extension and consequently based on the front matter, it is determined whether to take the *output* string from
|
||||
the preceding stage and place into layouts or not. Whereas output from Sass files or CoffeeScript files are *never*
|
||||
placed into a layout, regular text output can go either ways based on whether a layout has been assigned via the front
|
||||
matter.<br/><br/>
|
||||
Placement into layouts work similar to how Russian dolls encase the smaller ones within itself or how an oyster
|
||||
generates a pearl --- the converted output from the preceding stage forms the core and layout(s) are successively
|
||||
*rendered* separately onto the core.
|
||||
@@ -3,24 +3,27 @@ title: Ruby 101
|
||||
permalink: /docs/ruby-101/
|
||||
---
|
||||
|
||||
Jekyll is written in Ruby. If you're new to Ruby, this page is to help you get
|
||||
up to speed with some of the terminology.
|
||||
Jekyll is written in Ruby. If you're new to Ruby, this page helps you learn some of the terminology.
|
||||
|
||||
## Gems
|
||||
|
||||
A gem is code you can include in Ruby projects. It allows you to package up functionality and share it across other projects or with other people. Gems can perform functionality such as:
|
||||
Gems are code you can include in Ruby projects. Gems package specific functionality. You can share gems across multiple projects or with other people.
|
||||
Gems can perform actions like:
|
||||
|
||||
* Converting a Ruby object to JSON
|
||||
* Pagination
|
||||
* Interacting with APIs such as GitHub
|
||||
* Jekyll itself is a gem as well as many Jekyll plugins including
|
||||
|
||||
Jekyll is a gem. Many Jekyll [plugins]({{ '/docs/plugins/' | relative_url }}) are also gems, including
|
||||
[jekyll-feed](https://github.com/jekyll/jekyll-feed),
|
||||
[jekyll-seo-tag](https://github.com/jekyll/jekyll-seo-tag) and
|
||||
[jekyll-archives](https://github.com/jekyll/jekyll-archives).
|
||||
|
||||
## Gemfile
|
||||
|
||||
A `Gemfile` is a list of gems required for your site. For a simple Jekyll site it might look something like this:
|
||||
A `Gemfile` is a list of gems used by your site. Every Jekyll site has a Gemfile in the main folder.
|
||||
|
||||
For a simple Jekyll site it might look something like this:
|
||||
|
||||
```ruby
|
||||
source "https://rubygems.org"
|
||||
@@ -35,10 +38,19 @@ end
|
||||
|
||||
## Bundler
|
||||
|
||||
Bundler installs the gems in your `Gemfile`. It's not a requirement for you to use a `Gemfile` and `bundler` however it's highly recommended as it ensures you're running the same version of Jekyll and Jekyll plugins across different environments.
|
||||
[Bundler](https://rubygems.org/gems/bundler) is a gem that installs all gems in your `Gemfile`.
|
||||
|
||||
`gem install bundler` installs [Bundler](https://rubygems.org/gems/bundler). You only need to install it once — not every time you create a new Jekyll project. Here are some additional details:
|
||||
While you don't have to use `Gemfile` and `bundler`, it is highly recommended as it ensures you're running the same version of Jekyll and its plugins across different environments.
|
||||
|
||||
If you're using a `Gemfile` you would first run `bundle install` to install the gems, then `bundle exec jekyll serve` to build your site. This guarantees you're using the gem versions set in the `Gemfile`. If you're not using a `Gemfile` you can just run `jekyll serve`.
|
||||
Install Bundler using `gem install bundler`. You only need to install it once, not every time you create a new Jekyll project.
|
||||
|
||||
For more information about how to use Bundler in your Jekyll project, this [tutorial](/tutorials/using-jekyll-with-bundler/) should provide answers to the most common questions and explain how to get up and running quickly.
|
||||
To install gems in your Gemfile using Bundler, run the following in the directory that has the Gemfile:
|
||||
|
||||
```
|
||||
bundle install
|
||||
bundle exec jekyll serve
|
||||
```
|
||||
|
||||
To bypass Bundler if you aren't using a Gemfile, run `jekyll serve`.
|
||||
|
||||
See [Using Jekyll with Bundler](/tutorials/using-jekyll-with-bundler/) for more information about Bundler in Jekyll and for instructions to get up and running quickly.
|
||||
|
||||
36
docs/_docs/security.md
Normal file
36
docs/_docs/security.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: Security Policy
|
||||
permalink: "/docs/security/"
|
||||
note: This file is autogenerated. Edit /.github/SECURITY.markdown instead.
|
||||
---
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Security updates are applied to the latest MINOR version of Jekyll, and the version used by GitHub Pages, v3.9.x.
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 4.2.x | :white_check_mark: |
|
||||
| 3.9.x | :white_check_mark: |
|
||||
| < 3.9.x | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please report vulnerabilities by sending an email to security@jekyllrb.com with the following information:
|
||||
|
||||
1. A description of the vulnerability
|
||||
2. Reproduction steps and/or a sample site (share a private repo to the [Jekyll Security Team](docs/pages/team.md))
|
||||
3. Your contact information
|
||||
|
||||
The Jekyll security team will respond to your submission and notify you whether it has been confirmed by the team.
|
||||
Your confidentiality is kindly requested as we work on a fix. We will provide our patch to you to test and verify that the vulnerability has
|
||||
been closed.
|
||||
|
||||
If you have created a patch and would like to submit that to us as well, we will happily consider it though we cannot guarantee that we will
|
||||
use it. If we use your patch, we will attribute authorship to you either as the commit author, or as a co-author.
|
||||
|
||||
Once a fix is verified, we will release PATCH versions of the supported MINOR versions and assign a CVE to the vulnerability. You will receive
|
||||
credit in our release post.
|
||||
|
||||
Once the patched version has been released, we will no longer request you to maintain confidentiality and you may choose to share details on
|
||||
how you found the vulnerability with the community.
|
||||
@@ -4,59 +4,58 @@ title: Setup
|
||||
menu_name: Step by Step Tutorial
|
||||
position: 1
|
||||
---
|
||||
Welcome to Jekyll's step-by-step tutorial. The goal of this tutorial is to take
|
||||
you from having some front end web development experience to building your
|
||||
first Jekyll site from scratch — not relying on the default gem-based theme.
|
||||
Let's get into it!
|
||||
Welcome to Jekyll's step-by-step tutorial. This tutorial takes
|
||||
you from having some front-end web development experience to building your
|
||||
first Jekyll site from scratch without relying on the default gem-based theme.
|
||||
|
||||
## Installation
|
||||
|
||||
Jekyll is a Ruby program so you need to install Ruby on your machine to begin
|
||||
with. Head over to the [install guide](/docs/installation/) and follow the
|
||||
Jekyll is a Ruby gem. First, install Ruby on your machine.
|
||||
Go to [Installation]({{ '/docs/installation/' | relative_url }}) and follow the
|
||||
instructions for your operating system.
|
||||
|
||||
With Ruby setup you can install Jekyll by running the following in your
|
||||
terminal:
|
||||
With Ruby installed, install Jekyll from the terminal:
|
||||
|
||||
```sh
|
||||
gem install jekyll bundler
|
||||
```
|
||||
|
||||
To create a new `Gemfile` to list your project's dependencies run:
|
||||
Create a new `Gemfile` to list your project's dependencies:
|
||||
|
||||
```sh
|
||||
bundle init
|
||||
```
|
||||
|
||||
Now edit the `Gemfile` and add jekyll as a dependency:
|
||||
Edit the `Gemfile` in a text editor and add jekyll as a dependency:
|
||||
|
||||
```ruby
|
||||
gem "jekyll"
|
||||
```
|
||||
|
||||
Finally run `bundle` to install jekyll for your project.
|
||||
Run `bundle` to install jekyll for your project.
|
||||
|
||||
You can now prefix all jekyll commands listed in this tutorial with `bundle exec`
|
||||
to make sure you use the jekyll version defined in your `Gemfile`.
|
||||
|
||||
## Create a site
|
||||
|
||||
It's time to create a site! Create a new directory for your site, you can name
|
||||
it whatever you'd like. Through the rest of this tutorial we'll refer to this
|
||||
directory as “root”.
|
||||
It's time to create a site! Create a new directory for your site and name
|
||||
it whatever you want. Through the rest of this tutorial we'll refer to this
|
||||
directory as **root**.
|
||||
|
||||
You can also initialize a Git repository here.
|
||||
|
||||
If you're feeling adventurous, you can also initialize a Git repository here.
|
||||
One of the great things about Jekyll is there's no database. All content and
|
||||
site structure are files which a Git repository can version. Using a repository
|
||||
is completely optional but it's a great habit to get into. You can learn more
|
||||
about using Git by reading through the
|
||||
site structure are files that a Git repository can version. Using a repository
|
||||
is optional but is recommended. You can learn more
|
||||
about using Git by reading the
|
||||
[Git Handbook](https://guides.github.com/introduction/git-handbook/).
|
||||
|
||||
Let's add your first file. Create `index.html` in the root with the following
|
||||
Let's add your first file. Create `index.html` in **root** with the following
|
||||
content:
|
||||
|
||||
```html
|
||||
<!doctype html>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
@@ -70,22 +69,33 @@ content:
|
||||
|
||||
## Build
|
||||
|
||||
Jekyll is a static site generator so we need Jekyll to build the site
|
||||
before we can view it. There are two commands you can run in the root of your site
|
||||
to build it:
|
||||
Since Jekyll is a static site generator, it has to build the site
|
||||
before we can view it. Run either of the following commands to build your site:
|
||||
|
||||
* `jekyll build` - Builds the site and outputs a static site to a directory
|
||||
called `_site`.
|
||||
* `jekyll serve` - Does the same thing except it rebuilds any time you make
|
||||
a change and runs a local web server at `http://localhost:4000`.
|
||||
* `jekyll serve` - Does `jekyll build` and runs it on a local web server at `http://localhost:4000`, rebuilding the site any time you make a change.
|
||||
|
||||
{: .note .info}
|
||||
When you're developing a site, use `jekyll serve`. To force the browser to refresh with every change, use `jekyll serve --livereload`.
|
||||
If there's a conflict or you'd like Jekyll to serve your development site at a different URL, use the `--host` and `--port` arguments,
|
||||
as described in the [serve command options]({{ '/docs/configuration/options/#serve-command-options' | relative_url }}).
|
||||
|
||||
{: .note .warning}
|
||||
The version of the site that `jekyll serve` builds in `_site` is not suited for deployment. Links and asset URLs in sites created
|
||||
with `jekyll serve` will use `https://localhost:4000` or the value set with command-line configuration, instead of the values set
|
||||
in [your site's configuration file]({{ '/docs/configuration/' | relative_url }}). To learn about how to build your site when it's
|
||||
ready for deployment, read the [Deployment]({{ '/docs/step-by-step/10-deployment/' | relative_url }}) section of this tutorial.
|
||||
|
||||
When you're developing a site you'll use `jekyll serve` as it updates with any
|
||||
changes you make.
|
||||
|
||||
Run `jekyll serve` and go to
|
||||
<a href="http://localhost:4000" target="_blank" data-proofer-ignore>http://localhost:4000</a> in
|
||||
your browser. You should see "Hello World!".
|
||||
|
||||
Well, you might be thinking what's the point in this? Jekyll just copied an
|
||||
HTML file from one place to another. Well patience young grasshopper, there's
|
||||
At this point, you might be thinking, "So what?". The only thing that happened was that Jekyll copied an
|
||||
HTML file from one place to another.
|
||||
|
||||
Patience, young grasshopper, there's
|
||||
still much to learn!
|
||||
|
||||
Next. you'll learn about Liquid and templating.
|
||||
|
||||
@@ -3,28 +3,25 @@ layout: step
|
||||
title: Liquid
|
||||
position: 2
|
||||
---
|
||||
Liquid is where Jekyll starts to get more interesting. Liquid is a templating
|
||||
language which has three main parts: [objects](#objects), [tags](#tags) and
|
||||
[filters](#filters).
|
||||
Liquid is where Jekyll starts to get more interesting. It is a templating
|
||||
language which has three main components:
|
||||
* [objects](#objects)
|
||||
* [tags](#tags)
|
||||
* [filters](#filters)
|
||||
|
||||
## Objects
|
||||
|
||||
Objects tell Liquid where to output content. They're denoted by double curly
|
||||
braces: {% raw %}`{{`{% endraw %} and {% raw %}`}}`{% endraw %}. For example:
|
||||
Objects tell Liquid to output predefined [variables](../../variables/) as content on a page. Use double curly braces for objects: {% raw %}`{{`{% endraw %} and {% raw %}`}}`{% endraw %}.
|
||||
|
||||
{% raw %}
|
||||
```liquid
|
||||
{{ page.title }}
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
Outputs a variable called `page.title` on the page.
|
||||
For example, {% raw %}`{{ page.title }}`{% endraw %} displays the `page.title` variable.
|
||||
|
||||
## Tags
|
||||
|
||||
Tags create the logic and control flow for templates. They are denoted by curly
|
||||
braces and percent signs: {% raw %}`{%`{% endraw %} and
|
||||
{% raw %}`%}`{% endraw %}. For example:
|
||||
Tags define the logic and control flow for templates. Use curly
|
||||
braces and percent signs for tags: {% raw %}`{%`{% endraw %} and
|
||||
{% raw %}`%}`{% endraw %}.
|
||||
|
||||
For example:
|
||||
|
||||
{% raw %}
|
||||
```liquid
|
||||
@@ -36,13 +33,16 @@ braces and percent signs: {% raw %}`{%`{% endraw %} and
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
Outputs the sidebar if `page.show_sidebar` is true. You can learn more about the
|
||||
tags available to Jekyll [here](/docs/liquid/tags/).
|
||||
This displays the sidebar if the value of the `show_sidebar` page variable is true.
|
||||
|
||||
Learn more about the tags available in Jekyll [here](/docs/liquid/tags/).
|
||||
|
||||
## Filters
|
||||
|
||||
Filters change the output of a Liquid object. They are used within an output
|
||||
and are separated by a `|`. For example:
|
||||
and are separated by a `|`.
|
||||
|
||||
For example:
|
||||
|
||||
{% raw %}
|
||||
```liquid
|
||||
@@ -50,12 +50,13 @@ and are separated by a `|`. For example:
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
Outputs `Hi`. You can learn more about the filters available to Jekyll
|
||||
[here](/docs/liquid/filters/).
|
||||
This displays `Hi` instead of `hi`.
|
||||
|
||||
[Learn more about the filters](/docs/liquid/filters/) available.
|
||||
|
||||
## Use Liquid
|
||||
|
||||
Now it's your turn, change the Hello World! on your page to output as lowercase:
|
||||
Now, use Liquid to make your `Hello World!` text from [Setup](../01-setup/) lowercase:
|
||||
|
||||
{% raw %}
|
||||
```liquid
|
||||
@@ -65,7 +66,7 @@ Now it's your turn, change the Hello World! on your page to output as lowercase:
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
To get our changes processed by Jekyll we need to add [front matter](../03-front-matter/) to the top of the page:
|
||||
To make Jekyll process your changes, add [front matter](../03-front-matter/) to the top of the page:
|
||||
|
||||
```yaml
|
||||
---
|
||||
@@ -73,11 +74,28 @@ To get our changes processed by Jekyll we need to add [front matter](../03-front
|
||||
---
|
||||
```
|
||||
|
||||
Our "Hello World!" will now be downcased on render.
|
||||
Your HTML document should look like this:
|
||||
|
||||
It may not seem like it now, but much of Jekyll's power comes from combining
|
||||
Liquid with other features.
|
||||
{% raw %}
|
||||
```html
|
||||
---
|
||||
---
|
||||
|
||||
In order to see the changes from `downcase` Liquid filter, we will need to add front matter.
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Home</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>{{ "Hello World!" | downcase }}</h1>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
That's next. Let's keep going.
|
||||
When you reload your browser, you should see `hello world!`.
|
||||
|
||||
Much of Jekyll's power comes from combining Liquid with other features. Add frontmatter to pages to make Jekyll process the Liquid on those pages.
|
||||
|
||||
Next, you'll learn more about frontmatter.
|
||||
|
||||
@@ -3,9 +3,10 @@ layout: step
|
||||
title: Front Matter
|
||||
position: 3
|
||||
---
|
||||
Front matter is a snippet of [YAML](http://yaml.org/) which sits between two
|
||||
triple-dashed lines at the top of a file. Front matter is used to set variables
|
||||
for the page, for example:
|
||||
Front matter is a snippet of [YAML](http://yaml.org/) placed between two
|
||||
triple-dashed lines at the start of a file.
|
||||
|
||||
You can use front matter to set variables for the page:
|
||||
|
||||
```yaml
|
||||
---
|
||||
@@ -13,8 +14,8 @@ my_number: 5
|
||||
---
|
||||
```
|
||||
|
||||
Front matter variables are available in Liquid under the `page` variable. For
|
||||
example to output the variable above you would use:
|
||||
You can call front matter variables in Liquid using the `page` variable. For
|
||||
example, to output the value of the `my_number` variable above:
|
||||
|
||||
{% raw %}
|
||||
```liquid
|
||||
@@ -24,7 +25,7 @@ example to output the variable above you would use:
|
||||
|
||||
## Use front matter
|
||||
|
||||
Let's change the `<title>` on your site to populate using front matter:
|
||||
Change the `<title>` on your site to use front matter:
|
||||
|
||||
{% raw %}
|
||||
```liquid
|
||||
@@ -44,15 +45,14 @@ title: Home
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
Note that in order for Jekyll to process any liquid tags on your page,
|
||||
you _must_ include front matter on it. The most minimal snippet of front matter
|
||||
you can include is:
|
||||
{: .note .info }
|
||||
You _must_ include front matter on the page for Jekyll to process any Liquid tags on it.
|
||||
|
||||
To make Jekyll process a page without defining variables in the front matter, use:
|
||||
|
||||
```yaml
|
||||
---
|
||||
---
|
||||
```
|
||||
|
||||
You may still be wondering why you'd output it this way as it takes
|
||||
more source code than raw HTML. In this next step, you'll see why we've
|
||||
been doing this.
|
||||
Next, you'll learn more about layouts and why your pages use more source code than plain HTML.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user