"**/emojis.md",
"**/commands/*",
"**/showcase/*",
- "**/tools/*"
+ "**/tools/*",
+ "data/docs.yaml"
],
"ignoreRegExpList": [
"# cspell: ignore fenced code blocks",
"marshal",
"marshaling",
"multihost",
- "multiplatfom",
+ "multiplatform",
"performantly",
"preconfigured",
"prerendering",
"redirection",
"redirections",
+ "slugified",
+ "slugify",
"subexpression",
"suppressible",
"synchronisation",
"libros",
"mercredi",
"miesiąc",
- "miesiąc",
"miesiąca",
"miesiące",
"miesięcy",
"Samsa",
"Stucki",
"Thénardier",
+ "Vitter",
"WASI",
"# ----------------------------------------------------------------------",
"# cspell: ignore operating systems and software packages",
full: true
inline: true
shortcut: true
- url_inline: true
+ url_inline: false
MD055:
style: consistent
MD056: true
+++ /dev/null
-**/news/**
-**/showcase/**
-**/zh/**
\ No newline at end of file
text-decoration: none;
padding-left: .0625em;
}
+
+/* Code spans within paragraphs, tables cells, list items, etc. */
+:not(pre) > code {
+ white-space: nowrap;
+}
+++ /dev/null
-<svg viewBox="0 0 363 80" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path fill-rule="evenodd" clip-rule="evenodd" d="M29.0705 42.8838C29.425 43.0864 29.8049 43.289 30.1847 43.4663C33.0209 44.783 34.3376 45.644 34.3376 47.4672C34.3376 49.4171 32.7423 51.0124 30.7925 51.0124C29.2731 51.0124 28.007 50.0502 27.5005 48.7081C25.6519 50.5819 23.1197 51.7468 20.2835 51.7468C14.6872 51.7468 10.1544 47.214 10.1544 41.6177C10.1544 41.0859 10.2304 40.5541 10.3064 40.0224C5.1152 38.503 1.1142 34.1728 0.202582 28.7537C0.0759682 27.9687 0 27.1837 0 26.3734C0 25.5631 0.0759682 24.7781 0.202582 23.9931C1.13952 18.5993 5.1152 14.2438 10.3064 12.7244C10.3032 12.7022 10.3 12.6801 10.2968 12.658C10.2242 12.1503 10.1544 11.6629 10.1544 11.1291C10.1544 5.53277 14.6872 1 20.2835 1C23.0943 1 25.6519 2.16485 27.5005 4.03873C28.007 2.69662 29.2731 1.73436 30.7925 1.73436C32.7423 1.73436 34.3376 3.32969 34.3376 5.27954C34.3376 7.25472 33.0209 8.11569 30.1847 9.43248C29.9037 9.5636 29.6366 9.70858 29.3628 9.85717C29.2665 9.90945 29.1694 9.96218 29.0705 10.0149H29.0704C28.8426 10.1415 28.6147 10.2681 28.4121 10.3947C28.2349 10.496 28.0829 10.5973 27.931 10.6986C27.8803 10.7239 27.836 10.7556 27.7917 10.7872C27.7474 10.8189 27.7031 10.8505 27.6524 10.8759C26.7915 11.433 26.0065 12.0914 25.2468 12.7751C25.2215 12.7877 25.2025 12.8067 25.1835 12.8257C25.1645 12.8447 25.1455 12.8637 25.1202 12.8764C24.8163 13.1802 24.5124 13.4841 24.2339 13.788C24.1959 13.826 24.1579 13.8703 24.1199 13.9146C24.0819 13.9589 24.0439 14.0032 24.006 14.0412C23.8864 14.1907 23.7629 14.3363 23.6401 14.481C23.4508 14.704 23.2633 14.9251 23.0943 15.1554C20.7393 18.2954 19.2959 22.2205 19.2959 26.4494C19.2959 30.6783 20.714 34.6033 23.0943 37.7433C23.3729 38.1231 23.6768 38.503 24.006 38.8575C24.0439 38.8955 24.0819 38.9398 24.1199 38.9841C24.1579 39.0284 24.1959 39.0728 24.2339 39.1107C24.4424 39.3572 24.6652 39.5753 24.8915 39.7969C24.9674 39.8712 25.0438 39.946 25.1202 40.0224C25.1455 40.035 25.1645 40.054 25.1835 40.073C25.2025 40.092 25.2215 40.111 25.2468 40.1236C26.0065 40.8074 26.7915 41.4658 27.6524 42.0229C27.7031 42.0482 27.7474 42.0798 27.7917 42.1115C27.836 42.1431 27.8803 42.1748 27.931 42.2001C28.007 42.2508 28.0893 42.3014 28.1716 42.3521C28.2539 42.4027 28.3362 42.4533 28.4121 42.504C28.5261 42.5673 28.6337 42.6306 28.7414 42.6939C28.849 42.7572 28.9566 42.8205 29.0705 42.8838ZM64.2693 12.826C69.4604 14.3453 73.4614 18.6755 74.3731 24.0946C74.4997 24.8543 74.5756 25.6646 74.5756 26.6269C74.5756 27.4372 74.4997 28.2222 74.3731 29.0072C73.4361 34.4009 69.4604 38.7565 64.2693 40.2758L64.2788 40.3423C64.3515 40.85 64.4212 41.3373 64.4212 41.8712C64.4212 47.4675 59.8884 52.0003 54.2921 52.0003C51.4813 52.0003 48.9237 50.8354 47.0751 48.9615C46.5687 50.3036 45.3025 51.2659 43.7832 51.2659C41.8333 51.2659 40.238 49.6706 40.238 47.7207C40.238 45.7455 41.5548 44.8846 44.3909 43.5678C44.6719 43.4367 44.939 43.2917 45.2128 43.1431C45.3091 43.0908 45.4063 43.0381 45.5051 42.9854C45.733 42.8587 45.9609 42.7321 46.1635 42.6055C46.3407 42.5042 46.4926 42.403 46.6445 42.3017L46.6446 42.3016C46.6953 42.2763 46.7396 42.2447 46.7839 42.213C46.8282 42.1814 46.8725 42.1497 46.9232 42.1244C47.7842 41.5673 48.5692 40.9089 49.3289 40.2252C49.3542 40.2125 49.3732 40.1935 49.3922 40.1745C49.4112 40.1555 49.4301 40.1365 49.4555 40.1239C49.7593 39.82 50.0632 39.5161 50.3418 39.2123C50.3797 39.1743 50.4177 39.13 50.4557 39.0856C50.4937 39.0413 50.5317 38.997 50.5697 38.959C50.6893 38.8096 50.8128 38.664 50.9356 38.5193C51.1248 38.2962 51.3124 38.0752 51.4813 37.8448C53.8363 34.7048 55.2797 30.7798 55.2797 26.5509C55.2797 22.322 53.8616 18.397 51.4813 15.257C51.2027 14.8771 50.8989 14.4973 50.5697 14.1428C50.5317 14.1048 50.4937 14.0605 50.4557 14.0161C50.4177 13.9718 50.3797 13.9275 50.3418 13.8895C50.0632 13.5603 49.7593 13.2565 49.4555 12.9779C49.4301 12.9652 49.4112 12.9463 49.3922 12.9273C49.3732 12.9083 49.3542 12.8893 49.3289 12.8766C48.5692 12.1929 47.7842 11.5598 46.9232 10.9774C46.8726 10.9521 46.8282 10.9204 46.7839 10.8888C46.7396 10.8571 46.6953 10.8255 46.6446 10.8001C46.5687 10.7495 46.4864 10.6988 46.4041 10.6482C46.3218 10.5976 46.2395 10.5469 46.1635 10.4963C46.0496 10.433 45.9419 10.3697 45.8343 10.3064C45.7267 10.243 45.6191 10.1797 45.5051 10.1164C45.1506 9.91385 44.7708 9.71127 44.3909 9.53401C41.5801 8.19191 40.238 7.33093 40.238 5.38108C40.238 3.43123 41.8333 1.8359 43.7832 1.8359C45.3025 1.8359 46.5687 2.79816 47.0751 4.14027C48.9237 2.26638 51.456 1.10154 54.2921 1.10154C59.8884 1.10154 64.4212 5.63431 64.4212 11.2306C64.4212 11.7624 64.3452 12.2942 64.2693 12.826Z" fill="#034AD8"/>
-<path d="M48.3405 26.475C48.3405 20.3723 43.4025 15.4343 37.2998 15.4343C31.197 15.4343 26.259 20.3723 26.259 26.475C26.259 32.5778 31.197 37.5158 37.2998 37.5158C43.4025 37.5158 48.3405 32.5778 48.3405 26.475Z" fill="#034AD8"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M119.934 36.2635V0.832581H113.425V36.2635H119.934ZM98.4922 36.9973C101.494 36.9973 103.973 36.198 105.931 34.5994C107.888 33.0007 109.161 31.0922 109.748 28.8736L104.022 26.9651C103.696 28.0743 103.076 29.0286 102.162 29.8279C101.249 30.6272 100.026 31.0269 98.4922 31.0269C96.763 31.0269 95.303 30.4152 94.1122 29.1917C92.9214 27.9683 92.326 26.3126 92.326 24.2246C92.326 22.1366 92.9133 20.489 94.0878 19.2819C95.2623 18.0747 96.7141 17.4712 98.4432 17.4712C101.216 17.4712 102.994 18.8251 103.777 21.533L109.601 19.5755C109.046 17.3243 107.79 15.4076 105.833 13.8253C103.875 12.243 101.363 11.4518 98.2964 11.4518C94.7729 11.4518 91.8122 12.6589 89.4142 15.0732C87.0163 17.4875 85.8173 20.5379 85.8173 24.2246C85.8173 27.8786 87.0326 30.9209 89.4631 33.3514C91.8937 35.782 94.9034 36.9973 98.4922 36.9973ZM145.097 33.3759C142.699 35.7902 139.689 36.9973 136.068 36.9973C132.446 36.9973 129.437 35.7902 127.039 33.3759C124.641 30.9617 123.442 27.9112 123.442 24.2246C123.442 20.5379 124.633 17.4875 127.014 15.0732C129.429 12.6589 132.446 11.4518 136.068 11.4518C139.689 11.4518 142.699 12.6589 145.097 15.0732C147.495 17.4875 148.694 20.5379 148.694 24.2246C148.694 27.9112 147.495 30.9617 145.097 33.3759ZM136.069 31.0758C134.373 31.0758 132.921 30.4722 131.714 29.2651C130.539 28.058 129.952 26.3778 129.952 24.2245C129.952 22.0713 130.547 20.3911 131.738 19.1839C132.929 17.9768 134.373 17.3732 136.069 17.3732C137.766 17.3732 139.209 17.9768 140.4 19.1839C141.591 20.3911 142.186 22.0713 142.186 24.2245C142.186 26.3778 141.591 28.058 140.4 29.2651C139.209 30.4722 137.766 31.0758 136.069 31.0758ZM164.901 36.0919C163.677 36.6302 162.381 36.8994 161.01 36.8994C158.172 36.8994 155.937 35.9941 154.306 34.1834C152.675 32.3727 151.859 30.1134 151.859 27.4055V12.1859H158.368V26.0842C158.368 27.5197 158.743 28.686 159.493 29.5832C160.244 30.4804 161.337 30.929 162.772 30.929C164.175 30.929 165.284 30.4967 166.1 29.6321C166.915 28.7676 167.323 27.6175 167.323 26.182V12.1859H173.832V31.9078C173.832 33.4411 173.914 34.893 174.077 36.2632H167.862C167.731 35.6107 167.666 34.7461 167.666 33.6695C167.046 34.7461 166.124 35.5536 164.901 36.0919ZM189.5 36.8507C191.066 36.8507 192.444 36.5408 193.635 35.9209C194.826 35.301 195.698 34.4854 196.253 33.474C196.253 34.518 196.335 35.4479 196.498 36.2635H202.713C202.582 34.9585 202.517 33.5067 202.517 31.908V0.832581H196.106V14.5841C195.03 12.5939 192.762 11.5989 189.304 11.5989C185.943 11.5989 183.178 12.806 181.009 15.2203C178.839 17.6345 177.755 20.6197 177.755 24.1759C177.755 27.8299 178.856 30.8559 181.058 33.2538C183.26 35.6518 186.074 36.8507 189.5 36.8507ZM185.977 29.1919C187.086 30.4154 188.522 31.0271 190.283 31.0271C192.013 31.0271 193.432 30.4072 194.541 29.1674C195.65 27.9277 196.205 26.2475 196.205 24.1269C196.205 22.0388 195.65 20.3994 194.541 19.2086C193.432 18.0178 192.013 17.4224 190.283 17.4224C188.554 17.4224 187.127 18.026 186.001 19.2331C184.876 20.4402 184.313 22.0878 184.313 24.1758C184.313 26.2964 184.868 27.9685 185.977 29.1919ZM218.798 36.9973C221.8 36.9973 224.279 36.198 226.237 34.5994C228.194 33.0007 229.466 31.0922 230.054 28.8736L224.328 26.9651C224.002 28.0743 223.382 29.0286 222.468 29.8279C221.555 30.6272 220.331 31.0269 218.798 31.0269C217.069 31.0269 215.609 30.4152 214.418 29.1917C213.227 27.9683 212.632 26.3126 212.632 24.2246C212.632 22.1366 213.219 20.489 214.394 19.2819C215.568 18.0747 217.02 17.4712 218.749 17.4712C221.522 17.4712 223.3 18.8251 224.083 21.533L229.907 19.5755C229.352 17.3243 228.096 15.4076 226.139 13.8253C224.181 12.243 221.669 11.4518 218.602 11.4518C215.079 11.4518 212.118 12.6589 209.72 15.0732C207.322 17.4875 206.123 20.5379 206.123 24.2246C206.123 27.8786 207.338 30.9209 209.769 33.3514C212.2 35.782 215.209 36.9973 218.798 36.9973ZM248.562 33.3759C247.028 35.7575 244.663 36.9483 241.466 36.9483C238.986 36.9483 236.988 36.2306 235.471 34.7951C233.954 33.3595 233.195 31.663 233.195 29.7055C233.195 27.6501 233.864 26.0026 235.202 24.7628C236.539 23.5231 238.268 22.7401 240.389 22.4138L246.311 21.5329C247.518 21.3698 248.121 20.7989 248.121 19.8201C248.121 18.9066 247.77 18.1562 247.069 17.569C246.368 16.9817 245.364 16.6881 244.059 16.6881C242.689 16.6881 241.604 17.0633 240.805 17.8137C240.006 18.564 239.557 19.4939 239.459 20.6031L233.685 19.3797C233.913 17.2917 234.941 15.4483 236.768 13.8497C238.595 12.2511 241.009 11.4518 244.01 11.4518C247.599 11.4518 250.242 12.3082 251.938 14.021C253.635 15.7338 254.483 17.9279 254.483 20.6031V32.446C254.483 33.8815 254.581 35.1539 254.777 36.2632H248.806C248.643 35.5454 248.562 34.583 248.562 33.3759ZM242.836 32.1037C241.857 32.1037 241.09 31.8346 240.536 31.2963C239.981 30.7579 239.704 30.0973 239.704 29.3143C239.704 27.5851 240.699 26.5738 242.689 26.2801L248.121 25.4482V26.5248C248.121 28.515 247.624 29.9423 246.629 30.8069C245.633 31.6714 244.369 32.1037 242.836 32.1037ZM265.918 22.4142V36.2636H259.41V12.1863H265.723V15.1715C266.408 13.9969 267.386 13.0998 268.659 12.4799C269.931 11.86 271.269 11.5501 272.672 11.5501C275.51 11.5501 277.672 12.4391 279.156 14.2172C280.64 15.9952 281.383 18.2872 281.383 21.0929V36.2636H274.874V22.2185C274.874 20.783 274.507 19.6248 273.773 18.7439C273.039 17.863 271.921 17.4226 270.421 17.4226C269.05 17.4226 267.957 17.8957 267.142 18.8418C266.326 19.7879 265.918 20.9787 265.918 22.4142ZM292.866 36.2636V22.4142C292.866 20.9787 293.274 19.7879 294.09 18.8418C294.905 17.8957 295.998 17.4226 297.368 17.4226C298.869 17.4226 299.987 17.863 300.721 18.7439C301.455 19.6248 301.822 20.783 301.822 22.2185V36.2636H308.33V21.0929C308.33 18.2872 307.588 15.9952 306.104 14.2172C304.619 12.4391 302.458 11.5501 299.619 11.5501C298.217 11.5501 296.879 11.86 295.607 12.4799C294.334 13.0998 293.355 13.9969 292.67 15.1715V12.1863H286.357V36.2636H292.866ZM333.149 33.3759C330.751 35.7901 327.742 36.9972 324.12 36.9972C320.499 36.9972 317.489 35.7901 315.091 33.3759C312.693 30.9616 311.494 27.9111 311.494 24.2245C311.494 20.5379 312.685 17.4874 315.067 15.0731C317.481 12.6589 320.499 11.4518 324.12 11.4518C327.742 11.4518 330.751 12.6589 333.149 15.0731C335.547 17.4874 336.746 20.5379 336.746 24.2245C336.746 27.9111 335.547 30.9616 333.149 33.3759ZM324.121 31.0757C322.425 31.0757 320.973 30.4722 319.766 29.265C318.591 28.0579 318.004 26.3777 318.004 24.2245C318.004 22.0712 318.6 20.391 319.79 19.1839C320.981 17.9767 322.425 17.3732 324.121 17.3732C325.818 17.3732 327.262 17.9767 328.452 19.1839C329.643 20.391 330.239 22.0712 330.239 24.2245C330.239 26.3777 329.643 28.0579 328.452 29.265C327.262 30.4722 325.818 31.0757 324.121 31.0757ZM346.762 22.4142V36.2636H340.254V12.1863H346.567V15.1715C347.252 13.9969 348.23 13.0998 349.503 12.4799C350.775 11.86 352.113 11.5501 353.516 11.5501C356.354 11.5501 358.515 12.4391 360 14.2172C361.484 15.9952 362.227 18.2872 362.227 21.0929V36.2636H355.718V22.2185C355.718 20.783 355.351 19.6248 354.617 18.7439C353.883 17.863 352.765 17.4226 351.265 17.4226C349.894 17.4226 348.801 17.8957 347.986 18.8418C347.17 19.7879 346.762 20.9787 346.762 22.4142Z" fill="#034AD8"/>
-<path d="M313.211 64.2638C318.224 64.2638 320.862 60.5706 320.862 60.5706L319.015 58.724C319.015 58.724 317.037 61.6258 313.211 61.6258C309.386 61.6258 306.353 58.5921 306.353 54.767C306.353 50.9419 309.386 47.9082 313.211 47.9082C317.037 47.9082 318.883 50.6781 318.883 50.6781L320.73 48.8315C320.73 48.8315 318.224 45.2702 313.211 45.2702C307.672 45.2702 303.451 49.491 303.451 54.767C303.451 60.043 307.672 64.2638 313.211 64.2638ZM324.294 64H327.196V50.4143L333.923 58.9878L340.65 50.4143V64H343.552V45.534H340.914L333.923 54.5032L326.932 45.534H324.294V64ZM353.568 64.2638C357.657 64.2638 360.163 61.7577 360.163 58.8559C360.163 51.9971 350.402 54.5032 350.402 50.4143C350.402 49.0953 351.589 47.9082 353.832 47.9082C356.338 47.9082 357.657 49.6229 357.657 49.6229L359.635 47.6444C359.635 47.6444 357.657 45.2702 353.832 45.2702C349.875 45.2702 347.5 47.6444 347.5 50.4143C347.5 57.2731 357.261 54.767 357.261 58.8559C357.261 60.3068 355.942 61.6258 353.568 61.6258C350.402 61.6258 348.951 59.5154 348.951 59.5154L346.973 61.4939C346.973 61.4939 349.083 64.2638 353.568 64.2638Z" fill="#034AD8"/>
-</svg>
--- /dev/null
+<svg height="100%" width="100%" viewBox="0 0 363 80" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_5258_169)">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M29.0705 42.8838C29.425 43.0864 29.8049 43.289 30.1847 43.4663C33.0209 44.783 34.3376 45.644 34.3376 47.4672C34.3376 49.4171 32.7423 51.0124 30.7925 51.0124C29.2731 51.0124 28.007 50.0502 27.5005 48.7081C25.6519 50.5819 23.1197 51.7468 20.2835 51.7468C14.6872 51.7468 10.1544 47.214 10.1544 41.6177C10.1544 41.0859 10.2304 40.5541 10.3064 40.0224C5.1152 38.503 1.1142 34.1728 0.202582 28.7537C0.0759682 27.9687 0 27.1837 0 26.3734C0 25.5631 0.0759682 24.7781 0.202582 23.9931C1.13952 18.5993 5.1152 14.2438 10.3064 12.7244C10.3032 12.7022 10.3 12.6801 10.2968 12.658C10.2242 12.1503 10.1544 11.6629 10.1544 11.1291C10.1544 5.53277 14.6872 1 20.2835 1C23.0943 1 25.6519 2.16485 27.5005 4.03873C28.007 2.69662 29.2731 1.73436 30.7925 1.73436C32.7423 1.73436 34.3376 3.32969 34.3376 5.27954C34.3376 7.25472 33.0209 8.11569 30.1847 9.43248C29.9037 9.5636 29.6366 9.70858 29.3628 9.85717C29.2665 9.90945 29.1694 9.96218 29.0705 10.0149H29.0704C28.8426 10.1415 28.6147 10.2681 28.4121 10.3947C28.2349 10.496 28.0829 10.5973 27.931 10.6986C27.8803 10.7239 27.836 10.7556 27.7917 10.7872C27.7474 10.8189 27.7031 10.8505 27.6524 10.8759C26.7915 11.433 26.0065 12.0914 25.2468 12.7751C25.2215 12.7877 25.2025 12.8067 25.1835 12.8257C25.1645 12.8447 25.1455 12.8637 25.1202 12.8764C24.8163 13.1802 24.5124 13.4841 24.2339 13.788C24.1959 13.826 24.1579 13.8703 24.1199 13.9146C24.0819 13.9589 24.0439 14.0032 24.006 14.0412C23.8864 14.1907 23.7629 14.3363 23.6401 14.481C23.4508 14.704 23.2633 14.9251 23.0943 15.1554C20.7393 18.2954 19.2959 22.2205 19.2959 26.4494C19.2959 30.6783 20.714 34.6033 23.0943 37.7433C23.3729 38.1231 23.6768 38.503 24.006 38.8575C24.0439 38.8955 24.0819 38.9398 24.1199 38.9841C24.1579 39.0284 24.1959 39.0728 24.2339 39.1107C24.4424 39.3572 24.6652 39.5753 24.8915 39.7969C24.9674 39.8712 25.0438 39.946 25.1202 40.0224C25.1455 40.035 25.1645 40.054 25.1835 40.073C25.2025 40.092 25.2215 40.111 25.2468 40.1236C26.0065 40.8074 26.7915 41.4658 27.6524 42.0229C27.7031 42.0482 27.7474 42.0798 27.7917 42.1115C27.836 42.1431 27.8803 42.1748 27.931 42.2001C28.007 42.2508 28.0893 42.3014 28.1716 42.3521C28.2539 42.4027 28.3362 42.4533 28.4121 42.504C28.5261 42.5673 28.6337 42.6306 28.7414 42.6939C28.849 42.7572 28.9566 42.8205 29.0705 42.8838ZM64.2693 12.826C69.4604 14.3453 73.4614 18.6755 74.3731 24.0946C74.4997 24.8543 74.5756 25.6646 74.5756 26.6269C74.5756 27.4372 74.4997 28.2222 74.3731 29.0072C73.4361 34.4009 69.4604 38.7565 64.2693 40.2758L64.2788 40.3423C64.3515 40.85 64.4212 41.3373 64.4212 41.8712C64.4212 47.4675 59.8884 52.0003 54.2921 52.0003C51.4813 52.0003 48.9237 50.8354 47.0751 48.9615C46.5687 50.3036 45.3025 51.2659 43.7832 51.2659C41.8333 51.2659 40.238 49.6706 40.238 47.7207C40.238 45.7455 41.5548 44.8846 44.3909 43.5678C44.6719 43.4367 44.939 43.2917 45.2128 43.1431C45.3091 43.0908 45.4063 43.0381 45.5051 42.9854C45.733 42.8587 45.9609 42.7321 46.1635 42.6055C46.3407 42.5042 46.4926 42.403 46.6445 42.3017L46.6446 42.3016C46.6953 42.2763 46.7396 42.2447 46.7839 42.213C46.8282 42.1814 46.8725 42.1497 46.9232 42.1244C47.7842 41.5673 48.5692 40.9089 49.3289 40.2252C49.3542 40.2125 49.3732 40.1935 49.3922 40.1745C49.4112 40.1555 49.4301 40.1365 49.4555 40.1239C49.7593 39.82 50.0632 39.5161 50.3418 39.2123C50.3797 39.1743 50.4177 39.13 50.4557 39.0856C50.4937 39.0413 50.5317 38.997 50.5697 38.959C50.6893 38.8096 50.8128 38.664 50.9356 38.5193C51.1248 38.2962 51.3124 38.0752 51.4813 37.8448C53.8363 34.7048 55.2797 30.7798 55.2797 26.5509C55.2797 22.322 53.8616 18.397 51.4813 15.257C51.2027 14.8771 50.8989 14.4973 50.5697 14.1428C50.5317 14.1048 50.4937 14.0605 50.4557 14.0161C50.4177 13.9718 50.3797 13.9275 50.3418 13.8895C50.0632 13.5603 49.7593 13.2565 49.4555 12.9779C49.4301 12.9652 49.4112 12.9463 49.3922 12.9273C49.3732 12.9083 49.3542 12.8893 49.3289 12.8766C48.5692 12.1929 47.7842 11.5598 46.9232 10.9774C46.8726 10.9521 46.8282 10.9204 46.7839 10.8888C46.7396 10.8571 46.6953 10.8255 46.6446 10.8001C46.5687 10.7495 46.4864 10.6988 46.4041 10.6482C46.3218 10.5976 46.2395 10.5469 46.1635 10.4963C46.0496 10.433 45.9419 10.3697 45.8343 10.3064C45.7267 10.243 45.6191 10.1797 45.5051 10.1164C45.1506 9.91385 44.7708 9.71127 44.3909 9.53401C41.5801 8.19191 40.238 7.33093 40.238 5.38108C40.238 3.43123 41.8333 1.8359 43.7832 1.8359C45.3025 1.8359 46.5687 2.79816 47.0751 4.14027C48.9237 2.26638 51.456 1.10154 54.2921 1.10154C59.8884 1.10154 64.4212 5.63431 64.4212 11.2306C64.4212 11.7624 64.3452 12.2942 64.2693 12.826Z" fill="#034AD8"/>
+<path d="M48.3405 26.475C48.3405 20.3723 43.4025 15.4343 37.2998 15.4343C31.197 15.4343 26.259 20.3723 26.259 26.475C26.259 32.5778 31.197 37.5158 37.2998 37.5158C43.4025 37.5158 48.3405 32.5778 48.3405 26.475Z" fill="#034AD8"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M119.934 36.2634V0.83252H113.425V36.2634H119.934ZM98.4922 36.9972C101.494 36.9972 103.973 36.1979 105.931 34.5993C107.888 33.0006 109.161 31.0921 109.748 28.8735L104.022 26.965C103.696 28.0742 103.076 29.0285 102.162 29.8278C101.249 30.6271 100.026 31.0268 98.4922 31.0268C96.763 31.0268 95.303 30.4151 94.1122 29.1916C92.9214 27.9682 92.326 26.3125 92.326 24.2245C92.326 22.1365 92.9133 20.4889 94.0878 19.2818C95.2623 18.0746 96.7141 17.4711 98.4432 17.4711C101.216 17.4711 102.994 18.825 103.777 21.5329L109.601 19.5754C109.046 17.3242 107.79 15.4075 105.833 13.8252C103.875 12.2429 101.363 11.4517 98.2964 11.4517C94.7729 11.4517 91.8122 12.6588 89.4142 15.0731C87.0163 17.4874 85.8173 20.5378 85.8173 24.2245C85.8173 27.8785 87.0326 30.9208 89.4631 33.3513C91.8937 35.7819 94.9034 36.9972 98.4922 36.9972ZM145.097 33.3758C142.699 35.7901 139.689 36.9972 136.068 36.9972C132.446 36.9972 129.437 35.7901 127.039 33.3758C124.641 30.9616 123.442 27.9111 123.442 24.2245C123.442 20.5378 124.633 17.4874 127.014 15.0731C129.429 12.6588 132.446 11.4517 136.068 11.4517C139.689 11.4517 142.699 12.6588 145.097 15.0731C147.495 17.4874 148.694 20.5378 148.694 24.2245C148.694 27.9111 147.495 30.9616 145.097 33.3758ZM136.069 31.0757C134.373 31.0757 132.921 30.4721 131.714 29.265C130.539 28.0579 129.952 26.3777 129.952 24.2244C129.952 22.0712 130.547 20.391 131.738 19.1838C132.929 17.9767 134.373 17.3731 136.069 17.3731C137.766 17.3731 139.209 17.9767 140.4 19.1838C141.591 20.391 142.186 22.0712 142.186 24.2244C142.186 26.3777 141.591 28.0579 140.4 29.265C139.209 30.4721 137.766 31.0757 136.069 31.0757ZM164.901 36.0918C163.677 36.6301 162.381 36.8993 161.01 36.8993C158.172 36.8993 155.937 35.994 154.306 34.1833C152.675 32.3726 151.859 30.1133 151.859 27.4054V12.1858H158.368V26.0841C158.368 27.5196 158.743 28.6859 159.493 29.5831C160.244 30.4803 161.337 30.9289 162.772 30.9289C164.175 30.9289 165.284 30.4966 166.1 29.632C166.915 28.7675 167.323 27.6174 167.323 26.1819V12.1858H173.832V31.9077C173.832 33.441 173.914 34.8929 174.077 36.2631H167.862C167.731 35.6106 167.666 34.746 167.666 33.6694C167.046 34.746 166.124 35.5535 164.901 36.0918ZM189.5 36.8506C191.066 36.8506 192.444 36.5407 193.635 35.9208C194.826 35.3009 195.698 34.4853 196.253 33.4739C196.253 34.5179 196.335 35.4478 196.498 36.2634H202.713C202.582 34.9584 202.517 33.5066 202.517 31.9079V0.83252H196.106V14.584C195.03 12.5938 192.762 11.5988 189.304 11.5988C185.943 11.5988 183.178 12.8059 181.009 15.2202C178.839 17.6344 177.755 20.6196 177.755 24.1758C177.755 27.8298 178.856 30.8558 181.058 33.2537C183.26 35.6517 186.074 36.8506 189.5 36.8506ZM185.977 29.1918C187.086 30.4153 188.522 31.027 190.283 31.027C192.013 31.027 193.432 30.4071 194.541 29.1673C195.65 27.9276 196.205 26.2474 196.205 24.1268C196.205 22.0387 195.65 20.3993 194.541 19.2085C193.432 18.0177 192.013 17.4223 190.283 17.4223C188.554 17.4223 187.127 18.0259 186.001 19.233C184.876 20.4401 184.313 22.0877 184.313 24.1757C184.313 26.2963 184.868 27.9684 185.977 29.1918ZM218.798 36.9972C221.8 36.9972 224.279 36.1979 226.237 34.5993C228.194 33.0006 229.466 31.0921 230.054 28.8735L224.328 26.965C224.002 28.0742 223.382 29.0285 222.468 29.8278C221.555 30.6271 220.331 31.0268 218.798 31.0268C217.069 31.0268 215.609 30.4151 214.418 29.1916C213.227 27.9682 212.632 26.3125 212.632 24.2245C212.632 22.1365 213.219 20.4889 214.394 19.2818C215.568 18.0746 217.02 17.4711 218.749 17.4711C221.522 17.4711 223.3 18.825 224.083 21.5329L229.907 19.5754C229.352 17.3242 228.096 15.4075 226.139 13.8252C224.181 12.2429 221.669 11.4517 218.602 11.4517C215.079 11.4517 212.118 12.6588 209.72 15.0731C207.322 17.4874 206.123 20.5378 206.123 24.2245C206.123 27.8785 207.338 30.9208 209.769 33.3513C212.2 35.7819 215.209 36.9972 218.798 36.9972ZM248.562 33.3758C247.028 35.7574 244.663 36.9482 241.466 36.9482C238.986 36.9482 236.988 36.2305 235.471 34.795C233.954 33.3594 233.195 31.6629 233.195 29.7054C233.195 27.65 233.864 26.0025 235.202 24.7627C236.539 23.523 238.268 22.74 240.389 22.4137L246.311 21.5328C247.518 21.3697 248.121 20.7988 248.121 19.82C248.121 18.9065 247.77 18.1561 247.069 17.5689C246.368 16.9816 245.364 16.688 244.059 16.688C242.689 16.688 241.604 17.0632 240.805 17.8136C240.006 18.5639 239.557 19.4938 239.459 20.603L233.685 19.3796C233.913 17.2916 234.941 15.4482 236.768 13.8496C238.595 12.251 241.009 11.4517 244.01 11.4517C247.599 11.4517 250.242 12.3081 251.938 14.0209C253.635 15.7337 254.483 17.9278 254.483 20.603V32.4459C254.483 33.8814 254.581 35.1538 254.777 36.2631H248.806C248.643 35.5453 248.562 34.5829 248.562 33.3758ZM242.836 32.1036C241.857 32.1036 241.09 31.8345 240.536 31.2962C239.981 30.7578 239.704 30.0972 239.704 29.3142C239.704 27.585 240.699 26.5737 242.689 26.28L248.121 25.4481V26.5247C248.121 28.5149 247.624 29.9422 246.629 30.8068C245.633 31.6713 244.369 32.1036 242.836 32.1036ZM265.918 22.4141V36.2635H259.41V12.1862H265.723V15.1714C266.408 13.9968 267.386 13.0997 268.659 12.4798C269.931 11.8599 271.269 11.55 272.672 11.55C275.51 11.55 277.672 12.439 279.156 14.2171C280.64 15.9951 281.383 18.2871 281.383 21.0928V36.2635H274.874V22.2184C274.874 20.7829 274.507 19.6247 273.773 18.7438C273.039 17.8629 271.921 17.4225 270.421 17.4225C269.05 17.4225 267.957 17.8956 267.142 18.8417C266.326 19.7878 265.918 20.9786 265.918 22.4141ZM292.866 36.2635V22.4141C292.866 20.9786 293.274 19.7878 294.09 18.8417C294.905 17.8956 295.998 17.4225 297.368 17.4225C298.869 17.4225 299.987 17.8629 300.721 18.7438C301.455 19.6247 301.822 20.7829 301.822 22.2184V36.2635H308.33V21.0928C308.33 18.2871 307.588 15.9951 306.104 14.2171C304.619 12.439 302.458 11.55 299.619 11.55C298.217 11.55 296.879 11.8599 295.607 12.4798C294.334 13.0997 293.355 13.9968 292.67 15.1714V12.1862H286.357V36.2635H292.866ZM333.149 33.3758C330.751 35.79 327.742 36.9971 324.12 36.9971C320.499 36.9971 317.489 35.79 315.091 33.3758C312.693 30.9615 311.494 27.911 311.494 24.2244C311.494 20.5378 312.685 17.4873 315.067 15.073C317.481 12.6588 320.499 11.4517 324.12 11.4517C327.742 11.4517 330.751 12.6588 333.149 15.073C335.547 17.4873 336.746 20.5378 336.746 24.2244C336.746 27.911 335.547 30.9615 333.149 33.3758ZM324.121 31.0756C322.425 31.0756 320.973 30.4721 319.766 29.2649C318.591 28.0578 318.004 26.3776 318.004 24.2244C318.004 22.0711 318.6 20.3909 319.79 19.1838C320.981 17.9766 322.425 17.3731 324.121 17.3731C325.818 17.3731 327.262 17.9766 328.452 19.1838C329.643 20.3909 330.239 22.0711 330.239 24.2244C330.239 26.3776 329.643 28.0578 328.452 29.2649C327.262 30.4721 325.818 31.0756 324.121 31.0756ZM346.762 22.4141V36.2635H340.254V12.1862H346.567V15.1714C347.252 13.9968 348.23 13.0997 349.503 12.4798C350.775 11.8599 352.113 11.55 353.516 11.55C356.354 11.55 358.515 12.439 360 14.2171C361.484 15.9951 362.227 18.2871 362.227 21.0928V36.2635H355.718V22.2184C355.718 20.7829 355.351 19.6247 354.617 18.7438C353.883 17.8629 352.765 17.4225 351.265 17.4225C349.894 17.4225 348.801 17.8956 347.986 18.8417C347.17 19.7878 346.762 20.9786 346.762 22.4141Z" fill="#034AD8"/>
+<path d="M315.211 65.2638C309.672 65.2638 305.451 61.043 305.451 55.767C305.451 50.491 309.672 46.2702 315.211 46.2702C320.224 46.2702 322.73 49.8315 322.73 49.8315L320.883 51.6781C320.883 51.6781 319.037 48.9082 315.211 48.9082C311.386 48.9082 308.353 51.9419 308.353 55.767C308.353 59.5921 311.386 62.6258 315.211 62.6258C319.037 62.6258 321.015 59.724 321.015 59.724L322.862 61.5706C322.862 61.5706 320.224 65.2638 315.211 65.2638ZM326.294 65V46.534H328.932L335.923 55.5032L342.914 46.534H345.552V65H342.65V51.4143L335.923 59.9878L329.196 51.4143V65H326.294ZM355.568 65.2638C351.083 65.2638 348.973 62.4939 348.973 62.4939L350.951 60.5154C350.951 60.5154 352.402 62.6258 355.568 62.6258C357.942 62.6258 359.261 61.3068 359.261 59.8559C359.261 55.767 349.5 58.2731 349.5 51.4143C349.5 48.6444 351.875 46.2702 355.832 46.2702C359.657 46.2702 361.635 48.6444 361.635 48.6444L359.657 50.6229C359.657 50.6229 358.338 48.9082 355.832 48.9082C353.589 48.9082 352.402 50.0953 352.402 51.4143C352.402 55.5032 362.163 52.9971 362.163 59.8559C362.163 62.7577 359.657 65.2638 355.568 65.2638Z" fill="#034AD8"/>
+</g>
+<defs>
+<clipPath id="clip0_5258_169">
+<rect height="100%" width="100%" fill="white"/>
+</clipPath>
+</defs>
+</svg>
+++ /dev/null
-<svg viewBox="0 0 363 80" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path fill-rule="evenodd" clip-rule="evenodd" d="M29.0705 42.8838C29.425 43.0864 29.8049 43.289 30.1847 43.4663C33.0209 44.783 34.3376 45.644 34.3376 47.4672C34.3376 49.4171 32.7423 51.0124 30.7925 51.0124C29.2731 51.0124 28.007 50.0502 27.5005 48.7081C25.6519 50.5819 23.1197 51.7468 20.2835 51.7468C14.6872 51.7468 10.1544 47.214 10.1544 41.6177C10.1544 41.0859 10.2304 40.5541 10.3064 40.0224C5.1152 38.503 1.1142 34.1728 0.202582 28.7537C0.0759682 27.9687 0 27.1837 0 26.3734C0 25.5631 0.0759682 24.7781 0.202582 23.9931C1.13952 18.5993 5.1152 14.2438 10.3064 12.7244C10.3032 12.7022 10.3 12.6801 10.2968 12.658C10.2242 12.1503 10.1544 11.6629 10.1544 11.1291C10.1544 5.53277 14.6872 1 20.2835 1C23.0943 1 25.6519 2.16485 27.5005 4.03873C28.007 2.69662 29.2731 1.73436 30.7925 1.73436C32.7423 1.73436 34.3376 3.32969 34.3376 5.27954C34.3376 7.25472 33.0209 8.11569 30.1847 9.43248C29.9037 9.5636 29.6366 9.70858 29.3628 9.85717C29.2665 9.90945 29.1694 9.96218 29.0705 10.0149H29.0704C28.8426 10.1415 28.6147 10.2681 28.4121 10.3947C28.2349 10.496 28.0829 10.5973 27.931 10.6986C27.8803 10.7239 27.836 10.7556 27.7917 10.7872C27.7474 10.8189 27.7031 10.8505 27.6524 10.8759C26.7915 11.433 26.0065 12.0914 25.2468 12.7751C25.2215 12.7877 25.2025 12.8067 25.1835 12.8257C25.1645 12.8447 25.1455 12.8637 25.1202 12.8764C24.8163 13.1802 24.5124 13.4841 24.2339 13.788C24.1959 13.826 24.1579 13.8703 24.1199 13.9146C24.0819 13.9589 24.0439 14.0032 24.006 14.0412C23.8864 14.1907 23.7629 14.3363 23.6401 14.481C23.4508 14.704 23.2633 14.9251 23.0943 15.1554C20.7393 18.2954 19.2959 22.2205 19.2959 26.4494C19.2959 30.6783 20.714 34.6033 23.0943 37.7433C23.3729 38.1231 23.6768 38.503 24.006 38.8575C24.0439 38.8955 24.0819 38.9398 24.1199 38.9841C24.1579 39.0284 24.1959 39.0728 24.2339 39.1107C24.4424 39.3572 24.6652 39.5753 24.8915 39.7969C24.9674 39.8712 25.0438 39.946 25.1202 40.0224C25.1455 40.035 25.1645 40.054 25.1835 40.073C25.2025 40.092 25.2215 40.111 25.2468 40.1236C26.0065 40.8074 26.7915 41.4658 27.6524 42.0229C27.7031 42.0482 27.7474 42.0798 27.7917 42.1115C27.836 42.1431 27.8803 42.1748 27.931 42.2001C28.007 42.2508 28.0893 42.3014 28.1716 42.3521C28.2539 42.4027 28.3362 42.4533 28.4121 42.504C28.5261 42.5673 28.6337 42.6306 28.7414 42.6939C28.849 42.7572 28.9566 42.8205 29.0705 42.8838ZM64.2693 12.826C69.4604 14.3453 73.4614 18.6755 74.3731 24.0946C74.4997 24.8543 74.5756 25.6646 74.5756 26.6269C74.5756 27.4372 74.4997 28.2222 74.3731 29.0072C73.4361 34.4009 69.4604 38.7565 64.2693 40.2758L64.2788 40.3423C64.3515 40.85 64.4212 41.3373 64.4212 41.8712C64.4212 47.4675 59.8884 52.0003 54.2921 52.0003C51.4813 52.0003 48.9237 50.8354 47.0751 48.9615C46.5687 50.3036 45.3025 51.2659 43.7832 51.2659C41.8333 51.2659 40.238 49.6706 40.238 47.7207C40.238 45.7455 41.5548 44.8846 44.3909 43.5678C44.6719 43.4367 44.939 43.2917 45.2128 43.1431C45.3091 43.0908 45.4063 43.0381 45.5051 42.9854C45.733 42.8587 45.9609 42.7321 46.1635 42.6055C46.3407 42.5042 46.4926 42.403 46.6445 42.3017L46.6446 42.3016C46.6953 42.2763 46.7396 42.2447 46.7839 42.213C46.8282 42.1814 46.8725 42.1497 46.9232 42.1244C47.7842 41.5673 48.5692 40.9089 49.3289 40.2252C49.3542 40.2125 49.3732 40.1935 49.3922 40.1745C49.4112 40.1555 49.4301 40.1365 49.4555 40.1239C49.7593 39.82 50.0632 39.5161 50.3418 39.2123C50.3797 39.1743 50.4177 39.13 50.4557 39.0856C50.4937 39.0413 50.5317 38.997 50.5697 38.959C50.6893 38.8096 50.8128 38.664 50.9356 38.5193C51.1248 38.2962 51.3124 38.0752 51.4813 37.8448C53.8363 34.7048 55.2797 30.7798 55.2797 26.5509C55.2797 22.322 53.8616 18.397 51.4813 15.257C51.2027 14.8771 50.8989 14.4973 50.5697 14.1428C50.5317 14.1048 50.4937 14.0605 50.4557 14.0161C50.4177 13.9718 50.3797 13.9275 50.3418 13.8895C50.0632 13.5603 49.7593 13.2565 49.4555 12.9779C49.4301 12.9652 49.4112 12.9463 49.3922 12.9273C49.3732 12.9083 49.3542 12.8893 49.3289 12.8766C48.5692 12.1929 47.7842 11.5598 46.9232 10.9774C46.8726 10.9521 46.8282 10.9204 46.7839 10.8888C46.7396 10.8571 46.6953 10.8255 46.6446 10.8001C46.5687 10.7495 46.4864 10.6988 46.4041 10.6482C46.3218 10.5976 46.2395 10.5469 46.1635 10.4963C46.0496 10.433 45.9419 10.3697 45.8343 10.3064C45.7267 10.243 45.6191 10.1797 45.5051 10.1164C45.1506 9.91385 44.7708 9.71127 44.3909 9.53401C41.5801 8.19191 40.238 7.33093 40.238 5.38108C40.238 3.43123 41.8333 1.8359 43.7832 1.8359C45.3025 1.8359 46.5687 2.79816 47.0751 4.14027C48.9237 2.26638 51.456 1.10154 54.2921 1.10154C59.8884 1.10154 64.4212 5.63431 64.4212 11.2306C64.4212 11.7624 64.3452 12.2942 64.2693 12.826Z" fill="white"/>
-<path d="M48.3405 26.475C48.3405 20.3723 43.4025 15.4343 37.2998 15.4343C31.197 15.4343 26.259 20.3723 26.259 26.475C26.259 32.5778 31.197 37.5158 37.2998 37.5158C43.4025 37.5158 48.3405 32.5778 48.3405 26.475Z" fill="white"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M119.934 36.2635V0.832581H113.425V36.2635H119.934ZM98.4922 36.9973C101.494 36.9973 103.973 36.198 105.931 34.5994C107.888 33.0007 109.161 31.0922 109.748 28.8736L104.022 26.9651C103.696 28.0743 103.076 29.0286 102.162 29.8279C101.249 30.6272 100.026 31.0269 98.4922 31.0269C96.763 31.0269 95.303 30.4152 94.1122 29.1917C92.9214 27.9683 92.326 26.3126 92.326 24.2246C92.326 22.1366 92.9133 20.489 94.0878 19.2819C95.2623 18.0747 96.7141 17.4712 98.4432 17.4712C101.216 17.4712 102.994 18.8251 103.777 21.533L109.601 19.5755C109.046 17.3243 107.79 15.4076 105.833 13.8253C103.875 12.243 101.363 11.4518 98.2964 11.4518C94.7729 11.4518 91.8122 12.6589 89.4142 15.0732C87.0163 17.4875 85.8173 20.5379 85.8173 24.2246C85.8173 27.8786 87.0326 30.9209 89.4631 33.3514C91.8937 35.782 94.9034 36.9973 98.4922 36.9973ZM145.097 33.3759C142.699 35.7902 139.689 36.9973 136.068 36.9973C132.446 36.9973 129.437 35.7902 127.039 33.3759C124.641 30.9617 123.442 27.9112 123.442 24.2246C123.442 20.5379 124.633 17.4875 127.014 15.0732C129.429 12.6589 132.446 11.4518 136.068 11.4518C139.689 11.4518 142.699 12.6589 145.097 15.0732C147.495 17.4875 148.694 20.5379 148.694 24.2246C148.694 27.9112 147.495 30.9617 145.097 33.3759ZM136.069 31.0758C134.373 31.0758 132.921 30.4722 131.714 29.2651C130.539 28.058 129.952 26.3778 129.952 24.2245C129.952 22.0713 130.547 20.3911 131.738 19.1839C132.929 17.9768 134.373 17.3732 136.069 17.3732C137.766 17.3732 139.209 17.9768 140.4 19.1839C141.591 20.3911 142.186 22.0713 142.186 24.2245C142.186 26.3778 141.591 28.058 140.4 29.2651C139.209 30.4722 137.766 31.0758 136.069 31.0758ZM164.901 36.0919C163.677 36.6302 162.381 36.8994 161.01 36.8994C158.172 36.8994 155.937 35.9941 154.306 34.1834C152.675 32.3727 151.859 30.1134 151.859 27.4055V12.1859H158.368V26.0842C158.368 27.5197 158.743 28.686 159.493 29.5832C160.244 30.4804 161.337 30.929 162.772 30.929C164.175 30.929 165.284 30.4967 166.1 29.6321C166.915 28.7676 167.323 27.6175 167.323 26.182V12.1859H173.832V31.9078C173.832 33.4411 173.914 34.893 174.077 36.2632H167.862C167.731 35.6107 167.666 34.7461 167.666 33.6695C167.046 34.7461 166.124 35.5536 164.901 36.0919ZM189.5 36.8507C191.066 36.8507 192.444 36.5408 193.635 35.9209C194.826 35.301 195.698 34.4854 196.253 33.474C196.253 34.518 196.335 35.4479 196.498 36.2635H202.713C202.582 34.9585 202.517 33.5067 202.517 31.908V0.832581H196.106V14.5841C195.03 12.5939 192.762 11.5989 189.304 11.5989C185.943 11.5989 183.178 12.806 181.009 15.2203C178.839 17.6345 177.755 20.6197 177.755 24.1759C177.755 27.8299 178.856 30.8559 181.058 33.2538C183.26 35.6518 186.074 36.8507 189.5 36.8507ZM185.977 29.1919C187.086 30.4154 188.522 31.0271 190.283 31.0271C192.013 31.0271 193.432 30.4072 194.541 29.1674C195.65 27.9277 196.205 26.2475 196.205 24.1269C196.205 22.0388 195.65 20.3994 194.541 19.2086C193.432 18.0178 192.013 17.4224 190.283 17.4224C188.554 17.4224 187.127 18.026 186.001 19.2331C184.876 20.4402 184.313 22.0878 184.313 24.1758C184.313 26.2964 184.868 27.9685 185.977 29.1919ZM218.798 36.9973C221.8 36.9973 224.279 36.198 226.237 34.5994C228.194 33.0007 229.466 31.0922 230.054 28.8736L224.328 26.9651C224.002 28.0743 223.382 29.0286 222.468 29.8279C221.555 30.6272 220.331 31.0269 218.798 31.0269C217.069 31.0269 215.609 30.4152 214.418 29.1917C213.227 27.9683 212.632 26.3126 212.632 24.2246C212.632 22.1366 213.219 20.489 214.394 19.2819C215.568 18.0747 217.02 17.4712 218.749 17.4712C221.522 17.4712 223.3 18.8251 224.083 21.533L229.907 19.5755C229.352 17.3243 228.096 15.4076 226.139 13.8253C224.181 12.243 221.669 11.4518 218.602 11.4518C215.079 11.4518 212.118 12.6589 209.72 15.0732C207.322 17.4875 206.123 20.5379 206.123 24.2246C206.123 27.8786 207.338 30.9209 209.769 33.3514C212.2 35.782 215.209 36.9973 218.798 36.9973ZM248.562 33.3759C247.028 35.7575 244.663 36.9483 241.466 36.9483C238.986 36.9483 236.988 36.2306 235.471 34.7951C233.954 33.3595 233.195 31.663 233.195 29.7055C233.195 27.6501 233.864 26.0026 235.202 24.7628C236.539 23.5231 238.268 22.7401 240.389 22.4138L246.311 21.5329C247.518 21.3698 248.121 20.7989 248.121 19.8201C248.121 18.9066 247.77 18.1562 247.069 17.569C246.368 16.9817 245.364 16.6881 244.059 16.6881C242.689 16.6881 241.604 17.0633 240.805 17.8137C240.006 18.564 239.557 19.4939 239.459 20.6031L233.685 19.3797C233.913 17.2917 234.941 15.4483 236.768 13.8497C238.595 12.2511 241.009 11.4518 244.01 11.4518C247.599 11.4518 250.242 12.3082 251.938 14.021C253.635 15.7338 254.483 17.9279 254.483 20.6031V32.446C254.483 33.8815 254.581 35.1539 254.777 36.2632H248.806C248.643 35.5454 248.562 34.583 248.562 33.3759ZM242.836 32.1037C241.857 32.1037 241.09 31.8346 240.536 31.2963C239.981 30.7579 239.704 30.0973 239.704 29.3143C239.704 27.5851 240.699 26.5738 242.689 26.2801L248.121 25.4482V26.5248C248.121 28.515 247.624 29.9423 246.629 30.8069C245.633 31.6714 244.369 32.1037 242.836 32.1037ZM265.918 22.4142V36.2636H259.41V12.1863H265.723V15.1715C266.408 13.9969 267.386 13.0998 268.659 12.4799C269.931 11.86 271.269 11.5501 272.672 11.5501C275.51 11.5501 277.672 12.4391 279.156 14.2172C280.64 15.9952 281.383 18.2872 281.383 21.0929V36.2636H274.874V22.2185C274.874 20.783 274.507 19.6248 273.773 18.7439C273.039 17.863 271.921 17.4226 270.421 17.4226C269.05 17.4226 267.957 17.8957 267.142 18.8418C266.326 19.7879 265.918 20.9787 265.918 22.4142ZM292.866 36.2636V22.4142C292.866 20.9787 293.274 19.7879 294.09 18.8418C294.905 17.8957 295.998 17.4226 297.368 17.4226C298.869 17.4226 299.987 17.863 300.721 18.7439C301.455 19.6248 301.822 20.783 301.822 22.2185V36.2636H308.33V21.0929C308.33 18.2872 307.588 15.9952 306.104 14.2172C304.619 12.4391 302.458 11.5501 299.619 11.5501C298.217 11.5501 296.879 11.86 295.607 12.4799C294.334 13.0998 293.355 13.9969 292.67 15.1715V12.1863H286.357V36.2636H292.866ZM333.149 33.3759C330.751 35.7901 327.742 36.9972 324.12 36.9972C320.499 36.9972 317.489 35.7901 315.091 33.3759C312.693 30.9616 311.494 27.9111 311.494 24.2245C311.494 20.5379 312.685 17.4874 315.067 15.0731C317.481 12.6589 320.499 11.4518 324.12 11.4518C327.742 11.4518 330.751 12.6589 333.149 15.0731C335.547 17.4874 336.746 20.5379 336.746 24.2245C336.746 27.9111 335.547 30.9616 333.149 33.3759ZM324.121 31.0757C322.425 31.0757 320.973 30.4722 319.766 29.265C318.591 28.0579 318.004 26.3777 318.004 24.2245C318.004 22.0712 318.6 20.391 319.79 19.1839C320.981 17.9767 322.425 17.3732 324.121 17.3732C325.818 17.3732 327.262 17.9767 328.452 19.1839C329.643 20.391 330.239 22.0712 330.239 24.2245C330.239 26.3777 329.643 28.0579 328.452 29.265C327.262 30.4722 325.818 31.0757 324.121 31.0757ZM346.762 22.4142V36.2636H340.254V12.1863H346.567V15.1715C347.252 13.9969 348.23 13.0998 349.503 12.4799C350.775 11.86 352.113 11.5501 353.516 11.5501C356.354 11.5501 358.515 12.4391 360 14.2172C361.484 15.9952 362.227 18.2872 362.227 21.0929V36.2636H355.718V22.2185C355.718 20.783 355.351 19.6248 354.617 18.7439C353.883 17.863 352.765 17.4226 351.265 17.4226C349.894 17.4226 348.801 17.8957 347.986 18.8418C347.17 19.7879 346.762 20.9787 346.762 22.4142Z" fill="white"/>
-<path d="M313.211 64.2638C318.224 64.2638 320.862 60.5706 320.862 60.5706L319.015 58.724C319.015 58.724 317.037 61.6258 313.211 61.6258C309.386 61.6258 306.353 58.5921 306.353 54.767C306.353 50.9419 309.386 47.9082 313.211 47.9082C317.037 47.9082 318.883 50.6781 318.883 50.6781L320.73 48.8315C320.73 48.8315 318.224 45.2702 313.211 45.2702C307.672 45.2702 303.451 49.491 303.451 54.767C303.451 60.043 307.672 64.2638 313.211 64.2638ZM324.294 64H327.196V50.4143L333.923 58.9878L340.65 50.4143V64H343.552V45.534H340.914L333.923 54.5032L326.932 45.534H324.294V64ZM353.568 64.2638C357.657 64.2638 360.163 61.7577 360.163 58.8559C360.163 51.9971 350.402 54.5032 350.402 50.4143C350.402 49.0953 351.589 47.9082 353.832 47.9082C356.338 47.9082 357.657 49.6229 357.657 49.6229L359.635 47.6444C359.635 47.6444 357.657 45.2702 353.832 45.2702C349.875 45.2702 347.5 47.6444 347.5 50.4143C347.5 57.2731 357.261 54.767 357.261 58.8559C357.261 60.3068 355.942 61.6258 353.568 61.6258C350.402 61.6258 348.951 59.5154 348.951 59.5154L346.973 61.4939C346.973 61.4939 349.083 64.2638 353.568 64.2638Z" fill="#FDFDFD"/>
-</svg>
+++ /dev/null
-import { initColorScheme } from './alpinejs/stores/index';
-
-(function () {
- // This allows us to initialize the color scheme before AlpineJS etc. is loaded.
- initColorScheme();
-})();
import { scrollToActive } from 'js/helpers/index';
+import { initColorScheme } from './alpinejs/stores/index';
(function () {
+ // This allows us to initialize the color scheme before AlpineJS etc. is loaded.
+ initColorScheme();
+
// Now we know that the browser has JS enabled.
document.documentElement.classList.remove('no-js');
var debug = 0 ? console.log.bind(console, '[index]') : function () {};
-// Turbolinks init.
-(function () {
- document.addEventListener('turbo:render', function (e) {
- // This is also called right after the body start. This is added to prevent flicker on navigation.
- initColorScheme();
- });
-})();
-
// Set up and start Alpine.
(function () {
// Register AlpineJS plugins.
[cloudcannon]: https://cloudcannon.com/
[cloudflare pages]: https://pages.cloudflare.com/
+[commit information]: /methods/page/GitInfo
[dart sass install]: /functions/css/sass/#dart-sass
[dart sass]: https://sass-lang.com/dart-sass
[git install]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
[gitlab pages]: https://docs.gitlab.com/ee/user/project/pages/
[go install]: https://go.dev/doc/install
[go]: https://go.dev/
+[hugo modules]: /hugo-modules/
[netlify]: https://www.netlify.com/
Please consult your operating system documentation if you need help setting file permissions or modifying your PATH environment variable.
If you do not see a prebuilt binary for the desired edition, operating system, and architecture, install Hugo using one of the methods described below.
+
+[latest release]: https://github.com/gohugoio/hugo/releases/latest
To build the extended or extended/deploy edition from source you must:
1. Install [Git]
-1. Install [Go] version 1.23.0 or later
+1. Install [Go] version 1.24.0 or later
1. Install a C compiler, either [GCC] or [Clang]
1. Update your `PATH` environment variable as described in the [Go documentation]
### Homebrew
-[Homebrew] is a free and open-source package manager for macOS and Linux. To install the extended edition of Hugo:
+[Homebrew] is a free and open-source package manager for macOS and Linux. To install the extended/deploy edition of Hugo:
```sh
brew install hugo
`:section`
: The content's section.
+`:sectionslug`
+: {{< new-in 0.149.0 />}}
+: The content's section using slugified section name. The slugified section name is the `slug` as defined in front matter, else the `title` as defined in front matter, else the automatic title.
+
`:sections`
: The content's sections hierarchy. You can use a selection of the sections using _slice syntax_: `:sections[1:]` includes all but the first, `:sections[:last]` includes all but the last, `:sections[last]` includes only the last, `:sections[1:2]` includes section 2 and 3. Note that this slice access will not throw any out-of-bounds errors, so you don't have to be exact.
+`:sectionslugs`
+: {{< new-in 0.149.0 />}}
+: The content's sections hierarchy using slugified section names. The slugified section name is the `slug` as defined in front matter, else the `title` as defined in front matter, else the automatic title. You can use a selection of the sections using _slice syntax_: `:sectionslugs[1:]` includes all but the first, `:sectionslugs[:last]` includes all but the last, `:sectionslugs[last]` includes only the last, `:sectionslugs[1:2]` includes section 2 and 3. Note that this slice access will not throw any out-of-bounds errors, so you don't have to be exact.
+
`:title`
: The `title` as defined in front matter, else the automatic title. Hugo generates titles automatically for section, taxonomy, and term pages that are not backed by a file.
[`RenderShortcodes`]: /methods/page/rendershortcodes/
[Markdown notation]: /content-management/shortcodes/#notation
-[Embedded link render hook]: {{% eturl render-link %}}
-[Embedded image render hook]: {{% eturl render-image %}}
+[Embedded link render hook]: <{{% eturl render-link %}}>
+[Embedded image render hook]: <{{% eturl render-image %}}>
[Hugo Modules]: /hugo-modules/
[static site generator]: https://en.wikipedia.org/wiki/Static_site_generator
[features]: /about/features/
-[security model]: about/security/
+[security model]: /about/security/
[privacy protections]: /configuration/privacy
{{< youtube 0RKpf3rK57I >}}
--highlightStyle string foreground and background colors for highlighted lines, e.g. --highlightStyle "#fff000 bg:#000fff"
--lineNumbersInlineStyle string foreground and background colors for inline line numbers, e.g. --lineNumbersInlineStyle "#fff000 bg:#000fff"
--lineNumbersTableStyle string foreground and background colors for table line numbers, e.g. --lineNumbersTableStyle "#fff000 bg:#000fff"
+ --omitClassComments omit CSS class comment prefixes in the generated CSS
+ --omitEmpty omit empty CSS rules (deprecated, no longer needed)
--style string highlighter style (see https://xyproto.github.io/splash/docs/) (default "friendly")
```
* [hugo](/commands/hugo/) - Build your site
* [hugo new content](/commands/hugo_new_content/) - Create new content
-* [hugo new site](/commands/hugo_new_site/) - Create a new site (skeleton)
-* [hugo new theme](/commands/hugo_new_theme/) - Create a new theme (skeleton)
+* [hugo new site](/commands/hugo_new_site/) - Create a new site
+* [hugo new theme](/commands/hugo_new_theme/) - Create a new theme
---
## hugo new site
-Create a new site (skeleton)
+Create a new site
### Synopsis
-Create a new site in the provided directory.
-The new site will have the correct structure, but no content or theme yet.
-Use `hugo new [contentPath]` to create new content.
+Create a new site at the specified path.
```
hugo new site [path] [flags]
---
## hugo new theme
-Create a new theme (skeleton)
+Create a new theme
### Synopsis
-Create a new theme (skeleton) called [name] in ./themes.
-New theme is a skeleton. Please add content to the touched files. Add your
-name to the copyright line in the license and adjust the theme.toml file
-according to your needs.
+Create a new theme with the specified name in the ./themes directory.
+This generates a functional theme including template examples and sample content.
```
hugo new theme [name] [flags]
### Options
```
- -h, --help help for theme
+ --format string preferred file format (toml, yaml or json) (default "toml")
+ -h, --help help for theme
```
### Options inherited from parent commands
: See [configure cascade](/configuration/cascade/).
cleanDestinationDir
-: (`bool`) Whether to remove files from the site's destination directory that do not have corresponding files in the `static` directory during the build. Default is `false`.
+: (`bool`) Whether to remove files from the [`publishDir`](#publishdir) that do not exist in the [`staticDir`](#staticdir) when building the site. This setting will not take effect if the `staticDir` does not exist. Note that `.gitignore` and `.gitattributes` files, along with directories named `.git`, are always preserved in the `publishDir`. Default is `false`.
contentDir
: (`string`) The designated directory for content files. Default is `content`. {{% module-mounts-note %}}
: (`string`) The designated directory for static files. Default is `static`. {{% module-mounts-note %}}
summaryLength
-: (`int`) Applicable to [automatic summaries], the minimum number of words returned by the [`Summary`] method on a `Page` object. The `Summary` method will return content truncated at the paragraph boundary closest to the specified `summaryLength`, but at least this minimum number of words.
+: (`int`) Applicable to [automatic summaries], the minimum number of words returned by the [`Summary`] method on a `Page` object. The `Summary` method will return content truncated at the paragraph boundary closest to the specified `summaryLength`, but at least this minimum number of words. Default is `70`.
taxonomies
: See [configure taxonomies](/configuration/taxonomies/).
[Chicago Manual of Style]: https://www.chicagomanualofstyle.org/home.html
[default front matter configuration]: /configuration/front-matter/
[duration]: https://pkg.go.dev/time#Duration
-[embedded alias template]: {{% eturl alias %}}
-[embedded Open Graph template]: {{% eturl opengraph %}}
-[embedded RSS template]: {{% eturl rss %}}
+[embedded alias template]: <{{% eturl alias %}}>
+[embedded Open Graph template]: <{{% eturl opengraph %}}>
+[embedded RSS template]: <{{% eturl rss %}}>
[IANA Time Zone Database]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
[module mounts]: /configuration/module/#mounts
[os.UserCacheDir]: https://pkg.go.dev/os#UserCacheDir
For example, to cascade a "color" parameter to the home page and all its descendants:
{{< code-toggle file=hugo >}}
-title = 'Home'
[cascade.params]
color = 'red'
{{< /code-toggle >}}
[cascade.params]
color = 'red'
[cascade.target]
-path = '{/books/**}'
+path = '/books/**'
kind = 'page'
lang = '{en,de}'
[[cascade]]
[cascade.params]
color = 'blue'
[cascade.target]
-path = '{/films/**}'
+path = '/films/**'
kind = 'page'
environment = 'production'
{{< /code-toggle >}}
{{< code-toggle file=hugo >}}
[frontmatter]
date = [':filename', ':default']
+publishDate = [':filename', ':default']
lastmod = ['lastmod', ':fileModTime']
{{< /code-toggle >}}
-To determine `date`, Hugo tries to extract the date from the file name, falling back to the default ordered sequence of date fields.
+To determine `date` and `publishDate`, Hugo tries to extract the value from the file name, falling back to the default ordered sequence of date fields.
To determine `lastmod`, Hugo looks for a `lastmod` field in front matter, falling back to the file's last modification timestamp.
The HTTP cache behavior is defined for a configured set of resources. Stale resources will be refreshed from the file cache, even if their configured Time-To-Live (TTL) has not expired. If HTTP caching is disabled for a resource, Hugo will bypass the cache and access the file directly.
-The default configuration disables everything:
+This is the default configuration for HTTP caching:
-{{< code-toggle file=hugo >}}
-[HTTPCache.cache.for]
-excludes = ['**']
-includes = []
-{{< /code-toggle >}}
+{{< code-toggle config=HTTPCache />}}
+
+respectCacheControlNoStoreInRequest
+: {{< new-in 0.151.0 />}}
+: (`bool`) Whether to respect the `no-store` directive in the server's `Cache-Control` request header when fetching remote resources via the [`resources.GetRemote`][] function. Default is `true`.
+
+respectCacheControlNoStoreInResponse
+: {{< new-in 0.151.0 />}}
+: (`bool`) Whether to respect the `no-store` directive in the server's `Cache-Control` response header when fetching remote resources via the [`resources.GetRemote`][] function. Default is `false`.
cache.for.excludes
-: (`string`) A list of [glob](g) patterns to exclude from caching.
+: (`string`) A list of [glob](g) patterns to exclude from caching. In its default configuration HTTP caching excludes all files.
cache.for.includes
: (`string`) A list of [glob](g) patterns to cache.
+polls
+: A slice of polling configurations.
+
+polls.disable
+: (`bool`) Whether to disable polling for this configuration. Default is `true`.
+
+polls.high
+: (`string`) The maximum polling interval expressed as a [duration](g). This is used when the resource is considered stable. Default is `0s`.
+
+polls.low
+: (`string`) The minimum polling interval expressed as a [duration](g). This is used after a recent change and gradually increases towards `polls.high`. Default is `0s`.
+
+polls.for.excludes
+: (`string`) A list of [glob](g) patterns to exclude from polling for this configuration.
+
+polls.for.includes
+: (`string`) A list of [glob](g) patterns to include in polling for this configuration.
+
## HTTP polling
Polling is used in watch mode (e.g., `hugo server`) to detect changes in remote resources. Polling can be enabled even if HTTP caching is disabled. Detected changes trigger a rebuild of pages using the affected resource. Polling can be disabled for specific resources, typically those known to be static.
: A slice of polling configurations.
polls.disable
-: (`bool`) Whether to disable polling for this configuration.
-
-polls.low
-: (`string`) The minimum polling interval expressed as a [duration](g). This is used after a recent change and gradually increases towards `polls.high`.
+: (`bool`) Whether to disable polling for this configuration. Default is `true`.
polls.high
-: (`string`) The maximum polling interval expressed as a [duration](g). This is used when the resource is considered stable.
+: (`string`) The maximum polling interval expressed as a [duration](g). This is used when the resource is considered stable. Default is `0s`.
+
+polls.low
+: (`string`) The minimum polling interval expressed as a [duration](g). This is used after a recent change and gradually increases towards `polls.high`. Default is `0s`.
polls.for.excludes
: (`string`) A list of [glob](g) patterns to exclude from polling for this configuration.
[`Language.LanguageName`]: /methods/site/language/#languagename
[`Language.Weight`]: /methods/site/language/#weight
[`Title`]: /methods/site/title/
-[embedded alias template]: {{% eturl alias %}}
-[embedded OpenGraph template]: {{% eturl opengraph %}}
-[embedded RSS template]: {{% eturl rss %}}
+[embedded alias template]: <{{% eturl alias %}}>
+[embedded OpenGraph template]: <{{% eturl opengraph %}}>
+[embedded RSS template]: <{{% eturl rss %}}>
[RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1
[RFC 5646 § 2.2.7]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.2.7
[translating by file name]: /content-management/multilingual/#translation-by-file-name
With this configuration, to format text as deleted, wrap it with double-tildes.
-#### Passthrough
+#### Footnote
+
+Enabled by default, the Footnote extension enables inclusion of footnotes in Markdown.
+
+enable
+: {{< new-in 0.151.0 />}}
+: (`bool`) Whether to enable the Footnotes extension. Default is `true`.
-{{< new-in 0.122.0 />}}
+backlinkHTML
+: {{< new-in 0.151.0 />}}
+: (`string`) The HTML to be displayed at the end of a footnote that links the user back to the corresponding reference in the main text. The default is ↩︎ (a return arrow symbol).
+
+enableAutoIDPrefix
+: {{< new-in 0.151.0 />}}
+: (`bool`) Whether to prepend a unique prefix to footnote IDs, preventing clashes when multiple documents are rendered together. This prefix is unique to each logical path, which means that the prefix is not unique across content dimensions such as language. Default is `false`.
+
+#### Passthrough
Enable the Passthrough extension to include mathematical equations and expressions in Markdown using LaTeX markup. See [mathematics in Markdown] for details.
: (`string`) The backend output file format. Default is `html5`.
extensions
-: (`string array`) An array of enabled extensions, one or more of `asciidoctor-html5s`, `asciidoctor-bibtex`, `asciidoctor-diagram`, `asciidoctor-interdoc-reftext`, `asciidoctor-katex`, `asciidoctor-latex`, `asciidoctor-mathematical`, or `asciidoctor-question`.
+: (`string array`) An array of enabled extensions, such as `asciidoctor-html5s`, `asciidoctor-bibtex`, or `asciidoctor-diagram`.
> [!note]
> To mitigate security risks, entries in the extension array may not contain forward slashes (`/`), backslashes (`\`), or periods. Due to this restriction, extensions must be in Ruby's `$LOAD_PATH`.
{{< code-toggle config=minify />}}
-See the [tdewolff/minify] project page for details.
+See the [tdewolff/minify] project page for details, but note the following:
+
+- `css.inline` is for internal use. Changing this setting has no effect.
+- `css.keepCSS2` has been deprecated. Use `css.version` instead.
+- `html.keepConditionalComments` has been deprecated. Use `html.keepSpecialComments` instead.
+- `svg.inline` is for internal use. Changing this setting has no effect.
[tdewolff/minify]: https://github.com/tdewolff/minify
aliases: [/hugo-modules/configuration/]
---
+{{% include "/_common/gomodules-info.md" %}}
+
## Top-level options
This is the default configuration:
: (`string`) The proxy server to use to download remote modules. Default is `direct`, which means `git clone` and similar.
replacements
-: (`string`) Primarily useful for local module development, a comma-separated list of mappings from module paths to directories. Paths may be absolute or relative to the [`themesDir`].
+: (`string`) Primarily useful for local module development, a comma-separated list of mappings from module paths to directories. Paths may be absolute or relative to the [`themesDir`][].
{{< code-toggle file=hugo >}}
[module]
export HUGO_MODULE_WORKSPACE="/my/hugo.work"
```
-{{% include "/_common/gomodules-info.md" %}}
-
## Hugo version
You can specify a required Hugo version for your module in the `module` section. Users will then receive a warning if their Hugo version is incompatible.
: (`bool`) Whether the extended edition of Hugo is required, satisfied by installing either the extended or extended/deploy edition.
max
-: (`string`) The maximum Hugo version supported, for example `0.148.0`.
+: (`string`) The maximum Hugo version supported, for example `0.152.2`.
min
: (`string`) The minimum Hugo version supported, for example `0.102.0`.
: (`bool`) Whether to disable vendoring for this import. This setting is restricted to the main project. Default is `false`.
path
-: (`string`) The module path, either a valid Go module path (e.g., `github.com/gohugoio/myShortcodes`) or the directory name if stored in the [`themesDir`].
+: (`string`) The module path, either a valid Go module path (e.g., `github.com/gohugoio/myShortcodes`) or the directory name if stored in the [`themesDir`][].
-{{% include "/_common/gomodules-info.md" %}}
+version
+: {{< new-in 0.150.0 />}}
+: If set to a [version query](https://go.dev/ref/mod#version-queries), this import becomes a direct dependency, in contrast to dependencies managed by Go Modules. See [this issue](https://github.com/gohugoio/hugo/pull/13966) for more information.
## Mounts
-Before Hugo v0.56.0, custom component paths could only be configured by setting [`archetypeDir`], [`assetDir`], [`contentDir`], [`dataDir`], [`i18nDir`], [`layoutDi`], or [`staticDir`] in the site configuration. Module mounts offer greater flexibility than these legacy settings, but
-you cannot use both.
+{{% glossary-term mount %}}
-[`archetypeDir`]: /configuration/all/
-[`assetDir`]: /configuration/all/
-[`contentDir`]: /configuration/all/
-[`dataDir`]: /configuration/all/
-[`i18nDir`]: /configuration/all/
-[`layoutDi`]: /configuration/all/
-[`staticDir`]: /configuration/all/
+> [!important]
+> If you define one or more mounts to map a file system path to a component path, do not use these legacy configuration settings: [`archetypeDir`][], [`assetDir`][], [`contentDir`][], [`dataDir`][], [`i18nDir`][], [`layoutDir`][], or [`staticDir`][].
-> [!note]
-> If you use module mounts do not use the legacy settings.
+[`archetypeDir`]: /configuration/all/#archetypedir
+[`assetDir`]: /configuration/all/#assetdir
+[`contentDir`]: /configuration/all/#contentdir
+[`dataDir`]: /configuration/all/#datadir
+[`i18nDir`]: /configuration/all/#i18ndir
+[`layoutDir`]: /configuration/all/#layoutdir
+[`staticDir`]: /configuration/all/#staticdir
### Default mounts
-> [!note]
-> Adding a new mount to a target root will cause the existing default mount for that root to be ignored. If you still need the default mount, you must explicitly add it along with the new mount.
+Within a project, if you define a mount to map a file system path to a component path, the corresponding default mount for that component will be removed. This action essentially overwrites the standard, automatic mapping for that specific component with your custom one.
+
+Within a module, if you define a mount to map a file system path to a component path, all of the default mounts will be removed. Defining a mount at the module level is a more sweeping change, causing all default mappings within that module to be discarded.
+
+In either case, if you still need one of the default mounts, you must explicitly add it along with the new mount. Because custom mounts override defaults, any necessary default mappings must be re-added manually after you introduce your custom configuration.
-The are the default mounts:
+These are the default mounts:
{{< code-toggle config=module.mounts />}}
: (`string`) The source directory of the mount. For the main project, this can be either project-relative or absolute. For other modules it must be project-relative.
target
-: (`string`) Where the mount will reside within Hugo's virtual file system. It must begin with one of Hugo's component directories: `archetypes`, `assets`, `content`, `data`, `i18n`, `layouts`, or `static`. For example, `content/blog`.
+: (`string`) Where the mount will reside within Hugo's [unified file system](g). It must begin with one of Hugo's [component](g) directories: archetypes, assets, content, data, i18n, layouts, or static. For example, content/blog.
disableWatch
: {{< new-in 0.128.0 />}}
Hugo looks for archetypes in the `archetypes` directory in the root of your project, falling back to the `archetypes` directory in themes or installed modules. An archetype for a specific content type takes precedence over the default archetype.
-For example, with this command:
+For example, if you have enabled a theme named `my-theme` and you run this command:
```sh
hugo new content posts/my-first-post.md
The archetype lookup order is:
1. `archetypes/posts.md`
-1. `archetypes/default.md`
1. `themes/my-theme/archetypes/posts.md`
+1. `archetypes/default.md`
1. `themes/my-theme/archetypes/default.md`
If none of these exists, Hugo uses a built-in default archetype.
```
[code block render hook]: /render-hooks/code-blocks/
-[embedded code block render hook]: {{% eturl render-codeblock-goat %}}
+[embedded code block render hook]: <{{% eturl render-codeblock-goat %}}>
[GoAT]: https://github.com/bep/goat
: (`map`) A map of [build options].
cascade
-: (`map`) A map of front matter keys whose values are passed down to the page's descendants unless overwritten by self or a closer ancestor's cascade. See the [cascade] section for details.
+: (`map`) A map (or a slice of maps) of front matter keys whose values are passed down to the page's descendants unless overwritten by self or a closer ancestor's cascade. See the [cascade] section for details.
date
: (`string`) The date associated with the page, typically the creation date. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Date`] method on a `Page` object.
[`lastmod`]: /methods/page/date/
[`layout`]: /methods/page/layout/
[`linktitle`]: /methods/page/linktitle/
-[`opengraph.html`]: {{% eturl opengraph %}}
+[`opengraph.html`]: <{{% eturl opengraph %}}>
[`Param`]: /methods/page/param/
[`Params`]: /methods/page/params/
[`publishdate`]: /methods/page/publishdate/
[`readingtime`]: /methods/page/readingtime/
-[`schema.html`]: {{% eturl schema %}}
+[`schema.html`]: <{{% eturl schema %}}>
[`sitemap`]: /methods/page/sitemap/
[`slug`]: /methods/page/slug/
[`Summary`]: /methods/page/summary/
[`title`]: /methods/page/title/
[`translationkey`]: /methods/page/translationkey/
-[`twitter_cards.html`]: {{% eturl twitter_cards %}}
+[`twitter_cards.html`]: <{{% eturl twitter_cards %}}>
[`type`]: /methods/page/type/
[`weight`]: /methods/page/weight/
[`wordcount`]: /methods/page/wordcount/
### Process
-{{< new-in 0.119.0 />}}
-
> [!note]
> The `Process` method is also available as a filter, which is more effective if you need to apply multiple filters to an image. See [Process filter](/functions/images/process).
keywords: []
---
-{{< new-in 0.122.0 />}}
-
## Overview
-Mathematical equations and expressions written in [LaTeX] are common in academic and scientific publications. Your browser typically renders this mathematical markup using an open-source JavaScript display engine such as [MathJax] or [KaTeX].
+Mathematical equations and expressions written in [LaTeX][] are common in academic and scientific publications. Your browser typically renders this mathematical markup using an open-source JavaScript display engine such as [MathJax][] or [KaTeX][].
-For example, with this LaTeX markup:
+For example, this LaTeX markup:
```text
\[
\]
```
-The MathJax display engine renders this:
+Is rendered to:
\[
\begin{aligned}
Whether an equation or expression appears inline, or as a block, depends on the delimiters that surround the mathematical markup. Delimiters are defined in pairs, where each pair consists of an opening and closing delimiter. The opening and closing delimiters may be the same, or different.
> [!note]
-> You can configure Hugo to render mathematical markup on the client side using the MathJax or KaTeX display engine, or you can render the markup with the [`transform.ToMath`] function while building your site.
+> You can configure Hugo to render mathematical markup on the client side using the MathJax or KaTeX display engine, or you can render the markup with the [`transform.ToMath`][] function while building your site.
>
> The first approach is described below.
Follow these instructions to include mathematical equations and expressions in your Markdown using LaTeX markup.
Step 1
-: Enable and configure the Goldmark [passthrough extension] in your site configuration. The passthrough extension preserves raw Markdown within delimited snippets of text, including the delimiters themselves.
+: Enable and configure the Goldmark [passthrough extension][] in your site configuration. The passthrough extension preserves raw Markdown within delimited snippets of text, including the delimiters themselves.
{{< code-toggle file=hugo copy=true >}}
[markup.goldmark.extensions.passthrough]
math = true
{{< /code-toggle >}}
- The configuration above enables mathematical rendering on every page unless you set the `math` parameter to `false` in front matter. To enable mathematical rendering as needed, set the `math` parameter to `false` in your site configuration, and set the `math` parameter to `true` in front matter. Use this parameter in your base template as shown in [Step 3](#step-3).
+ The configuration above enables mathematical rendering on every page unless you set the `math` parameter to `false` in front matter. To enable mathematical rendering as needed, set the `math` parameter to `false` in your site configuration, and set the `math` parameter to `true` in front matter. Use this parameter in your base template as shown in [Step 3][].
> [!note]
> The configuration above precludes the use of the `$...$` delimiter pair for inline equations. Although you can add this delimiter pair to the configuration and JavaScript, you must double-escape the `$` symbol when used outside of math contexts to avoid unintended formatting.
>
- > See the [inline delimiters](#inline-delimiters) section for details.
+ > See the [inline delimiters][] section for details.
To disable passthrough of inline snippets, omit the `inline` key from the configuration:
block = [['\[', '\]'], ['$$', '$$']]
{{< /code-toggle >}}
- You can define your own opening and closing delimiters, provided they match the delimiters that you set in [Step 2].
+ You can define your own opening and closing delimiters, provided they match the delimiters that you set in [Step 2][].
{{< code-toggle file=hugo >}}
[markup.goldmark.extensions.passthrough.delimiters]
{{< /code-toggle >}}
Step 2
-: Create a _partial_ template to load MathJax or KaTeX. The example below loads MathJax, or you can use KaTeX as described in the [engines](#engines) section.
+: Create a _partial_ template to load MathJax or KaTeX. The example below loads MathJax, or you can use KaTeX as described in the [engines][] section.
```go-html-template {file="layouts/_partials/math.html" copy=true}
- <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
+ <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@4/tex-mml-chtml.js"></script>
+
<script>
MathJax = {
tex: {
```
> [!note]
-> If you use the `$...$` delimiter pair for inline equations, and occasionally use the `$` symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437).
+> If you use the `$...$` delimiter pair for inline equations, and occasionally use the `$` symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation][].
## Engines
-MathJax and KaTeX are open-source JavaScript display engines. Both engines are fast, but at the time of this writing MathJax v3.2.2 is slightly faster than KaTeX v0.16.11.
+MathJax and KaTeX are open-source JavaScript display engines.
> [!note]
-> If you use the `$...$` delimiter pair for inline equations, and occasionally use the `$` symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437).
+> If you use the `$...$` delimiter pair for inline equations, and occasionally use the `$` symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation][].
>
->See the [inline delimiters](#inline-delimiters) section for details.
+>See the [inline delimiters][] section for details.
-To use KaTeX instead of MathJax, replace the _partial_ template from [Step 2] with this:
+To use KaTeX instead of MathJax, replace the _partial_ template from [Step 2][] with this:
```go-html-template {file="layouts/_partials/math.html" copy=true}
<link
rel="stylesheet"
- href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css"
- integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib"
+ href="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css"
+ integrity="sha384-WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi"
crossorigin="anonymous"
>
<script
defer
- src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js"
- integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh"
+ src="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.js"
+ integrity="sha384-J+9dG2KMoiR9hqcFao0IBLwxt6zpcyN68IgwzsCSkbreXUjmNVRhPFTssqdSGjwQ"
crossorigin="anonymous">
</script>
<script
defer
- src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js"
+ src="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/contrib/auto-render.min.js"
integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh"
crossorigin="anonymous"
onload="renderMathInElement(document.body);">
$$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$
-As shown in [Step 2](#step-2) above, MathJax supports chemical equations without additional configuration. To add chemistry support to KaTeX, enable the mhchem extension as described in the KaTeX [documentation](https://katex.org/docs/libs).
+As shown in [Step 2][] above, MathJax supports chemical equations without additional configuration. To add chemistry support to KaTeX, enable the mhchem extension as described in the KaTeX [documentation](https://katex.org/docs/libs).
[`transform.ToMath`]: /functions/transform/tomath/
+[engines]: #engines
+[inline delimiters]: #inline-delimiters
[KaTeX]: https://katex.org/
[LaTeX]: https://www.latex-project.org/
[MathJax]: https://www.mathjax.org/
[passthrough extension]: /configuration/markup/#passthrough
+[Step 2]: #step-2
+[Step 3]: #step-3
+[this KaTeX limitation]: https://github.com/KaTeX/KaTeX/issues/437
## Page bundles
-Hugo `0.32` announced page-relative images and other resources packaged into `Page Bundles`.
+Hugo supports page-relative images and other resources packaged into `Page Bundles`.
These terms are connected, and you also need to read about [Page Resources](/content-management/page-resources) and [Image Processing](/content-management/image-processing) to get the full picture.
This is the second paragraph.
```
+> [!NOTE]
+> Place the summary divider on its own line. Do not place it inline with other content.
+
+Correct placement:
+
+```text {file="content/example.md"}
+---
+title: 'Example'
+---
+
+This is an example of **strong text** in a sentence. This is another sentence.
+
+<!--more-->
+
+This is another paragraph.
+```
+
+Incorrect placement:
+
+```text {file="content/example.md"}
+---
+title: 'Example'
+---
+
+This is an example of **strong text** <!--more--> in a sentence. This is another sentence.
+
+This is another paragraph.
+```
+
When using the Emacs Org Mode [content format], use a `# more` divider to indicate the end of the summary.
[content format]: /content-management/formats/
<p>This is the second paragraph.</p>
```
+> [!warning]
+> Automatic `.Summary` may cut block tags (e.g., `blockquote`) in the middle when `summaryLength` is reached, causing the browser to recover the end tag (the end tag will be inserted before the parent's end tag), resulting in unexpected rendering behavior. To avoid this, wrap `.Summary` in a `<div>`; alternatively, wrap it together with the heading tag using `<section>`. You can avoid this entirely by using a manual summary. See issue [#14044] for details.
+
## Comparison
Each summary type has different characteristics:
</div>
{{ end }}
```
+
+[#14044]: https://github.com/gohugoio/hugo/issues/14044
categories = ['Category A','Category B']
{{< /code-toggle >}}
-## Order taxonomies
+## Taxonomic weight
-A content file can assign weight for each of its associate taxonomies. Taxonomic weight can be used for sorting or ordering content in taxonomy templates and is declared in a content file's front matter. The convention for declaring taxonomic weight is `taxonomyname_weight`.
+{{% glossary-term "taxonomic weight" %}}
-The following show a piece of content that has a weight of 22, which can be used for ordering purposes when rendering the pages assigned to the "a", "b" and "c" values of the `tags` taxonomy. It has also been assigned the weight of 44 when rendering the "d" category page.
+Assign a taxonomic weight using a front matter key named `[taxonomy_name]_weight`.
-### Example: taxonomic `weight`
-
-{{< code-toggle file=hugo >}}
-title = "foo"
-tags = [ "a", "b", "c" ]
-tags_weight = 22
-categories = ["d"]
-categories_weight = 44
+{{< code-toggle file="content/courses/organic-chemistry.md" fm=true >}}
+title = 'Organic Chemistry'
+weight = 10
+tags_weight = 1000
+tags = ['chemistry','science']
{{</ code-toggle >}}
-By using taxonomic weight, the same piece of content can appear in different positions in different taxonomies.
+With the front matter above, the "Organic Chemistry" page will float towards the top of the list on section and home pages, and it will sink towards the bottom of the list on the "chemistry" and "science" term pages.
## Metadata
<head>
<title>https://example.org/posts/new-file-name/</title>
<link rel="canonical" href="https://example.org/posts/new-file-name/">
- <meta name="robots" content="noindex">
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=https://example.org/posts/new-file-name/">
</head>
</html>
```
-Collectively, the elements in the `head` section:
+The `link rel="canonical"` tag informs search engines that the new URL is the preferred or "canonical" version of the page. This is crucial for SEO, as it prevents issues with duplicate content by consolidating all ranking signals to a single URL.
-- Tell search engines that the new URL is canonical
-- Tell search engines not to index the previous URL
-- Tell the browser to redirect to the new URL
+The `http-equiv="refresh"` meta tag instructs the web browser to automatically redirect the user to the new URL. This ensures that anyone who accesses the old alias URL is seamlessly taken to the correct, updated page.
Hugo renders alias files before rendering pages. A new page with the previous file name will overwrite the alias, as expected.
[`baseURL`]: /configuration/all/#baseurl
[removed in a future release]: https://github.com/gohugoio/hugo/issues/4733
[reserved characters]: https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions
-[source code]: {{% eturl alias %}}
+[source code]: <{{% eturl alias %}}>
To build the extended or extended/deploy edition from source you must:
1. Install [Git]
-1. Install [Go] version 1.23.0 or later
+1. Install [Go] version 1.24.0 or later
1. Install a C compiler, either [GCC] or [Clang]
1. Update your `PATH` environment variable as described in the [Go documentation]
: Commit your changes with a descriptive commit message:
- Provide a summary on the first line, typically 50 characters or less, followed by a blank line.
- - Begin the summary with one of content, theme, config, all, or misc, followed by a colon, a space, and a brief description of the change beginning with a capital letter
+ - Begin the summary with the name of the package, followed by a colon, a space, and a brief description of the change beginning with a capital letter
- Use imperative present tense
- See the [commit message guidelines] for requirements
- Optionally, provide a detailed description where each line is 72 characters or less, followed by a blank line.
To build and install a specific release:
```sh
-CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@v0.148.0
+CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@v0.152.2
```
To build and install at the latest commit on the master branch:
Adhere to these Markdown conventions:
- Use [ATX] headings (levels 2-4), not [setext] headings.
-- Use [fenced code blocks], not [indented code blocks].
+- Use [collapsed link references][] instead of full or shortcut references. For example:
+
+ ```text
+ This is a [link][].
+
+ [link]: https://example.org
+ ```
+
+- Use [fenced code blocks] instead of [indented code blocks].
- Use hyphens, not asterisks, for unordered [list items].
- Use [callouts](#callouts) instead of bold text for emphasis.
- Do not mix [raw HTML] within Markdown.
```
````
+Whitespace trimming is enabled by default. To override this behavior and preserve leading and trailing spaces:
+
+````text
+```go-html-template {trim=false}
+
+{{ if eq $foo "bar" }}
+ {{ print "foo is bar" }}
+{{ end }}
+
+```
+````
+
### Shortcode calls
Use this syntax :
```text
This is a link to the [embedded alias template].
-[embedded alias template]: {{%/* eturl alias */%}}
+[embedded alias template]: <{{%/* eturl alias */%}}>
```
### glossary-term
[ATX]: https://spec.commonmark.org/current/#atx-headings
[basic english]: https://simple.wikipedia.org/wiki/Basic_English
+[collapsed link references]: https://discourse.gohugo.io/t/55714
[developer documentation style guide]: https://developers.google.com/style
[documentation repository]: https://github.com/gohugoio/hugoDocs/
[fenced code blocks]: https://spec.commonmark.org/current/#fenced-code-blocks
--- /dev/null
+---
+title: collections.D
+description: Returns a slice of sequentially ordered random integers.
+categories: []
+keywords: [random]
+params:
+ functions_and_methods:
+ returnType: '[]int'
+ signatures: [collections.D SEED N HIGH]
+---
+
+{{< new-in 0.149.0 />}}
+
+The `collections.D` function returns a slice of `N` sequentially ordered unique random integers in the half-open [interval](g) [0, `HIGH`) using the provided [`SEED`](g) value. This function implements J. S. Vitter's Method D[^1] for sequential random sampling, a fast and efficient algorithm for this task.
+
+See [this article][] for a detailed explanation.
+
+## Examples
+
+```go-html-template
+{{ collections.D 6 7 42 }} → [4, 9, 10, 20, 22, 24, 41]
+```
+
+The example above generates the _same_ random numbers each time it is called. To generate a _different_ set of 7 random numbers in the same range, change the seed value.
+
+```go-html-template
+{{ collections.D 2 7 42 }} → [3, 11, 19, 25, 32, 33, 38]
+```
+
+A common use case is the selection of random pages from a page collection. For example, to render a list of 5 random pages using the [day of the year][] as the seed value:
+
+```go-html-template
+<ul>
+ {{ $p := site.RegularPages }}
+ {{ range collections.D time.Now.YearDay 5 ($p | len) }}
+ {{ with (index $p .) }}
+ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
+ {{ end }}
+ {{ end }}
+</ul>
+```
+
+The construct above is significantly faster than using the [`collections.Shuffle`][] function.
+
+## Seed value
+
+Choosing an appropriate seed value depends on your objective.
+
+Objective|Seed example
+:--|:--
+Consistent result|`42`
+Different result on each call|`int time.Now.UnixNano`
+Same result per day|`time.Now.YearDay`
+Same result per page|`hash.FNV32a .Path`
+Different result per page per day|`hash.FNV32a (print .Path time.Now.YearDay)`
+
+> [!note]
+> The slice created by this function is limited to 1 million elements.
+
+[^1]: J. S. Vitter, "An efficient algorithm for sequential random sampling," _ACM Trans. Math. Soft._, vol. 13, pp. 58–67, Mar. 1987.
+
+[`collections.Shuffle`]: /functions/collections/shuffle/
+[day of the year]: /methods/time/yearday/
+[this article]: https://getkerf.wordpress.com/2016/03/30/the-best-algorithm-no-one-knows-about/
aliases: [/functions/first]
---
+```go-html-template
+{{ slice "a" "b" "c" | first 1 }} → [a]
+{{ slice "a" "b" "c" | first 2 }} → [a b]
+```
+
+Given that a string is in effect a read-only slice of bytes, this function can be used to return the specified number of bytes from the beginning of the string:
+
+```go-html-template
+{{ "abc" | first 1 }} → a
+{{ "abc" | first 2 }} → ab
+```
+
+Note that a _character_ may consist of multiple _bytes_:
+
+```go-html-template
+{{ "Schön" | first 3 }} → Sch
+{{ "Schön" | first 4 }} → Sch\xc3
+{{ "Schön" | first 5 }} → Schö
+```
+
+To use the `collections.First` function with a page collection:
+
```go-html-template
{{ range first 5 .Pages }}
{{ .Render "summary" }}
{{ end }}
```
-Set `N` to zero to return an empty collection.
+Set `N` to zero to return an empty collection:
```go-html-template
{{ $emptyPageCollection := first 0 .Pages }}
```
-Use `first` and [`where`] together.
+Use `first` and [`where`][] together:
```go-html-template
{{ range where .Pages "Section" "articles" | first 5 }}
showHeroImage = false
{{< /code-toggle >}}
-It the value of `showHeroImage` is `true`, we can detect that it exists using either `if` or `with`:
+If the value of `showHeroImage` is `true`, we can detect that it exists using either `if` or `with`:
```go-html-template
{{ if site.Params.showHeroImage }}
---
```go-html-template
-{{ range last 10 .Pages }}
+{{ slice "a" "b" "c" | last 1 }} → [c]
+{{ slice "a" "b" "c" | last 2 }} → [b c]
+```
+
+Given that a string is in effect a read-only slice of bytes, this function can be used to return the specified number of bytes from the end of the string:
+
+```go-html-template
+{{ "abc" | last 1 }} → c
+{{ "abc" | last 2 }} → bc
+```
+
+Note that a _character_ may consist of multiple _bytes_:
+
+```go-html-template
+{{ "Schön" | last 1 }} → n
+{{ "Schön" | last 2 }} → \xb6n
+{{ "Schön" | last 3 }} → ön
+```
+
+To use the `collections.Last` function with a page collection:
+
+```go-html-template
+{{ range last 5 .Pages }}
{{ .Render "summary" }}
{{ end }}
```
-Set `N` to zero to return an empty collection.
+Set `N` to zero to return an empty collection:
```go-html-template
{{ $emptyPageCollection := last 0 .Pages }}
```
-Use `last` and [`where`] together.
+Use `last` and [`where`][] together:
[`where`]: /functions/collections/where/
```
> [!note]
-> The slice created by the `seq` function is limited to 2000 elements.
+> The slice created by this function is limited to 1 million elements.
title: collections.Shuffle
description: Returns a random permutation of a given array or slice.
categories: []
-keywords: []
+keywords: [random]
params:
functions_and_methods:
aliases: [shuffle]
{{ end }}
</ul>
```
+
+{{< new-in 0.149.0 />}}
+
+Using the [`collections.D`][] function for the same task is significantly faster.
+
+[`collections.D`]: /functions/collections/D/
{{ default 42 "" }} → 42
{{ default 42 dict }} → 42
{{ default 42 slice }} → 42
-{{ default 42 <nil> }} → 42
+{{ default 42 nil }} → 42
```
[`or`]: /functions/go-template/or/
--- /dev/null
+---
+title: css.Quoted
+description: Returns the given string, setting its data type to indicate that it must be quoted when used in CSS.
+categories: []
+keywords: []
+params:
+ functions_and_methods:
+ aliases: []
+ returnType: css.QuotedString
+ signatures: [css.Quoted STRING]
+---
+
+<!-- Added in v0.111.0 -->
+
+> [!note]
+> This function is only applicable to the [`vars`] option passed to the [`css.Sass`] function.
+
+When when passing a `vars` map to the `css.Sass` function, Hugo detects common typed CSS values such as `24px` or `#FF0000` using regular expression matching. If necessary, you can bypass automatic type inference by using the `css.Quoted` function to explicitly indicate that the value must be treated as a quoted string.
+
+For example:
+
+```scss {file="assets/sass/main.scss"}
+@use "hugo:vars" as h;
+
+ol li::after {
+ content: h.$ol-li-after;
+}
+
+ul li::after {
+ content: h.$ul-li-after;
+}
+```
+
+```go-html-template {file="layouts/_partials/css.html"}
+{{ $vars := dict
+ "ol_li_after" ("6" | css.Quoted )
+ "ul_li_after" ("7" | css.Quoted )
+}}
+
+{{ with resources.Get "sass/main.scss" }}
+ {{ $opts := dict
+ "enableSourceMap" hugo.IsDevelopment
+ "outputStyle" (cond hugo.IsDevelopment "expanded" "compressed")
+ "targetPath" "css/main.css"
+ "transpiler" "dartsass"
+ "vars" $vars
+ }}
+ {{ with . | toCSS $opts }}
+ {{ if hugo.IsDevelopment }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+ {{ else }}
+ {{ with . | fingerprint }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+ {{ end }}
+ {{ end }}
+ {{ end }}
+{{ end }}
+```
+
+The Sass code is transpiled to:
+
+```css {file="public/css/main.css"}
+ol li::after {
+ content: "6";
+}
+
+ul li::after {
+ content: "7";
+}
+```
+
+[`css.Sass`]: /functions/css/sass/
+[`vars`]: /functions/css/sass/#vars
Transpile Sass to CSS using the LibSass transpiler included in Hugo's extended and extended/deploy editions, or [install Dart Sass](#dart-sass) to use the latest features of the Sass language.
-Sass has two forms of syntax: [SCSS] and [indented]. Hugo supports both.
-
-[scss]: https://sass-lang.com/documentation/syntax#scss
-[indented]: https://sass-lang.com/documentation/syntax#the-indented-syntax
+Sass has two forms of syntax: [SCSS][] and [indented][]. Hugo supports both.
## Options
: (`bool`) Whether to embed sources in the generated source map. Applicable to Dart Sass. Default is `false`.
targetPath
-: (`string`) The publish path for the transformed resource, relative to the[`publishDir`]. If unset, the target path defaults to the asset's original path with a `.css` extension.
+: (`string`) The publish path for the transformed resource, relative to the[`publishDir`][]. If unset, the target path defaults to the asset's original path with a `.css` extension.
transpiler
: (`string`) The transpiler to use, either `libsass` or `dartsass`. Hugo's extended and extended/deploy editions include the LibSass transpiler. To use the Dart Sass transpiler, see the [installation instructions](#dart-sass). Default is `libsass`.
@use "hugo:vars" as v;
```
+ When when passing a `vars` map to the `css.Sass` function, Hugo detects common typed CSS values such as `24px` or `#FF0000` using regular expression matching. If necessary, you can bypass automatic type inference by using the [`css.Quoted`][] or [`css.Unquoted`][] function to explicitly indicate a value's type.
+
## Example
```go-html-template {copy=true}
## Dart Sass
-Hugo's extended and extended/deploy editions include [LibSass] to transpile Sass to CSS. In 2020, the Sass team deprecated LibSass in favor of [Dart Sass].
+Hugo's extended and extended/deploy editions include [LibSass][] to transpile Sass to CSS. In 2020, the Sass team deprecated LibSass in favor of [Dart Sass].
Use the latest features of the Sass language by installing Dart Sass in your development and production environments.
Windows|Chocolatey|[chocolatey.org]|`choco install sass`
Windows|Scoop|[scoop.sh]|`scoop install sass`
-You may also install [prebuilt binaries] for Linux, macOS, and Windows. You must install the prebuilt binary outside of your project directory and ensure its path is included in your system's PATH environment variable.
+You may also install [prebuilt binaries][] for Linux, macOS, and Windows. You must install the prebuilt binary outside of your project directory and ensure its path is included in your system's PATH environment variable.
Run `hugo env` to list the active transpilers.
There's one key exception where you can skip this step: you have committed your `resources` directory to your repository. This is only possible if:
- You have not changed Hugo's default asset cache location.
-- You have not set [`useResourceCacheWhen`] to never in your sites configuration.
+- You have not set [`useResourceCacheWhen`][] to never in your sites configuration.
By committing the `resources` directory, you're providing the pre-built CSS files directly to your CI/CD service, so it doesn't need to run the Sass compilation itself.
-For examples of how to install Dart Sass in a production environment, see the following workflow files:
+For examples of how to install Dart Sass in a production environment, see these hosting guides:
+- [Cloudflare]
- [GitHub Pages]
- [GitLab Pages]
- [Netlify]
+- [Render]
+- [Vercel]
+[`css.Quoted`]: /functions/css/quoted/
+[`css.Unquoted`]: /functions/css/unquoted/
[`publishDir`]: /configuration/all/#publishdir
[`useResourceCacheWhen`]: /configuration/build/#useresourcecachewhen
[brew.sh]: https://brew.sh/
[chocolatey.org]: https://community.chocolatey.org/packages/sass
-[dart sass]: https://sass-lang.com/dart-sass
-[GitHub Pages]: /host-and-deploy/host-on-github-pages/#step-7
-[GitLab Pages]: /host-and-deploy/host-on-gitlab-pages/#configure-gitlab-cicd
-[libsass]: https://sass-lang.com/libsass
-[Netlify]: /host-and-deploy/host-on-netlify/#configuration-file
+[Cloudflare]: /host-and-deploy/host-on-cloudflare/
+[GitHub Pages]: /host-and-deploy/host-on-github-pages/
+[GitLab Pages]: /host-and-deploy/host-on-gitlab-pages/
+[indented]: https://sass-lang.com/documentation/syntax#the-indented-syntax
+[LibSass]: https://sass-lang.com/libsass
+[Netlify]: /host-and-deploy/host-on-netlify/
[prebuilt binaries]: https://github.com/sass/dart-sass/releases/latest
+[Render]: /host-and-deploy/host-on-render/
[scoop.sh]: https://scoop.sh/#/apps?q=sass
-[snap package]: /installation/linux/#snap
+[SCSS]: https://sass-lang.com/documentation/syntax#scss
[snapcraft.io]: https://snapcraft.io/dart-sass
+[Vercel]: /host-and-deploy/host-on-vercel/
--- /dev/null
+---
+title: css.Unquoted
+description: Returns the given string, setting its data type to indicate that it must not be quoted when used in CSS.
+categories: []
+keywords: []
+params:
+ functions_and_methods:
+ aliases: []
+ returnType: css.UnquotedString
+ signatures: [css.Unquoted STRING]
+---
+
+<!-- Added in v0.111.0 -->
+
+> [!note]
+> This function is only applicable to the [`vars`] option passed to the [`css.Sass`] function.
+
+When when passing a `vars` map to the `css.Sass` function, Hugo detects common typed CSS values such as `24px` or `#FF0000` using regular expression matching. If necessary, you can bypass automatic type inference by using the `css.Unquoted` function to explicitly indicate that the value must not be treated as a quoted string.
+
+For example:
+
+```scss {file="assets/sass/main.scss"}
+@use "hugo:vars" as h;
+
+h1 {
+ font-size: h.$font-size-h1;
+}
+
+h2 {
+ font-size: h.$font-size-h2;
+}
+```
+
+```go-html-template {file="layouts/_partials/css.html"}
+{{ $vars := dict
+ "font_size_h1" ("72px * 0.500" | css.Unquoted)
+ "font_size_h2" ("72px * 0.375" | css.Unquoted)
+}}
+
+{{ with resources.Get "sass/main.scss" }}
+ {{ $opts := dict
+ "enableSourceMap" hugo.IsDevelopment
+ "outputStyle" (cond hugo.IsDevelopment "expanded" "compressed")
+ "targetPath" "css/main.css"
+ "transpiler" "dartsass"
+ "vars" $vars
+ }}
+ {{ with . | toCSS $opts }}
+ {{ if hugo.IsDevelopment }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+ {{ else }}
+ {{ with . | fingerprint }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+ {{ end }}
+ {{ end }}
+ {{ end }}
+{{ end }}
+```
+
+The Sass rules are transpiled to:
+
+```css {file="public/css/main.css"}
+h1 {
+ font-size: 36px;
+}
+
+h2 {
+ font-size: 27px;
+}
+```
+
+[`css.Sass`]: /functions/css/sass/
+[`vars`]: /functions/css/sass/#vars
signatures: [debug.Timer NAME]
---
-{{< new-in 0.120.0 />}}
-
Use the `debug.Timer` function to determine execution time for a block of code, useful for finding performance bottlenecks in templates.
The timer starts when you instantiate it, and stops when you call its `Stop` method.
--- /dev/null
+---
+title: debug.VisualizeSpaces
+description: Returns the given string with spaces replaced by a visible string.
+categories: []
+keywords: []
+params:
+ functions_and_methods:
+ aliases: []
+ returnType: string
+ signatures: [debug.VisualizeSpaces STRING]
+---
+
+<!-- Added in v0.112.0 -->
+
+```go-html-template
+{{ debug.VisualizeSpaces "foo bar" }} → foo[SPACE][SPACE]bar
+```
```
[code block render hook]: /render-hooks/code-blocks/
-[embedded code block render hook]: {{% eturl render-codeblock-goat %}}
+[embedded code block render hook]: <{{% eturl render-codeblock-goat %}}>
[GoAT]: https://github.com/bep/goat
```go-html-template
{{ println "foo" }} → foo\n
+{{ println "foo" "bar" }} → foo bar\n
```
---
```go-html-template
-{{ hugo.Generator }} → <meta name="generator" content="Hugo 0.148.0">
+{{ hugo.Generator }} → <meta name="generator" content="Hugo 0.152.2">
```
signatures: [hugo.IsDevelopment]
---
-{{< new-in 0.120.0 />}}
-
```go-html-template
{{ hugo.IsDevelopment }} → true/false
```
signatures: [hugo.IsServer]
---
-{{< new-in 0.120.0 />}}
-
```go-html-template
{{ hugo.IsServer }} → true/false
```
---
```go-html-template
-{{ hugo.Version }} → 0.148.0
+{{ hugo.Version }} → 0.152.2
```
signatures: [images.AutoOrient]
---
-{{< new-in 0.121.2 />}}
-
## Usage
Create the filter:
signatures: [images.Opacity OPACITY]
---
-{{< new-in 0.119.0 />}}
-
The opacity value must be in the range [0, 1]. A value of `0` produces a transparent image, and a value of `1` produces an opaque image (no transparency).
## Usage
signatures: ['images.Padding V1 [V2] [V3] [V4] [COLOR]']
---
-{{< new-in 0.120.0 />}}
-
The last argument is the canvas color, expressed as an RGB or RGBA [hexadecimal color]. The default value is `ffffffff` (opaque white). The preceding arguments are the padding values, in pixels, using the CSS [shorthand property] syntax. Negative padding values will crop the image.
[hexadecimal color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color
signatures: [images.Process SPEC]
---
-{{< new-in 0.119.0 />}}
-
This filter has the same options as the [`Process`] method on a `Resource` object, but using it as a filter may be more effective if you need to apply multiple filters to an image.
[`Process`]: /methods/resource/process/
These are mostly the same as for `js.Build`, but note that:
- `targetPath` is set automatically (there may be multiple outputs).
-- ``format` must be `esm`, currently the only format supporting [code splitting].
-- ``params` will be available in the `@params/config` namespace in the scripts. This way you can import both the [script] or [runner] params and the [config] params with:
+- `format` must be `esm`, currently the only format supporting [code splitting].
+- `params` will be available in the `@params/config` namespace in the scripts. This way you can import both the [script] or [runner] params and the [config] params with:
```js
import * as params from "@params";
[code splitting]: https://esbuild.github.io/api/#splitting
[config]: #config
[ESBuild]: https://github.com/evanw/esbuild
+[group]: #group
+[instance]: #instance
[JavaScript import]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
[js.Batch Demo Repo]: https://github.com/bep/hugojsbatchdemo/
[OptionsSetter]: #optionssetter
The `lang.Translate` function returns the value associated with given key as defined in the translation table for the current language.
-If the key is not found in the translation table for the current language, the `lang.Translate` function falls back to the translation table for the [`defaultContentLanguage`].
+If the key is not found in the translation table for the current language, the `lang.Translate` function falls back to the translation table for the [`defaultContentLanguage`][].
If the key is not found in the translation table for the `defaultContentLanguage`, the `lang.Translate` function returns an empty string.
> [!note]
> To list missing and fallback translations, use the `--printI18nWarnings` flag when building your site.
>
-> To render placeholders for missing and fallback translations, set [`enableMissingTranslationPlaceholders`] to `true` in your site configuration.
+> To render placeholders for missing and fallback translations, set [`enableMissingTranslationPlaceholders`][] to `true` in your site configuration.
## Translation tables
-Create translation tables in the `i18n` directory, naming each file according to [RFC 5646]. Translation tables may be JSON, TOML, or YAML. For example:
+Create translation tables in the `i18n` directory, naming each file according to [RFC 5646][]. Translation tables may be JSON, TOML, or YAML. For example:
```text
i18n/en.toml
i18n/en-US.toml
```
-The base name must match the [language key] as defined in your site configuration.
+The base name must match the [language key][] as defined in your site configuration.
-Artificial languages with private use subtags as defined in [RFC 5646 § 2.2.7] are also supported. You may omit the `art-x-` prefix for brevity. For example:
+Artificial languages with private use subtags as defined in [RFC 5646 § 2.2.7][] are also supported. You may omit the `art-x-` prefix for brevity. For example:
```text
i18n/art-x-hugolang.toml
└── pl.toml
```
-The Unicode [CLDR Plural Rules chart] describes the pluralization categories for each language.
+The Unicode [CLDR Plural Rules chart][CLDR] describes the pluralization categories for each language.
The English translation table:
## Reserved keys
-Hugo uses the [go-i18n] package to look up values in translation tables. This package reserves the following keys for internal use:
+Hugo uses the [go-i18n][] package to look up values in translation tables. This package reserves the following keys for internal use:
id
: (`string`) Uniquely identifies the message.
: (`string`) The right Go template delimiter.
zero
-: (`string`) The content of the message for the [CLDR] plural form "zero".
+: (`string`) The content of the message for the [CLDR][] plural form "zero".
one
-: (`string`) The content of the message for the [CLDR] plural form "one".
+: (`string`) The content of the message for the [CLDR][] plural form "one".
two
-: (`string`) The content of the message for the [CLDR] plural form "two".
+: (`string`) The content of the message for the [CLDR][] plural form "two".
few
-: (`string`) The content of the message for the [CLDR] plural form "few".
+: (`string`) The content of the message for the [CLDR][] plural form "few".
many
-: (`string`) The content of the message for the [CLDR] plural form "many".
+: (`string`) The content of the message for the [CLDR][] plural form "many".
other
-: (`string`) The content of the message for the [CLDR] plural form "other".
+: (`string`) The content of the message for the [CLDR][] plural form "other".
If you need to provide a translation for one of the reserved keys, you can prepend the word with an underscore. For example:
[`defaultContentLanguage`]: /configuration/all/#defaultcontentlanguage
[`enableMissingTranslationPlaceholders`]: /configuration/all/#enablemissingtranslationplaceholders
-[CLDR]: https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html
-[CLDR Plural Rules chart]: https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html
+[CLDR]: https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
[go-i18n]: https://github.com/nicksnyder/go-i18n
[language key]: /configuration/languages/#language-keys
[RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646
title: math.Rand
description: Returns a pseudo-random number in the half-open interval [0.0, 1.0).
categories: []
-keywords: []
+keywords: [random]
params:
functions_and_methods:
aliases: []
signatures: [math.Rand]
---
-{{< new-in 0.121.2 />}}
-
The `math.Rand` function returns a pseudo-random number in the half-open [interval](g) [0.0, 1.0).
```go-html-template
---
title: partials.IncludeCached
-description: Executes the given template and caches the result, optionally passing context. If the partial template contains a return statement, returns the given value, else returns the rendered output.
+description: Executes the given template and caches the result, optionally passing one or more variant keys. If the partial template contains a return statement, returns the given value, else returns the rendered output.
categories: []
keywords: []
params:
```json
{
"build_date": "2025-07-08T13:12:19-07:00",
- "hugo_version": "0.148.0",
+ "hugo_version": "0.152.2",
"last_modified": "2025-07-07T22:09:13-07:00"
}
```
functions_and_methods:
aliases: [countrunes]
returnType: int
- signatures: [strings.CountRunes INPUT]
+ signatures: [strings.CountRunes STRING]
aliases: [/functions/countrunes]
---
functions_and_methods:
aliases: [countwords]
returnType: int
- signatures: [strings.CountWords INPUT]
+ signatures: [strings.CountWords STRING]
aliases: [/functions/countwords]
---
functions_and_methods:
aliases: []
returnType: string
- signatures: [strings.Repeat COUNT INPUT]
+ signatures: [strings.Repeat COUNT STRING]
aliases: [/functions/strings.repeat]
---
functions_and_methods:
aliases: []
returnType: int
- signatures: [strings.RuneCount INPUT]
+ signatures: [strings.RuneCount STRING]
aliases: [/functions/strings.runecount]
---
functions_and_methods:
aliases: [lower]
returnType: string
- signatures: [strings.ToLower INPUT]
+ signatures: [strings.ToLower STRING]
aliases: [/functions/lower]
---
functions_and_methods:
aliases: [upper]
returnType: string
- signatures: [strings.ToUpper INPUT]
+ signatures: [strings.ToUpper STRING]
aliases: [/functions/upper]
---
functions_and_methods:
aliases: [trim]
returnType: string
- signatures: [strings.Trim INPUT CUTSET]
+ signatures: [strings.Trim STRING CUTSET]
aliases: [/functions/trim]
---
params:
functions_and_methods:
returnType: string
- signatures: [strings.TrimSpace INPUT]
+ signatures: [strings.TrimSpace STRING]
---
{{< new-in 0.136.3 />}}
title: transform.CanHighlight
description: Reports whether the given code language is supported by the Chroma highlighter.
categories: []
-keywords: []
+keywords: [highlight]
params:
functions_and_methods:
aliases: []
--- /dev/null
+---
+title: transform.HTMLToMarkdown
+description: Converts HTML to Markdown.
+categories: []
+keywords: []
+params:
+ functions_and_methods:
+ returnType: string
+ signatures: [transform.HTMLToMarkdown INPUT]
+---
+
+{{< new-in "0.151.0" />}}
+
+> [!note]
+> This function is experimental and its API may change in the future.
+
+The `transform.HTMLToMarkdown` function converts HTML to Markdown by utilizing the [`html-to-markdown`][] Go package.
+
+## Usage
+
+```go-html-template
+{{ .Content | transform.HTMLToMarkdown | safeHTML }}
+```
+
+## Plugins
+
+The conversion process is enabled by the following `html-to-markdown` plugins:
+
+Plugin|Description
+:--|:--
+Base|Implements basic shared functionality
+CommonMark|Implements Markdown according to the [Commonmark Spec][]
+Table|Implements tables according to the [GitHub Flavored Markdown Spec][]
+
+[`html-to-markdown`]: https://github.com/JohannesKaufmann/html-to-markdown?tab=readme-ov-file#readme
+[Commonmark Spec]: https://spec.commonmark.org/current/
+[GitHub Flavored Markdown Spec]: https://github.github.com/gfm/
title: transform.HighlightCodeBlock
description: Highlights code received in context within a code block render hook.
categories: []
-keywords: []
+keywords: [highlight]
params:
functions_and_methods:
aliases: []
With `html` and `htmlAndMathml` you must include the KaTeX style sheet within the `head` element of your base template.
```html
- <link href="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.css" rel="stylesheet">
+ <link
+ rel="stylesheet"
+ href="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css"
+ integrity="sha384-WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi"
+ crossorigin="anonymous"
+ >
+ ```
strict
: {{< new-in 0.147.6 />}}
<head>
{{ $noop := .WordCount }}
{{ if .Page.Store.Get "hasMath" }}
- <link href="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.css" rel="stylesheet">
+ <link
+ rel="stylesheet"
+ href="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css"
+ integrity="sha384-WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi"
+ crossorigin="anonymous"
+ >
{{ end }}
</head>
```
The input can be a string or a [resource](g).
+## Options
+
+delimiter
+: (`string`) Applicable to CSV files. The delimiter used. Default is `,`.
+
+comment
+: (`string`) Applicable to CSV files. The comment character used in the CSV. If set, lines beginning with the comment character without preceding whitespace are ignored.
+
+format
+: {{< new-in 0.149.0 />}}
+: (`string`) The serialization format of the input, one of `csv`, `json`, `org`, `toml`, `xml`, or `yaml`. If empty or unspecified, Hugo infers the format from the input. For resources, this option is only needed if the file lacks an extension or to override the inferred format. For strings, it's only required when the format is ambiguous.
+
+lazyQuotes
+: (`bool`) Applicable to CSV files. Whether to allow a quote in an unquoted field, or to allow a non-doubled quote in a quoted field. Default is `false`.
+
+targetType
+: {{< new-in 0.146.7 />}}
+: (`string`) Applicable to CSV files. The target data type, either `slice` or `map`. Default is `slice`.
+
## Unmarshal a string
```go-html-template
## Working with CSV
-### Options
-
-When unmarshaling a CSV file, provide an optional map of options.
-
-delimiter
-: (`string`) The delimiter used. Default is `,`.
-
-comment
-: (`string`) The comment character used in the CSV. If set, lines beginning with the comment character without preceding whitespace are ignored.
-
-lazyQuotes
-: {{< new-in 0.122.0 />}}
-: (`bool`) Whether to allow a quote in an unquoted field, or to allow a non-doubled quote in a quoted field. Default is `false`.
-
-targetType
-: {{< new-in 0.146.7 />}}
-: (`string`) The target data type, either `slice` or `map`. Default is `slice`.
-
-### Examples
-
The examples below use this CSV file:
```csv
signatures: [transform.XMLEscape INPUT]
---
-{{< new-in 0.121.0 />}}
-
The `transform.XMLEscape` function removes [disallowed characters] as defined in the XML specification, then escapes the result by replacing the following characters with [HTML entities]:
- `"` → `"`
### Explanation of commands
-Create the [directory structure] for your project in the `quickstart` directory.
+Create the [site skeleton] for your project in the `quickstart` directory.
```text
hugo new site quickstart
[Ananke]: https://github.com/theNewDynamic/gohugo-theme-ananke
[are different applications]: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.3
[demonstration site]: https://gohugo-ananke-theme-demo.netlify.app/
-[directory structure]: /getting-started/directory-structure/
+[site skeleton]: /getting-started/directory-structure/#site-skeleton
[documentation]: https://github.com/theNewDynamic/gohugo-theme-ananke#readme
[draft, future, and expired content]: /getting-started/usage/#draft-future-and-expired-content
[draft, future, or expired content]: /getting-started/usage/#draft-future-and-expired-content
You should see something like:
```text
-hugo v0.123.0-3c8a4713908e48e6523f058ca126710397aa4ed5+extended linux/amd64 BuildDate=2024-02-19T16:32:38Z VendorInfo=gohugoio
+hugo v0.152.2-6abdacad3f3fe944ea42177844469139e81feda6+extended linux/amd64 BuildDate=2025-10-24T15:31:49Z VendorInfo=gohugoio
```
## Display available commands
## Shell script
-Create a new script called `deploy` the root of your Hugo tree:
+Create a new script called `deploy` at the root of your Hugo tree:
```txt
~/websites/topologix.fr$ editor deploy
env:
variables:
# Application versions
- DART_SASS_VERSION: 1.90.0
- GO_VERSION: 1.24.5
- HUGO_VERSION: 0.148.2
+ DART_SASS_VERSION: 1.96.0
+ GO_VERSION: 1.25.5
+ HUGO_VERSION: 0.152.2
# Time zone
TZ: Europe/Oslo
# Cache
: Create a `wrangler.toml` file in the root of your project.
```toml {file="wrangler.toml" copy=true}
- # Configure Cloudflare Worker
-
name = "hosting-cloudflare-worker"
compatibility_date = "2025-07-31"
[assets]
directory = "./public"
- not_found_handling = "404"
+ not_found_handling = "404-page"
```
Step 2
main() {
- DART_SASS_VERSION=1.90.0
- GO_VERSION=1.24.5
- HUGO_VERSION=0.148.2
- NODE_VERSION=22.18.0
+ DART_SASS_VERSION=1.96.0
+ GO_VERSION=1.25.5
+ HUGO_VERSION=0.152.2
+ NODE_VERSION=24.12.0
export TZ=Europe/Oslo
+++ /dev/null
----
-title: Host on Codeberg Pages
-description: Host your site on Codeberg Pages.
-categories: []
-keywords: []
-aliases: [/hosting-and-deployment/hosting-on-codeberg/]
----
-
-## Assumptions
-
-- Working familiarity with [Git] for version control
-- Completion of the Hugo [Quick Start]
-- A [Codeberg account]
-- A Hugo website on your local machine that you are ready to publish
-
-[Codeberg account]: https://codeberg.org/user/login/
-[Git]: https://git-scm.com/
-[Quick Start]: /getting-started/quick-start/
-
-Any and all mentions of `<YourUsername>` refer to your actual Codeberg username and must be substituted accordingly. Likewise, `<YourWebsite>` represents your actual website name.
-
-## BaseURL
-
-The [`baseURL`] in your site configuration must reflect the full URL provided by Codeberg Pages if using the default address (e.g. `https://<YourUsername>.codeberg.page/`). If you want to use another domain, follow the instructions in the [custom domain section] of the official documentation.
-
-[`baseURL`]: /configuration/all/#baseurl
-[custom domain section]: https://docs.codeberg.org/codeberg-pages/using-custom-domain/
-
-For more details regarding the URL of your deployed website, refer to Codeberg Pages' [quickstart instructions].
-
-[quickstart instructions]: https://codeberg.page/
-
-## Manual deployment
-
-Create a public repository on your Codeberg account titled `pages` or create a branch of the same name in an existing public repository. Finally, push the contents of Hugo's output directory (by default, `public`) to it. Here's an example:
-
-```sh
-# build the website
-hugo
-
-# access the output directory
-cd public
-
-# initialize new git repository
-git init
-
-# commit and push code to main branch
-git add .
-git commit -m "Initial commit"
-git remote add origin https://codeberg.org/<YourUsername>/pages.git
-git push -u origin main
-```
-
-## Automated deployment
-
-You can automatically deploy your Hugo website to Codeberg using one of two methods: Woodpecker CI or Forgejo Actions.
-
-### Woodpecker CI
-
-To use Codeberg's Woodpecker CI, you need to have or [request] access to it, as well as add a `.woodpecker.yaml` file in the root of your project. A template and additional instructions are available in the official [examples repository].
-
-[request]: https://codeberg.org/Codeberg-e.V./requests/issues/new?template=ISSUE_TEMPLATE%2fWoodpecker-CI.yaml
-[examples repository]: https://codeberg.org/Codeberg-CI/examples/src/branch/main/Hugo/.woodpecker.yaml
-
-In this case, you must create a public repository on Codeberg (e.g. `<YourWebsite>`) and push your local project to it. Here's an example:
-
-```sh
-# initialize new git repository
-git init
-
-# add /public directory to our .gitignore file
-echo "/public" >> .gitignore
-
-# commit and push code to main branch
-git add .
-git commit -m "Initial commit"
-git remote add origin https://codeberg.org/<YourUsername>/<YourWebsite>.git
-git push -u origin main
-```
-
-Your project will then be built and deployed by Codeberg's Woodpecker CI.
-
-### Forgejo Actions
-
-The other way to deploy your website to Codeberg pages automatically is to make use of Forgejo Actions. Actions need a _runner_ to work, and Codeberg has [great documentation] on how to set one up yourself. However, Codeberg provides a [handful of humble runners] themselves (they say this feature is in "open alpha"), which actually seem powerful enough to build at least relatively simple websites.
-
-[great documentation]: https://docs.codeberg.org/ci/actions/
-[handful of humble runners]: https://codeberg.org/actions/meta
-
-To deploy your website this way, you don't need to request any access. All you need to do is enable actions in your repository settings (see the documentation link above) and add a workflow configuration file, for example, `hugo.yaml`, to the `.forgejo/workflows/` directory in your website's source repository.
-
-Two examples of such a file are provided below.
-
-The first file should work for automatically building your website from the source branch (`main` in this case) and committing the result to the target branch (`pages`). Without changes, this file should make your built website accessible under `https://<YourUsername>.codeberg.page/<YourWebsiteRepositoryName>/`:
-
-```yaml {file=".forgejo/workflows/hugo.yaml" copy=true}
-name: Deploy Hugo site to Pages
-
-on:
- # Runs on pushes targeting the default branch
- push:
- branches:
- # If you want to build from a different branch, change it here.
- - main
- # Allows you to run this workflow manually from the Actions tab
- workflow_dispatch:
-
-jobs:
- build:
- # You can find the list of available runners on https://codeberg.org/actions/meta, or run one yourself.
- runs-on: codeberg-tiny-lazy
- container:
- # Specify "hugomods/hugo:exts" if you want to always use the latest version of Hugo for building.
- image: "hugomods/hugo:exts-0.148.0"
- steps:
- - name: Clone the repository
- uses: https://code.forgejo.org/actions/checkout@v4
- with:
- submodules: recursive
- fetch-depth: 0
- - name: Generate static files with Hugo
- env:
- # For maximum backward compatibility with Hugo modules
- HUGO_ENVIRONMENT: production
- HUGO_ENV: production
- run: |
- hugo \
- --gc \
- --minify
- - name: Upload generated files
- uses: https://code.forgejo.org/actions/upload-artifact@v3
- with:
- name: Generated files
- path: public/
- deploy:
- needs: [ build ]
- runs-on: codeberg-tiny-lazy
- steps:
- - name: Clone the repository
- uses: https://code.forgejo.org/actions/checkout@v4
- with:
- submodules: recursive
- fetch-depth: 0
- - name: Checkout the target branch and clean it up
- # If you want to commit to a branch other than "pages", change the two references below, as well as the reference in the last step.
- run: |
- git checkout pages || git switch --orphan pages && \
- rm -Rfv $(ls -A | egrep -v '^(\.git|LICENSE)$')
- - name: Download generated files
- uses: https://code.forgejo.org/actions/download-artifact@v3
- with:
- name: Generated files
- - name: Publish the website
- run: |
- git config user.email codeberg-ci && \
- git config user.name "Codeberg CI" && \
- git add . && \
- git commit --allow-empty --message "Codeberg build for ${GITHUB_SHA}" && \
- git push origin pages
-```
-
-The second file implements a more complex scenario: having your website sources in one repository and the resulting static website in another repository (in this case, `pages`). If you want Codeberg to make your website available at the root of your pages subdomain (`https://<YourUsername>.codeberg.page/`), you have to push that website to the default branch of your repository named `pages`.
-
-Since this action involves more than one repository, it will require a bit more preparation:
-
-1. Create the target repository. Name it `pages`.
-1. Generate a new SSH key. Do not use any of your own SSH keys for this, but generate one for this specific task only. On Linux, BSD, and, likely, other operating systems, you can open a terminal emulator and run the following command to generate the key:
-
- ```shell
- ssh-keygen -f pagesbuild -P ""
- ```
-
- This will generate two files in your current directory: `pagesbuild` (private key) and `pagesbuild.pub` (public key).
-
-1. Add the newly generated public key as a deploy key to your `pages` repository: navigate to its Settings, click on "Deploy keys" in the left menu, click the "Add deploy key" button, give it a name (e.g. "Actions deploy key"), paste the contents of the **public** key file (`pagesbuild.pub`) to the Content field, tick the "Enable write access" checkbox, then submit the form.
-1. Navigate back to your source repository settings, expand the "Actions" menu and click on "Secrets". Then click "Add Secret", enter "DEPLOY_KEY" as the secret name and paste the contents of the newly generated **private** key file (`pagesbuild`) into the Value field.
-1. Navigate to the "Variables" submenu of the "Actions" menu and add the following variables:
-
-Name|Value
-:--|:--
-`TARGET_REPOSITORY`|`<YourUsername>/pages`
-`TARGET_BRANCH`|`main` (enter the default branch name of the `pages` repo here)
-`SSH_KNOWN_HOSTS`|(paste the output you get by running `ssh-keyscan codeberg.org` in the terminal)
-
-Once you've done all of the above, commit the following file to your repository as `.forgejo/workflows/hugo.yaml`. As you can see, the `deploy` job of this workflow is slightly different from the file above:
-
-```yaml {file=".forgejo/workflows/hugo.yaml" copy=true}
-name: Deploy Hugo site to Pages
-
-on:
- # Runs on pushes targeting the default branch
- push:
- branches:
- # If you want to build from a different branch, change it here.
- - main
- # Allows you to run this workflow manually from the Actions tab
- workflow_dispatch:
-
-jobs:
- build:
- runs-on: codeberg-tiny-lazy
- container:
- # Specify "hugomods/hugo:exts" if you want to always use the latest version of Hugo for building.
- image: "hugomods/hugo:exts-0.148.0"
- steps:
- - name: Clone the repository
- uses: https://code.forgejo.org/actions/checkout@v4
- with:
- submodules: recursive
- fetch-depth: 0
- - name: Generate static files with Hugo
- env:
- # For maximum backward compatibility with Hugo modules
- HUGO_ENVIRONMENT: production
- HUGO_ENV: production
- run: |
- hugo \
- --gc \
- --minify \
- --source ${PWD} \
- --destination ${PWD}/public/
- - name: Upload generated files
- uses: https://code.forgejo.org/actions/upload-artifact@v3
- with:
- name: Generated files
- path: public/
- deploy:
- needs: [ build ]
- runs-on: codeberg-tiny-lazy
- steps:
- - name: Clone the repository
- uses: https://code.forgejo.org/actions/checkout@v4
- with:
- repository: ${{ vars.TARGET_REPOSITORY }}
- ref: ${{ vars.TARGET_BRANCH }}
- submodules: recursive
- fetch-depth: 0
- ssh-key: ${{ secrets.DEPLOY_KEY }}
- ssh-known-hosts: ${{ vars.SSH_KNOWN_HOSTS }}
- - name: Remove all files
- run: |
- rm -Rfv $(ls -A | egrep -v '^(\.git|LICENSE)$')
- - name: Download generated files
- uses: https://code.forgejo.org/actions/download-artifact@v3
- with:
- name: Generated files
- - name: Commit and push the website
- run: |
- git config user.email codeberg-ci && \
- git config user.name "Codeberg CI" && \
- git add -v . && \
- git commit -v --allow-empty --message "Codeberg build for ${GITHUB_SHA}" && \
- git push -v origin ${{ vars.TARGET_BRANCH }}
-```
-
-Once you commit one of the two files to your website source repository, you should see your first automated build firing up pretty soon. You can also trigger it manually by navigating to the **Actions** section of your repository web page, choosing **hugo.yaml** on the left and clicking on **Run workflow**.
-
-## Forgejo Actions custom domains
-
-Codeberg Pages relies on a `.domains` file to identify allowed domains for a specific branch. It's important that this file is located in the root directory of your output repository or branch, rather than in the root directory of your source files. To achieve this, simply place your `.domains` file in the `static` directory of your project. When your site is built, it will be automatically copied to the `public` directory, which serves as the root of your output.
-
-When looking at the example `.forgejo/workflows/hugo.yaml`, you'll notice that the `upload-artifact@v3` action is used to upload the public directory to the deployment branch.
-
-By default, both `upload-artifact@v3` and `upload-artifact@v4` exclude all dot files from being uploaded unless you specifically tell them not to (you can find more details [here]).
-
-By default, upload-artifact@v3 and upload-artifact@v4 exclude all dot files from being uploaded. You can find more details on [how to handle dot files and other file patterns in the documentation](https://github.com/actions/upload-artifact/issues/602). To make sure dot files are included, modify your workflow like this:
-
-```yaml {file=".forgejo/workflows/hugo.yaml" copy=true}
- - name: Upload generated files
- uses: https://code.forgejo.org/actions/upload-artifact@v3
- with:
- name: Generated files
- path: public/
- include-hidden-files: true # Prevents excluding .domains from uploading
-```
-
-If you're using a custom domain, it's important to update your workflow file accordingly.
-
-## Other resources
-
-- [Codeberg Pages](https://codeberg.page/)
-- [Codeberg Pages official documentation](https://docs.codeberg.org/codeberg-pages/)
build:
runs-on: ubuntu-latest
env:
- DART_SASS_VERSION: 1.90.0
- GO_VERSION: 1.24.5
- HUGO_VERSION: 0.148.2
- NODE_VERSION: 22.18.0
+ DART_SASS_VERSION: 1.96.0
+ GO_VERSION: 1.25.5
+ HUGO_VERSION: 0.152.2
+ NODE_VERSION: 24.12.0
TZ: Europe/Oslo
steps:
- name: Checkout
```yaml {file=".gitlab-ci.yml" copy=true}
variables:
# Application versions
- DART_SASS_VERSION: 1.90.0
- HUGO_VERSION: 0.148.2
- NODE_VERSION: 22.18.0
+ DART_SASS_VERSION: 1.96.0
+ HUGO_VERSION: 0.152.2
+ NODE_VERSION: 24.12.0
# Git
GIT_DEPTH: 0
GIT_STRATEGY: clone
TZ: Europe/Oslo
image:
- name: golang:1.24.5-bookworm
+ name: golang:1.25.5-bookworm
pages:
stage: deploy
## Procedure
+<!-- Using "text" as the code block language because "toml" looks terrible. -->
+
Step 1
-: Log in to your Netlify account, navigate to the Sites page, press the **Add new site** button, and choose "Import an existing project" from the dropdown menu.
+: Create a `netlify.toml` file in the root of your project.
+
+ ```text {file="netlify.toml" copy=true}
+ [build.environment]
+ DART_SASS_VERSION = "1.96.0"
+ GO_VERSION = "1.25.5"
+ HUGO_VERSION = "0.152.2"
+ NODE_VERSION = "24.12.0"
+ TZ = "Europe/Oslo"
+
+ [build]
+ publish = "public"
+ command = """\
+ git config core.quotepath false && \
+ hugo --gc --minify --baseURL "${URL}"
+ """
+ ```
+
+ If your site requires Dart Sass to transpile Sass to CSS, set the `DART_SASS_VERSION` and include the Dart Sass installation in the build step.
+
+ ```text {file="netlify.toml" copy=true}
+ [build.environment]
+ DART_SASS_VERSION = "1.96.0"
+ GO_VERSION = "1.25.5"
+ HUGO_VERSION = "0.152.2"
+ NODE_VERSION = "24.12.0"
+ TZ = "Europe/Oslo"
+
+ [build]
+ publish = "public"
+ command = """\
+ curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
+ tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
+ rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
+ export PATH="${HOME}/.local/dart-sass:${PATH}" && \
+ git config core.quotepath false && \
+ hugo --gc --minify --baseURL "${URL}"
+ """
+ ```
Step 2
-: Select your deployment method.
-
- 
+: Commit the changes to your local Git repository and push to your GitHub repository.
Step 3
-: Authorize Netlify to connect with your GitHub account by pressing the **Authorize Netlify** button.
+: In the upper right corner of the Netlify dashboard, press the **Add new project** button and select “Import an existing project".
- 
+ 
Step 4
-: Press the **Configure Netlify on GitHub** button.
+: Connect to GitHub.
- 
+ 
Step 5
-: Install the Netlify app by selecting your GitHub account.
+: Press the "Authorize Netlify" button to allow the Netlify application to access your GitHub account.
- 
+ 
Step 6
-: Press the **Install** button.
-
- 
+: Press the **Configure Netlify on GitHub** button.
+
+ 
Step 7
-: Click on the site's repository from the list.
+: Select the GitHub account where you want to install the Netlify application.
- 
+ 
Step 8
-: Set the site name and branch from which to deploy.
+: Authorize the Netlify application to access all repositories or only select repositories, then press the Install button.
- 
+ 
+
+Your browser will be redirected to the Netlify dashboard.
Step 9
-: Define the build settings, press the **Add environment variables** button, then press the **New variable** button.
+: Click on the name of the repository you wish to import.
- 
+ 
Step 10
-: Create a new environment variable named `HUGO_VERSION` and set the value to the [latest version](https://github.com/gohugoio/hugo/releases/latest).
+: On the "Review configuration" page, enter a project name, leave the settings at their default values, then press the **Deploy** button.
+
+ 
- 
+ 
Step 11
-: Press the "Deploy my new site" button at the bottom of the page.
-
- 
-
-Step 12
-: At the bottom of the screen, wait for the deploy to complete, then click on the deploy log entry.
-
- 
-
-Step 13
-: Press the **Open production deploy** button to view the live site.
-
- 
-
-## Configuration file
-
-In the procedure above we configured our site using the Netlify user interface. Most site owners find it easier to use a configuration file checked into source control.
-
-Create a new file named `netlify.toml` in the root of your project directory. In its simplest form, the configuration file might look like this:
-
-```toml {file="netlify.toml"}
-[build.environment]
-GO_VERSION = "1.24.5"
-HUGO_VERSION = "0.148.2"
-NODE_VERSION = "22.18.0"
-TZ = "Europe/Oslo"
-
-[build]
-publish = "public"
-command = """\
- git config core.quotepath false && \
- hugo --gc --minify --baseURL "${URL}"
- """
-```
-
-If your site requires Dart Sass to transpile Sass to CSS, the configuration file should look something like this:
-
-```toml {file="netlify.toml"}
-[build.environment]
-DART_SASS_VERSION = "1.90.0"
-GO_VERSION = "1.24.5"
-HUGO_VERSION = "0.148.2"
-NODE_VERSION = "22.18.0"
-TZ = "Europe/Oslo"
-
-[build]
-publish = "public"
-command = """\
- curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
- tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
- rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
- export PATH="${HOME}/.local/dart-sass:${PATH}" && \
- git config core.quotepath false && \
- hugo --gc --minify --baseURL "${URL}"
- """
-```
+: When the deployment completes, click on the link to your published site.
+
+ 
+
+In the future, whenever you push a change from your local Git repository, Netlify will rebuild and deploy your site.
staticPublishPath: public
envVars:
- key: DART_SASS_VERSION
- value: 1.90.0
+ value: 1.96.0
- key: GO_VERSION
- value: 1.24.5
+ value: 1.25.5
- key: HUGO_VERSION
- value: 0.148.2
+ value: 0.152.2
- key: NODE_VERSION
- value: 22.18.0
+ value: 24.12.0
- key: TZ
value: Europe/Oslo
```
## Manual deployment
-This method does not require a paid account. To proceed you will need to create a [SourceHut personal access token] and install and configure the [hut]CLI tool:
+This method does not require a paid account. To proceed you will need to create a [SourceHut personal access token] and install and configure the [hut] CLI tool:
-[SourceHut personal access token]: https://meta.sr.ht/oauth2/personal-token/
+[SourceHut personal access token]: https://meta.sr.ht/oauth2/personal-token
[hut]: https://sr.ht/~xenrox/hut/
```sh
main() {
- DART_SASS_VERSION=1.90.0
- GO_VERSION=1.24.5
- HUGO_VERSION=0.148.2
- NODE_VERSION=22.18.0
+ DART_SASS_VERSION=1.96.0
+ GO_VERSION=1.25.5
+ HUGO_VERSION=0.152.2
+ NODE_VERSION=24.12.0
export TZ=Europe/Oslo
Some example projects:
-[https://github.com/bep/docuapi](https://github.com/bep/docuapi)
-: A theme that has been ported to Hugo Modules while testing this feature. It is a good example of a non-Hugo-project mounted into Hugo's directory structure. It even shows a JS Bundler implementation in regular Go templates.
+<https://github.com/bep/docuapi>
+: A theme that has been ported to Hugo Modules while testing this feature. It is a good example of a non-Hugo-project mounted into Hugo's directory structure.
-[https://github.com/bep/my-modular-site](https://github.com/bep/my-modular-site)
+<https://github.com/bep/my-modular-site>
: A simple site used for testing.
sudo apt install hugo
```
-You can also download Debian packages from the [latest release] page.
+You can also download Debian packages from the [latest release][] page.
### Exherbo
[GeckoLinux]: https://geckolinux.github.io/
[Gentoo]: https://www.gentoo.org/
[KDE neon]: https://neon.kde.org/
+[latest release]: https://github.com/gohugoio/hugo/releases/latest
[latest version]: https://github.com/gohugoio/hugo/releases/latest
[Linux Karmada]: https://linuxkamarada.com/
[Linux Lite]: https://www.linuxliteos.com/
signatures: [MENUENTRY.PageRef]
---
-The use case for this method is rare.
-
-In almost also scenarios you should use the [`URL`] method instead.
+> [!note]
+> The use case for this method is rare.
+> In almost also scenarios you should use the [`URL`] method instead.
## Explanation
signatures: [PAGE.IsNode]
---
-The `IsNode` method on a `Page` object returns `true` if the [page kind](g) is `home`, `section`, `taxonomy`, or `term`.
-
-It returns `false` is the page kind is `page`.
+The `IsNode` method on a `Page` object checks if the [page kind](g) is one of the following: `home`, `section`, `taxonomy`, or `term`. If it is, the method returns `true`, indicating the page is a [node](g). Otherwise, if the page kind is page, it returns `false`.
```text
content/
├── books/
│ ├── book-1/
-│ │ └── index.md <-- kind = page, node = false
-│ ├── book-2.md <-- kind = page, node = false
-│ └── _index.md <-- kind = section, node = true
-├── tags/
-│ ├── fiction/
-│ │ └── _index.md <-- kind = term, node = true
-│ └── _index.md <-- kind = taxonomy, node = true
-└── _index.md <-- kind = home, node = true
+│ │ └── index.md <-- kind = page IsNode = false
+│ ├── book-2.md <-- kind = page IsNode = false
+│ └── _index.md <-- kind = section IsNode = true
+├── tags
+│ ├── fiction
+│ │ └── _index.md <-- kind = term IsNode = true
+│ └── _index.md <-- kind = taxonomy IsNode = true
+└── _index.md <-- kind = home IsNode = true
```
```go-html-template
{{ end }}
```
+> [!warning]
+> Automatic `.Summary` may cut block tags (e.g., `blockquote`) in the middle, causing the browser to recover the end tag. See [automatic summary] for details and for ways to avoid this.
+
Depending on content length and how you define the summary, the summary may be equivalent to the content itself. To determine whether the content length exceeds the summary length, use the [`Truncated`] method on a `Page` object. This is useful for conditionally rendering a “read more” link:
```go-html-template
[`Truncated`]: /methods/page/truncated
[summary]: /content-management/summaries/
+[automatic summary]: /content-management/summaries/#automatic-summary
signatures: [SITE.Home]
---
-This method is useful for obtaining a link to the home page.
+The `Home` method on a `Site` object is a convenient way to access the home page, and is functionally equivalent to:
+
+```go-html-template
+{{ .Site.GetPage "/" }}
+```
+
+Because it returns a `Page` object, you can use any of the available [page methods][] by chaining them. For example:
+
+```go-html-template
+{{ .Site.Home.Store.Set "greeting" "Hello" }}
+```
+
+This method is commonly used to generate a link to the home page. For example:
Site configuration:
{{ .Site.Home.Permalink }} → https://example.org/docs/
{{ .Site.Home.RelPermalink }} → /docs/
```
+
+[page methods]: /methods/page/
signatures: [TAXONOMY.ByCount]
---
-The `ByCount` method on a `Taxonomy` object returns an [ordered taxonomy](g), sorted by the number of pages associated with each [term](g).
+The `ByCount` method on a `Taxonomy` object returns an [ordered taxonomy](g), sorted by the number of pages associated with each [term](g), then sorted alphabetically by term in the event of a tie.
While a `Taxonomy` object is a [map](g), an ordered taxonomy is a [slice](g), where each element is an object that contains the term and a slice of its [weighted pages](g).
---
title: archetype
-details: /content-management/archetypes
+params:
+ reference: /content-management/archetypes/
---
An _archetype_ is a template for new content.
--- /dev/null
+---
+title: component
+---
+
+A _component_ is a collection of related files, housed within the [_unified file system_](g), that fulfills a specific function in building a Hugo website. These components are categorized into seven types: [_archetypes_](g), assets, content, data, templates, [_translation tables_](g), and static files, and can be defined within the project or provided by [_modules_](g).
+
+ Each component has a dedicated directory within the unified file system:
+
+ Component|Directory within the unified file system
+ :--|:--
+ archetypes|`archetypes`
+ assets|`assets`
+ content|`content`
+ data|`data`
+ templates|`layouts`
+ translation tables|`i18n`
+ static files|`static`
---
title: module
-reference: /hugo-modules/
---
-A _module_ is a packaged combination of [_archetypes_](g), assets, content, data, [_templates_](g), translation tables, static files, or configuration settings. A module may serve as the basis for a new site, or to augment an existing site.
+A _module_ is a packaged combination of [_components_](g) which may include [_archetypes_](g), assets, content, data, templates, [_translation tables_](g), and static files. A module may be a [_theme_](g), a complete project, or a smaller collection of one or more components.
--- /dev/null
+---
+title: mount
+params:
+ reference: /configuration/module
+---
+
+A _mount_ is a configuration object that maps a file system path (source) to a [_component_](g) path (target) within Hugo's [_unified file system_](g).
--- /dev/null
+---
+title: seed
+reference: https://en.wikipedia.org/wiki/Random_seed
+---
+
+A _seed_ is the starting point for a computer algorithm that generates pseudo-random numbers. Using the same seed will always produce the identical sequence of numbers, which is essential for reproducibility in areas like simulations, cryptography, and video games.
title: theme
---
-A _theme_ is a packaged combination of [_archetypes_](g), assets, content, data, [_templates_](g), translation tables, static files, or configuration settings. A theme may serve as the basis for a new site, or to augment an existing site.
+A _theme_ is a [_module_](g) that delivers a complete set of [components](g) defining a site's layout, presentation, and behavior. While every theme is a module, not every module is a theme.
--- /dev/null
+---
+title: translation table
+---
+
+A _translation table_ is a data file within the `i18n` directory, holding translations for a single language.
--- /dev/null
+---
+title: unified file system
+---
+
+Hugo's _unified file system_ provides a layered view for each of its seven [_component_](g) types: [_archetypes_](g), assets, content, data, templates, [_translation tables_](g), and static files. Project component directories are layered over [_module_](g) component directories. Hugo searches these layers in order to locate files.
[Chroma]: https://github.com/alecthomas/chroma/
[code fence]: https://spec.commonmark.org/current/#code-fence
[diagrams]: /content-management/diagrams/#mermaid-diagrams
-[embedded code block render hook]: {{% eturl render-codeblock-goat %}}
+[embedded code block render hook]: <{{% eturl render-codeblock-goat %}}>
[GoAT diagrams]: /content-management/diagrams/#goat-diagrams-ascii
[highlighting options]: /functions/transform/highlight/#options
[info string]: https://spec.commonmark.org/current/#info-string
[`RenderShortcodes`]: /methods/page/rendershortcodes
[CommonMark specification]: https://spec.commonmark.org/current/
[duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
-[embedded image render hook]: {{% eturl render-image %}}
+[embedded image render hook]: <{{% eturl render-image %}}>
[Markdown attributes]: /content-management/markdown-attributes/
[`RenderShortcodes`]: /methods/page/rendershortcodes
[CommonMark specification]: https://spec.commonmark.org/current/
[duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
-[embedded link render hook]: {{% eturl render-link %}}
+[embedded link render hook]: <{{% eturl render-link %}}>
<head>
{{ $noop := .WordCount }}
{{ if .Page.Store.Get "hasMath" }}
- <link href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" rel="stylesheet">
+ <link
+ rel="stylesheet"
+ href="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css"
+ integrity="sha384-WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi"
+ crossorigin="anonymous"
+ >
{{ end }}
</head>
```
details > :not(summary) { }
```
-[source code]: {{% eturl details %}}
+[source code]: <{{% eturl details %}}>
target = 'assets'
{{< /code-toggle >}}
-[source code]: {{% eturl figure %}}
+[source code]: <{{% eturl figure %}}>
[content format]: /content-management/formats/
[highlighting styles]: /quick-reference/syntax-highlighting-styles/
[site configuration]: /configuration/markup/#highlight
-[source code]: {{% eturl highlight %}}
+[source code]: <{{% eturl highlight %}}>
[supported languages]: /content-management/syntax-highlighting/#languages
simple
: (`bool`) Whether to enable simple mode for image card generation. If `true`, Hugo creates a static card without JavaScript. This mode only supports image cards, and the image is fetched directly from Instagram's servers. Default is `false`.
-[source code]: {{% eturl instagram %}}
+[source code]: <{{% eturl instagram %}}>
{{%/* param my.nested.param */%}}
```
-[source code]: {{% eturl param %}}
+[source code]: <{{% eturl param %}}>
[`publishDir`]: /configuration/all/#publishdir
[QR code]: https://en.wikipedia.org/wiki/QR_code
[related documentation]: /functions/images/qr/
-[source code]: {{% eturl qr %}}
+[source code]: <{{% eturl qr %}}>
[vCard]: <https://en.wikipedia.org/wiki/VCard>
[duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
[embedded link render hook]: /render-hooks/links/#embedded
[Markdown notation]: /content-management/shortcodes/#notation
-[source code]: {{% eturl relref %}}
+[source code]: <{{% eturl relref %}}>
[duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
[embedded link render hook]: /render-hooks/links/#embedded
[Markdown notation]: /content-management/shortcodes/#notation
-[source code]: {{% eturl relref %}}
+[source code]: <{{% eturl relref %}}>
simple
: (`bool`) Whether to enable simple mode. If `true`, the video thumbnail is fetched from Vimeo and overlaid with a play button. Clicking the thumbnail opens the video in a new Vimeo tab. Default is `false`.
-The source code for the simple version of the shortcode is available [here].
+The source code for the simple version of the shortcode is available [in this file].
-[here]: {{% eturl vimeo_simple %}}
-[source code]: {{% eturl vimeo %}}
+[in this file]: <{{% eturl vimeo_simple %}}>
+[source code]: <{{% eturl vimeo %}}>
simple
: (`bool`) Whether to enable simple mode. If `true`, Hugo builds a static version of the of the post without JavaScript. Default is `false`.
-The source code for the simple version of the shortcode is available [here].
+The source code for the simple version of the shortcode is available [in this file].
If you enable simple mode you may want to disable the hardcoded inline styles by setting `disableInlineCSS` to `true` in your site configuration. The default value for this setting is `false`.
{{< code-toggle config=services.x />}}
-[here]: {{% eturl x_simple %}}
-[source code]: {{% eturl x %}}
+[in this file]: <{{% eturl x_simple %}}>
+[source code]: <{{% eturl x %}}>
## Disqus
> [!note]
-> To override Hugo's embedded Disqus template, copy the [source code]({{% eturl disqus %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
+> To override Hugo's embedded Disqus template, copy the [source code](<{{% eturl disqus %}}>) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
>
> `{{ partial "disqus.html" . }}`
## Google Analytics
> [!note]
-> To override Hugo's embedded Google Analytics template, copy the [source code]({{% eturl google_analytics %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
+> To override Hugo's embedded Google Analytics template, copy the [source code](<{{% eturl google_analytics %}}>) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
>
> `{{ partial "google_analytics.html" . }}`
## Open Graph
> [!note]
-> To override Hugo's embedded Open Graph template, copy the [source code]({{% eturl opengraph %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
+> To override Hugo's embedded Open Graph template, copy the [source code](<{{% eturl opengraph %}}>) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
>
> `{{ partial "opengraph.html" . }}`
## Schema
> [!note]
-> To override Hugo's embedded Schema template, copy the [source code]({{% eturl schema %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
+> To override Hugo's embedded Schema template, copy the [source code](<{{% eturl schema %}}>) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
>
> `{{ partial "schema.html" . }}`
## X (Twitter) Cards
> [!note]
-> To override Hugo's embedded Twitter Cards template, copy the [source code]({{% eturl twitter_cards %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
+> To override Hugo's embedded Twitter Cards template, copy the [source code](<{{% eturl twitter_cards %}}>) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
>
> `{{ partial "twitter_cards.html" . }}`
## Actions
-In the examples above the paired opening and closing braces represent the beginning and end of a template action, a data evaluation or control structure within a template.
+In the examples above, the paired opening and closing braces represent the beginning and end of a template action, a data evaluation or control structure within a template.
-A template action may contain literal values ([boolean](g), [string](g), [integer](g), and [float](g)), variables, functions, and methods.
+A template action may contain literal values ([boolean](g), [string](g), [integer](g), and [float](g)), the [current context](#current-context), [variables](#variables), [functions](#functions), [methods](#methods), and the [`nil`](#nil) keyword.
```go-html-template {file="layouts/page.html"}
{{ $convertToLower := true }}
- `$convertToLower` is a variable
- `true` is a literal boolean value
+- `if` is the beginning of a control structure
- `strings.ToLower` is a function that converts all characters to lowercase
- `Title` is a method on a the `Page` object
+- `end` is the end of a control structure
Hugo renders the above to:
-```html
+```html {trim=false}
<h2>my page title</h2>
}}
```
+### Nil
+
+Other than using the `nil` keyword in comparisons, you may not use it as an argument to any function or method, nor may you assign it to a variable. For example, these are valid uses of the `nil` keyword:
+
+```go-html-template
+{{ if gt 42 nil }}
+ <p>42 is greater than nil</p>
+{{ end }}
+
+{{ $pages := where .Site.RegularPages "Params.color" "ne" nil }}
+```
+
+These, on the other hand, are invalid:
+
+```go-html-template
+{{ $a := nil }}
+{{ add 3 nil }}
+{{ nil | print}}
+```
+
+The actions above throw an error.
+
## Variables
A variable is a user-defined [identifier](g) prepended with a dollar sign (`$`), representing a value of any data type, initialized or assigned within a template action. For example, `$foo` and `$bar` are variables.
[`with`]: /functions/go-template/with/
[current context]: #current-context
[embedded templates]: /templates/embedded/
-[front matter]: /content-management/front-matter/
[front matter fields]: /content-management/front-matter/#fields
+[front matter]: /content-management/front-matter/
[functions]: /functions/
[go-templates]: /functions/go-template/
[html/template]: https://pkg.go.dev/html/template
[`Paginator`]: /methods/page/paginator/
[`partial`]: /functions/partials/include/
[grouping methods]: /quick-reference/page-collections/#group
-[source code]: {{% eturl pagination %}}
+[source code]: <{{% eturl pagination %}}>
>
> Remember that Hugo copies everything in the static director to the root of `publishDir` (typically `public`) when you build your site.
-[embedded template]: {{% eturl robots %}}
+[embedded template]: <{{% eturl robots %}}>
[site configuration]: /configuration/
RSS templates receive the `.Page` and `.Site` objects in context.
-[embedded RSS template]: {{% eturl rss %}}
+[embedded RSS template]: <{{% eturl rss %}}>
Shortcode name|Output format|Language|Template path
:--|:--|:--|:--
-foo|json|en|`layouts/_shortcodes/foo.en.json`
-foo|json|en|`layouts/_shortcodes/foo.json`
-foo|json|en|`layouts/_shortcodes/foo.json.json`
-foo|json|en|`layouts/_shortcodes/foo.json.en.json`
+foo|rss|en|`layouts/_shortcodes/foo.en.rss.xml`
+foo|rss|en|`layouts/_shortcodes/foo.rss.xml`
+foo|rss|en|`layouts/_shortcodes/foo.en.xml`
+foo|rss|en|`layouts/_shortcodes/foo.xml`
## Methods
{{</ code-toggle >}}
[`publishDir`]: /configuration/all/#publishdir
-[embedded sitemap template]: {{% eturl sitemap %}}
-[embedded sitemapindex template]: {{% eturl sitemapindex %}}
+[embedded sitemap template]: <{{% eturl sitemap %}}>
+[embedded sitemapindex template]: <{{% eturl sitemapindex %}}>
[sitemap protocol]: https://www.sitemaps.org/protocol.html
```
<!-- https://github.com/gohugoio/hugo/pull/13614#issuecomment-2805977008 -->
-Unlike other template types, Hugo does not consider the current page kind, content type, logical path, language, or output format when searching for a matching _partial_ template. However, it _does_ apply the same name matching logic it uses for other template types. This means it tries to find the most specific match first, then progressively looks for more general versions if the specific one isn't found.
+Unlike other template types, Hugo does not consider the current page kind, content type, logical path, language, or output format when searching for a matching _partial_ template. However, it _does_ apply the same _name_ matching logic it uses for other template types. This means it tries to find the most specific match first, then progressively looks for more general versions if the specific one isn't found.
For example, with this call:
- Inherit the context of the current page
- Can target any page kind, content type, logical path, language, or output format
+- Can reside at any level within the `layouts` directory
For example, Hugo applies a _base_ template to the _home_ template below, then renders the page content and a card component for each page within the "films" section of your site.
[Syntax Highlighting for Hugo Shortcodes](https://marketplace.visualstudio.com/items?itemName=kaellarkin.hugo-shortcode-syntax)
: This extension adds some syntax highlighting for Shortcodes, making visual identification of individual pieces easier.
+## JetBrains IDEs
+
+[Smart Hugo](https://smarthugo.dev)
+: Plugin for IntelliJ IDEA, WebStorm, PhpStorm, and other JetBrains IDEs that adds Hugo template support including syntax highlighting, actions completion, code formatting, and optional advanced features.
+
## Emacs
[emacs-easy-hugo](https://github.com/masasam/emacs-easy-hugo)
- Aliases:
- docker
- dockerfile
+ - containerfile
Name: Docker
- Aliases:
- dtd
- gdscript3
- gd3
Name: GDScript3
+ - Aliases:
+ - gemtext
+ - gmi
+ - gmni
+ - gemini
+ Name: Gemtext
- Aliases:
- genshi
- kid
- Aliases:
- llvm
Name: LLVM
+ - Aliases: null
+ Name: lox
- Aliases:
- lua
- luau
- nsi
- nsh
Name: NSIS
+ - Aliases:
+ - nu
+ Name: Nu
- Aliases:
- objective-c
- objectivec
- '**'
high: 0s
low: 0s
+ respectCacheControlNoStoreInRequest: true
+ respectCacheControlNoStoreInResponse: false
archeTypeDir: archetypes
assetDir: assets
- author: null
+ author: {}
baseURL: ""
build:
buildStats:
enable: false
superscript:
enable: false
- footnote: true
+ footnote:
+ backlinkHTML: '↩︎'
+ enable: true
+ enableAutoIDPrefix: false
linkify: true
linkifyProtocol: https
passthrough:
tdewolff:
css:
inline: false
- keepCSS2: true
+ keepCSS2: false
precision: 0
+ version: 0
html:
keepComments: false
keepConditionalComments: false
- ^postcss$
- ^tailwindcss$
osEnv:
- - (?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE)$
+ - (?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE|PROGRAMDATA)$
funcs:
getenv:
- ^HUGO_
- (?i)GET|POST
urls:
- .*
- segments: null
+ segments: {}
server:
headers: null
redirects:
timeout: 60s
title: ""
titleCaseStyle: AP
- uglyURLs: null
+ uglyURLs: {}
workingDir: ""
config_helpers:
mergeStrategy:
- - '{{ slice "a" "b" "c" "d" "e" "f" | complement (slice "b" "c") (slice
"d" "e") }}'
- '[a f]'
+ D:
+ Aliases: null
+ Args: null
+ Description: ""
+ Examples: null
Delimit:
Aliases:
- delimit
# will decrease over time, though the initial implementation will require some
# effort.
+- highlight
- menu
+- random
- resource
-- highlight
- /methods/pages/groupbyparam
- /methods/pages/groupbyparamdate
- /methods/pages/groupbypublishdate
- - /methods/pages/groupbydate
- - /methods/pages/groupbydate
- - /methods/pages/groupbydate
- - /methods/pages/groupbydate
- - /methods/pages/groupbydate
- - /methods/pages/groupbydate
- - /methods/pages/reverse
methods_pages_navigation:
- /methods/pages/next
- /methods/pages/prev
link = "https://www.jetbrains.com/go/?utm_source=OSS&utm_medium=referral&utm_campaign=hugo"
logo = "images/sponsors/goland.svg"
bgcolor = "#f4f4f4"
+
+[[banners]]
+ name = "CloudCannon"
+ link = "https://cloudcannon.com/hugo-cms/?utm_campaign=HugoSponsorship&utm_content=gohugo&utm_medium=banner&utm_source=sponsor"
+ logo = "images/sponsors/cloudcannon-cms-logo.svg"
+ no_query_params = true
+ bgcolor = "#ffffff"
@param {bool} [details=false] Whether to wrap the highlighted code block within a details element.
@param {bool} [open=false] Whether to initially display the content of the details element.
@param {string} [summary=Details] The content of the details summary element rendered from Markdown to HTML.
+@param {bool} [trim=true] Whether to trim leading and trailing whitespace from the content of the code block.
@returns {template.HTML}
{{- $details := false }}
{{- $open := "" }}
{{- $summary := or .Attributes.summary "Details" | .Page.RenderString }}
+{{- $trim := true }}
{{- $ext := strings.TrimPrefix "." (path.Ext $file) }}
{{- $lang := or .Type $ext "text" }}
{{- if in (slice "html" "gotmpl") $lang }}
{{- $lang = "text" }}
{{- end }}
-{{- with .Attributes.copy }}
- {{- if in (slice true "true" 1) . }}
+{{- if collections.IsSet .Attributes "copy" }}
+ {{- if in (slice true "true" 1) .Attributes.copy }}
{{- $copy = true }}
- {{- else if in (slice false "false" 0) . }}
+ {{- else if in (slice false "false" 0) .Attributes.copy }}
{{- $copy = false }}
{{- end }}
{{- end }}
-{{- with .Attributes.details }}
- {{- if in (slice true "true" 1) . }}
+{{- if collections.IsSet .Attributes "details" }}
+ {{- if in (slice true "true" 1) .Attributes.details }}
{{- $details = true }}
- {{- else if in (slice false "false" 0) . }}
+ {{- else if in (slice false "false" 0) .Attributes.details }}
{{- $details = false }}
{{- end }}
{{- end }}
-{{- with .Attributes.open }}
- {{- if in (slice true "true" 1) . }}
+{{- if collections.IsSet .Attributes "open" }}
+ {{- if in (slice true "true" 1) .Attributes.open }}
{{- $open = "open" }}
- {{- else if in (slice false "false" 0) . }}
+ {{- else if in (slice false "false" 0) .Attributes.open }}
{{- $open = "" }}
{{- end }}
{{- end }}
+{{- if collections.IsSet .Attributes "trim" }}
+ {{- if in (slice true "true" 1) .Attributes.trim }}
+ {{- $trim = true }}
+ {{- else if in (slice false "false" 0) .Attributes.trim }}
+ {{- $trim = false }}
+ {{- end }}
+{{- end }}
+
{{- if $details }}
<details class="cursor-pointer" {{ $open }}>
<summary>{{ $summary }}</summary>
{{- end }}
<div x-ref="code">
- {{- transform.Highlight (strings.TrimSpace .Inner) $lang .Options }}
+ {{- $content := .Inner }}
+ {{- if $trim }}
+ {{- $content = strings.TrimSpace .Inner }}
+ {{- end }}
+ {{- transform.Highlight $content $lang .Options }}
</div>
</div>
{{ .Site.Title }}
</title>
+<link rel="preload" href="{{ `fonts/Mulish-VariableFont_wght.ttf` | relURL }}" as="font" type="font/ttf" crossorigin="anonymous" />
+<link rel="preload" href="{{ `fonts/Mulish-Italic-VariableFont_wght.ttf` | relURL }}" as="font" type="font/ttf" crossorigin="anonymous" />
+
<link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png>
<link rel=icon type=image/png href=/favicon-32x32.png sizes=32x32>
<link rel=icon type=image/png href=/favicon-16x16.png sizes=16x16>
<link rel=mask-icon href=/safari-pinned-tab.svg color=#0594cb>
<meta name="turbo-prefetch" content="true">
-<meta name="view-transition" content="same-origin">
{{ range .AlternativeOutputFormats -}}
<link
-{{ with resources.Get "js/body-start.js" | js.Build (dict "minify" true) }}
- {{ partial "helpers/linkjs.html" (dict "r" . "attributes" (dict "" "")) }}
-{{ end }}
{{- $heading := "See also" }}
-{{- $related := site.Pages.Related . }}
-{{- $related = $related | complement .CurrentSection.Pages | first 7 }}
+{{- $related := site.Pages.Related . | first 7}}
{{- with $related }}
{{ $.Store.Set "hasRelated" true }}
{{- $destination = $u.String }}
{{- else }}
{{- with site.GetPage $u.Path }}
- {{- $destination = .RelPermalink }}
+ {{- $destination = .Path }}
{{- else }}
{{- errorf "The %q shortcode was unable to find the reference link %s: see %s" $.Name . $p.String }}
{{- end }}
@param {string} [filterType=""] The type of filter, either include or exclude.
@param {string} [titlePrefix=""] The string to prepend to the link title.
-@example {{< list-pages-in-section path=/methods/resources >}}
-@example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude >}}
-@example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude titlePrefix=foo >}}
+@example {{% list-pages-in-section path=/methods/resources %}}
+@example {{% list-pages-in-section path=/functions/images filter=some_filter filterType=exclude %}}
+@example {{% list-pages-in-section path=/functions/images filter=some_filter filterType=exclude titlePrefix=foo %}}
*/}}
{{/* Initialize. */}}
{{ with $titlePrefix }}
{{ $linkTitle = printf "%s%s" . $linkTitle }}
{{ end }}
-[{{ $linkTitle }}]({{ $page.RelPermalink }}){{/* Do not indent. */}}
+{{/* Use page Path as the link destination for render hook to resolve correctly. */}}
+[{{ $linkTitle }}]({{ $page.Path }}){{/* Do not indent. */}}
: {{ $page.Description }}{{/* Do not indent. */}}
{{ end }}
{{ end }}
{{ .Content }}
{{ with .Pages }}
{{ range . }}
-[{{ .LinkTitle }}]({{ .RelPermalink }}){{/* Do not indent. */}}
+{{/* Use page Path as the link destination for render hook to resolve correctly. */}}
+[{{ .LinkTitle }}]({{ .Path }}){{/* Do not indent. */}}
: {{ .Description }}{{/* Do not indent. */}}
{{ end }}
{{ end }}
{{ $noop := .WordCount }}
{{ if .Page.Store.Get "hasMath" }}
<link
- href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css"
- rel="stylesheet">
+ rel="stylesheet"
+ href="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css"
+ integrity="sha384-WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi"
+ crossorigin="anonymous"
+ >
{{ end }}
{{ partial "layouts/head/head.html" . }}
</head>
command = "hugo --gc --minify"
[build.environment]
- HUGO_VERSION = "0.148.2"
+ HUGO_VERSION = "0.152.2"
[context.production.environment]
HUGO_ENV = "production"
"author": "",
"license": "",
"devDependencies": {
- "@awmottaz/prettier-plugin-void-html": "~1.8.0",
- "@tailwindcss/cli": "~4.1.0",
- "@tailwindcss/typography": "~0.5.16",
- "prettier": "~3.5.3",
+ "@awmottaz/prettier-plugin-void-html": "~2.0.0",
+ "@tailwindcss/cli": "~4.1.18",
+ "@tailwindcss/typography": "~0.5.19",
+ "prettier": "~3.7.4",
"prettier-plugin-go-template": "~0.0.15",
- "tailwindcss": "~4.1.0"
+ "tailwindcss": "~4.1.18"
},
"dependencies": {
- "@alpinejs/focus": "~3.14.9",
- "@alpinejs/persist": "~3.14.9",
- "@hotwired/turbo": "~8.0.13",
- "alpinejs": "~3.14.9"
+ "@alpinejs/focus": "~3.15.3",
+ "@alpinejs/persist": "~3.15.3",
+ "@hotwired/turbo": "~8.0.20",
+ "alpinejs": "~3.15.3"
}
}