Files
libertytoolsio/pagefind_instructions.html

232 lines
6.7 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>pagefind_instructions</title>
<style>
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
svg {
height: auto;
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
border: none;
border-top: 1px solid #1a1a1a;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<h1 id="instructions-for-installing-and-running-pagefind">Instructions
for Installing and Running PageFind</h1>
<h2 id="install-nvm-and-npx">Install <code>nvm</code> and
<code>npx</code></h2>
<p>There are a few ways to install PageFind. I used the <code>npx</code>
method, but you can check out other ways from their <a
href="https://pagefind.app/docs/installation/">website</a>. Below is the
<code>npx</code> method. 1. Install <code>nvm</code> from the <a
href="https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating">git
repo</a> using the <code>Install and Update Script</code>. -
<code>curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash</code>
- <code>nvm install --lts</code> 2. Install <code>npm</code> -
<code>sudo apt install npm</code> 3. Verify Installations -
<code>which npx</code> should print out the path to the <code>npx</code>
binary. - <code>npx --version</code> should give you the version that
was installed.</p>
<h2 id="include-pagefind-script-into-website">Include PageFind Script
into Website</h2>
<ol type="1">
<li>In the <code>config.toml</code> file of the root of the
<code>libertytools.io</code> project, set the following:
<ul>
<li><code>BookSearch = true</code></li>
</ul></li>
<li><code>cd libertytoolsio/themes/hugo-book/layouts/_partials/docs</code></li>
<li>Make a backup of <code>search.html</code>:
<ul>
<li><code>cp search.html search.html.bkup</code></li>
</ul></li>
<li>Open <code>search.html</code> and delete the contents. Replace the
contents with the following script from the <a
href="https://pagefind.app/docs/">pagefind website</a>:</li>
</ol>
<pre><code>&lt;link href=&quot;/pagefind/pagefind-ui.css&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;/pagefind/pagefind-ui.js&quot;&gt;&lt;/script&gt;
&lt;div id=&quot;search&quot;&gt;&lt;/div&gt;
&lt;script&gt;
window.addEventListener(&#39;DOMContentLoaded&#39;, (event) =&gt; {
new PagefindUI({ element: &quot;#search&quot;, showSubResults: true });
});
&lt;/script&gt;</code></pre>
<h2 id="index-the-website">Index the Website</h2>
<p>Once the pagefind script has been copied into the
<code>libertytoolsio/themes/hugo-book/layouts/_partials/docs/search.html</code>,
the search bar should persist across all pages created. To index the
website for pagefind we first have to build the site using
<code>hugo</code>, then we will have to index the contents of the site
using the <code>npx</code> wrapper. 1. Build the site: - From the
project root (i.e. <code>libertytoolsio/</code>), -
<code>hugo serve</code> 2. Building the site will publish the html and
shit to the <code>public/</code> directory. We now have to index and
rebuild the site in order for pagefind to persist: - From the project
root, <code>npx -y pagefind --site public --serve</code> - If all goes
well, you should see something like
<code>Serving "public" at http://localhost:1414</code> at the bottom of
the output. Paste the address <code>http://localhost:1414</code> into a
browser. You should now see the search bar in the upper left, and it
should be available on all pages.</p>
</body>
</html>