Compare commits
50 Commits
@vercel/py
...
@vercel/py
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c76781fac9 | ||
|
|
451e0b0cfb | ||
|
|
cf477d45b2 | ||
|
|
cdd2d69e07 | ||
|
|
43f1f8b257 | ||
|
|
34055e3599 | ||
|
|
26abb0a85a | ||
|
|
a1e337e0dd | ||
|
|
b72ead480f | ||
|
|
77cf68105f | ||
|
|
d800f55dfa | ||
|
|
9dde99f19e | ||
|
|
fae7a083fc | ||
|
|
cbd651d6ee | ||
|
|
6077a706d1 | ||
|
|
cedc82dd9e | ||
|
|
b420006401 | ||
|
|
8ba604e8fc | ||
|
|
fadeee4568 | ||
|
|
2b15ba7f46 | ||
|
|
4cdfd0e58c | ||
|
|
b3ccb5f3ef | ||
|
|
584acc43b7 | ||
|
|
f64be93b94 | ||
|
|
9abd31769e | ||
|
|
09e3b35e74 | ||
|
|
8aa9a0ea05 | ||
|
|
b2d0ed74c6 | ||
|
|
aef936af0f | ||
|
|
501be936c0 | ||
|
|
7eba282af5 | ||
|
|
cf3e4bd726 | ||
|
|
ee5361b00e | ||
|
|
bd929dd5c5 | ||
|
|
4ee064bb61 | ||
|
|
312a2090a6 | ||
|
|
a82f117217 | ||
|
|
e908378486 | ||
|
|
8cda5263eb | ||
|
|
a24fd64bce | ||
|
|
0c515a46d5 | ||
|
|
f19690dc32 | ||
|
|
6b2a1c3866 | ||
|
|
1e54d606d7 | ||
|
|
c4ab0ebe9c | ||
|
|
321f1232a1 | ||
|
|
8a8203e149 | ||
|
|
33527165e7 | ||
|
|
db10383bc8 | ||
|
|
56960e506e |
@@ -1,7 +1,12 @@
|
||||
node_modules
|
||||
dist
|
||||
examples
|
||||
|
||||
packages/node/src/bridge.ts
|
||||
|
||||
packages/*/test/fixtures
|
||||
|
||||
# cli
|
||||
packages/cli/@types
|
||||
packages/cli/download
|
||||
packages/cli/dist
|
||||
@@ -9,11 +14,24 @@ packages/cli/test/dev/fixtures
|
||||
packages/cli/bin
|
||||
packages/cli/link
|
||||
packages/cli/src/util/dev/templates/*.ts
|
||||
|
||||
# client
|
||||
packages/client/tests/fixtures
|
||||
packages/client/lib
|
||||
packages/node/src/bridge.ts
|
||||
|
||||
# node-bridge
|
||||
packages/node-bridge/bridge.js
|
||||
packages/node-bridge/launcher.js
|
||||
packages/node-bridge/helpers.js
|
||||
packages/node-bridge/source-map-support.js
|
||||
|
||||
# middleware
|
||||
packages/middleware/src/entries.js
|
||||
|
||||
# static-build
|
||||
packages/static-build/test/fixtures
|
||||
packages/static-build/test/build-fixtures
|
||||
packages/static-build/test/cache-fixtures
|
||||
|
||||
# redwood
|
||||
packages/redwood/test/fixtures
|
||||
|
||||
@@ -9,7 +9,6 @@ A Runtime is an npm module that implements the following interface:
|
||||
interface Runtime {
|
||||
version: number;
|
||||
build: (options: BuildOptions) => Promise<BuildResult>;
|
||||
analyze?: (options: AnalyzeOptions) => Promise<string>;
|
||||
prepareCache?: (options: PrepareCacheOptions) => Promise<CacheOutputs>;
|
||||
shouldServe?: (options: ShouldServeOptions) => Promise<boolean>;
|
||||
startDevServer?: (
|
||||
@@ -72,26 +71,6 @@ export async function build(options: BuildOptions) {
|
||||
}
|
||||
```
|
||||
|
||||
### `analyze()`
|
||||
|
||||
An **optional** exported function that returns a unique fingerprint used for the
|
||||
purpose of [build
|
||||
de-duplication](https://vercel.com/docs/v2/platform/deployments#deduplication).
|
||||
If the `analyze()` function is not supplied, then a random fingerprint is
|
||||
assigned to each build.
|
||||
|
||||
**Example:**
|
||||
|
||||
```typescript
|
||||
import { AnalyzeOptions } from '@vercel/build-utils';
|
||||
|
||||
export async function analyze(options: AnalyzeOptions) {
|
||||
// Do calculations to generate a fingerprint based off the source code here…
|
||||
|
||||
return 'fingerprint goes here';
|
||||
}
|
||||
```
|
||||
|
||||
### `prepareCache()`
|
||||
|
||||
An **optional** exported function that is executed after [`build()`](#build) is
|
||||
|
||||
46
api/_lib/script/build.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import fs from 'fs/promises';
|
||||
import { join } from 'path';
|
||||
import { getExampleList } from '../examples/example-list';
|
||||
import { mapOldToNew } from '../examples/map-old-to-new';
|
||||
|
||||
const repoRoot = join(__dirname, '..', '..', '..');
|
||||
const pubDir = join(repoRoot, 'public');
|
||||
|
||||
async function main() {
|
||||
console.log(`Building static frontend ${repoRoot}...`);
|
||||
|
||||
await fs.rm(pubDir, { recursive: true, force: true });
|
||||
await fs.mkdir(pubDir);
|
||||
|
||||
const examples = await getExampleList();
|
||||
const pathListAll = join(pubDir, 'list-all.json');
|
||||
await fs.writeFile(pathListAll, JSON.stringify(examples));
|
||||
|
||||
const exampleDirs = await fs.readdir(join(repoRoot, 'examples'), {
|
||||
withFileTypes: true,
|
||||
});
|
||||
|
||||
const existingExamples = exampleDirs
|
||||
.filter(dir => dir.isDirectory())
|
||||
.map(dir => ({
|
||||
name: dir.name,
|
||||
visible: true,
|
||||
suggestions: [],
|
||||
}));
|
||||
|
||||
const oldExamples = Object.keys(mapOldToNew).map(key => ({
|
||||
name: key,
|
||||
visible: false,
|
||||
suggestions: mapOldToNew[key],
|
||||
}));
|
||||
|
||||
const pathList = join(pubDir, 'list.json');
|
||||
await fs.writeFile(
|
||||
pathList,
|
||||
JSON.stringify([...existingExamples, ...oldExamples])
|
||||
);
|
||||
|
||||
console.log('Completed building static frontend.');
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
@@ -1,10 +0,0 @@
|
||||
import { VercelRequest, VercelResponse } from '@vercel/node';
|
||||
import { getExampleList } from '../_lib/examples/example-list';
|
||||
import { withApiHandler } from '../_lib/util/with-api-handler';
|
||||
|
||||
export default withApiHandler(async function (
|
||||
req: VercelRequest,
|
||||
res: VercelResponse
|
||||
) {
|
||||
res.status(200).json(await getExampleList());
|
||||
});
|
||||
@@ -1,27 +0,0 @@
|
||||
import { extract } from '../_lib/examples/extract';
|
||||
import { summary } from '../_lib/examples/summary';
|
||||
import { VercelRequest, VercelResponse } from '@vercel/node';
|
||||
import { mapOldToNew } from '../_lib/examples/map-old-to-new';
|
||||
import { withApiHandler } from '../_lib/util/with-api-handler';
|
||||
|
||||
export default withApiHandler(async function (
|
||||
req: VercelRequest,
|
||||
res: VercelResponse
|
||||
) {
|
||||
await extract('https://github.com/vercel/vercel/archive/main.zip', '/tmp');
|
||||
const exampleList = summary('/tmp/vercel-main/examples');
|
||||
|
||||
const existingExamples = Array.from(exampleList).map(key => ({
|
||||
name: key,
|
||||
visible: true,
|
||||
suggestions: [],
|
||||
}));
|
||||
|
||||
const oldExamples = Object.keys(mapOldToNew).map(key => ({
|
||||
name: key,
|
||||
visible: false,
|
||||
suggestions: mapOldToNew[key],
|
||||
}));
|
||||
|
||||
res.status(200).json([...existingExamples, ...oldExamples]);
|
||||
});
|
||||
2
examples/hugo/.gitignore
vendored
@@ -1,5 +1,5 @@
|
||||
# Hugo
|
||||
/public
|
||||
public
|
||||
.hugo_build.lock
|
||||
|
||||
## OS Files
|
||||
|
||||
@@ -1,4 +1,39 @@
|
||||
baseURL = 'http://example.org/'
|
||||
languageCode = 'en-us'
|
||||
title = 'My New Hugo Site'
|
||||
theme = "ananke"
|
||||
baseURL = "https://hugo-template.vercel.app"
|
||||
title = "Hugo Template"
|
||||
theme = "etch"
|
||||
languageCode = "en-US"
|
||||
enableInlineShortcodes = true
|
||||
pygmentsCodeFences = true
|
||||
pygmentsUseClasses = true
|
||||
ignoreErrors = ["error-missing-instagram-accesstoken"]
|
||||
|
||||
[params]
|
||||
description = "A Hugo template, hosted with Vercel."
|
||||
copyright = "Copyright © 2021 Your Name"
|
||||
dark = "auto"
|
||||
highlight = true
|
||||
|
||||
[menu]
|
||||
[[menu.main]]
|
||||
identifier = "posts"
|
||||
name = "posts"
|
||||
title = "posts"
|
||||
url = "/"
|
||||
weight = 10
|
||||
|
||||
[[menu.main]]
|
||||
identifier = "about"
|
||||
name = "about"
|
||||
title = "about"
|
||||
url = "/about/"
|
||||
weight = 20
|
||||
|
||||
[permalinks]
|
||||
posts = "/:title/"
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
# Allow HTML in Markdown
|
||||
unsafe = true
|
||||
|
||||
[markup.tableOfContents]
|
||||
ordered = true
|
||||
|
||||
5
examples/hugo/content/_index.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
title: 'Home'
|
||||
---
|
||||
|
||||
This is some info about me.
|
||||
21
examples/hugo/content/about/index.md
Normal file
@@ -0,0 +1,21 @@
|
||||
+++
|
||||
title = "About"
|
||||
+++
|
||||
|
||||
Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows.
|
||||
|
||||
Hugo makes use of a variety of open source projects including:
|
||||
|
||||
- https://github.com/yuin/goldmark
|
||||
- https://github.com/alecthomas/chroma
|
||||
- https://github.com/muesli/smartcrop
|
||||
- https://github.com/spf13/cobra
|
||||
- https://github.com/spf13/viper
|
||||
|
||||
Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages.
|
||||
|
||||
Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases.
|
||||
|
||||
Websites built with Hugo are extremelly fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider.
|
||||
|
||||
Learn more and contribute on [GitHub](https://github.com/gohugoio).
|
||||
50
examples/hugo/content/posts/emoji-support.md
Normal file
@@ -0,0 +1,50 @@
|
||||
+++
|
||||
author = "Hugo Authors"
|
||||
title = "Emoji Support"
|
||||
date = "2019-03-05"
|
||||
description = "Guide to emoji usage in Hugo"
|
||||
tags = [
|
||||
"emoji",
|
||||
]
|
||||
+++
|
||||
|
||||
Emoji can be enabled in a Hugo project in a number of ways.
|
||||
|
||||
<!--more-->
|
||||
|
||||
The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes).
|
||||
|
||||
To enable emoji globally, set `enableEmoji` to `true` in your site’s [configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files; e.g.
|
||||
|
||||
<p><span class="nowrap"><span class="emojify">🙈</span> <code>:see_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙉</span> <code>:hear_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙊</span> <code>:speak_no_evil:</code></span></p>
|
||||
<br>
|
||||
|
||||
The [Emoji cheat sheet](http://www.emoji-cheat-sheet.com/) is a useful reference for emoji shorthand codes.
|
||||
|
||||
---
|
||||
|
||||
**N.B.** The above steps enable Unicode Standard emoji characters and sequences in Hugo, however the rendering of these glyphs depends on the browser and the platform. To style the emoji you can either use a third party emoji font or a font stack; e.g.
|
||||
|
||||
{{< highlight html >}}
|
||||
.emoji {
|
||||
font-family: Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols;
|
||||
}
|
||||
{{< /highlight >}}
|
||||
|
||||
{{< css.inline >}}
|
||||
|
||||
<style>
|
||||
.emojify {
|
||||
font-family: Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols;
|
||||
font-size: 2rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
@media screen and (max-width:650px) {
|
||||
.nowrap {
|
||||
display: block;
|
||||
margin: 25px 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
{{< /css.inline >}}
|
||||
155
examples/hugo/content/posts/markdown-syntax.md
Normal file
@@ -0,0 +1,155 @@
|
||||
+++
|
||||
author = "Hugo Authors"
|
||||
title = "Markdown Syntax Guide"
|
||||
date = "2019-03-11"
|
||||
description = "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
|
||||
tags = [
|
||||
"markdown",
|
||||
"css",
|
||||
"html",
|
||||
"themes",
|
||||
]
|
||||
categories = [
|
||||
"themes",
|
||||
"syntax",
|
||||
]
|
||||
series = ["Themes Guide"]
|
||||
aliases = ["migrate-from-jekyl"]
|
||||
+++
|
||||
|
||||
This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Headings
|
||||
|
||||
The following HTML `<h1>`—`<h6>` elements represent six levels of section headings. `<h1>` is the highest section level while `<h6>` is the lowest.
|
||||
|
||||
# H1
|
||||
|
||||
## H2
|
||||
|
||||
### H3
|
||||
|
||||
#### H4
|
||||
|
||||
##### H5
|
||||
|
||||
###### H6
|
||||
|
||||
## Paragraph
|
||||
|
||||
Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.
|
||||
|
||||
Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.
|
||||
|
||||
## Blockquotes
|
||||
|
||||
The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations.
|
||||
|
||||
#### Blockquote without attribution
|
||||
|
||||
> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
|
||||
> **Note** that you can use _Markdown syntax_ within a blockquote.
|
||||
|
||||
#### Blockquote with attribution
|
||||
|
||||
> Don't communicate by sharing memory, share memory by communicating.</p>
|
||||
> — <cite>Rob Pike[^1]</cite>
|
||||
|
||||
[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
|
||||
|
||||
## Tables
|
||||
|
||||
Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box.
|
||||
|
||||
| Name | Age |
|
||||
| ----- | --- |
|
||||
| Bob | 27 |
|
||||
| Alice | 23 |
|
||||
|
||||
#### Inline Markdown within tables
|
||||
|
||||
| Inline | Markdown | In | Table |
|
||||
| ------------------------ | -------------------------- | ----------------------------------- | ------ |
|
||||
| _italics_ | **bold** | ~~strikethrough~~ | `code` |
|
||||
|
||||
## Code Blocks
|
||||
|
||||
#### Code block with backticks
|
||||
|
||||
```
|
||||
html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test</p>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
#### Code block indented with four spaces
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
#### Code block with Hugo's internal highlight shortcode
|
||||
|
||||
{{< highlight html >}}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test</p>
|
||||
</body>
|
||||
</html>
|
||||
{{< /highlight >}}
|
||||
|
||||
## List Types
|
||||
|
||||
#### Ordered List
|
||||
|
||||
1. First item
|
||||
2. Second item
|
||||
3. Third item
|
||||
|
||||
#### Unordered List
|
||||
|
||||
- List item
|
||||
- Another item
|
||||
- And another item
|
||||
|
||||
#### Nested list
|
||||
|
||||
- Item
|
||||
|
||||
1. First Sub-item
|
||||
2. Second Sub-item
|
||||
|
||||
## Other Elements — abbr, sub, sup, kbd, mark
|
||||
|
||||
<abbr title="Graphics Interchange Format">GIF</abbr> is a bitmap image format.
|
||||
|
||||
H<sub>2</sub>O
|
||||
|
||||
X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
|
||||
|
||||
Press <kbd><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>Delete</kbd></kbd> to end the session.
|
||||
|
||||
Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures.
|
||||
@@ -1,46 +0,0 @@
|
||||
---
|
||||
title: 'Deploying to Vercel'
|
||||
date: 2022-02-21T19:01:19-06:00
|
||||
draft: true
|
||||
---
|
||||
|
||||
This guide will show you how to deploy a Hugo site and get your domain set up.
|
||||
|
||||
[Hugo](https://gohugo.io/) is a very popular framework for creating static websites. It's fast and flexible. To build a Hugo site, start with a template:
|
||||
|
||||
- [Hugo](https://vercel.com/new/clone?s=https%3A%2F%2Fgithub.com%2Fvercel%2Fvercel%2Ftree%2Fmain%2Fexamples%2Fhugo&template=hugo&id=67753070&b=main&from=templates)
|
||||
|
||||
## Deploy Hugo to Vercel
|
||||
|
||||
Vercel is a platform for deploying the fastest Hugo sites. You can deploy your site with zero configuration to the best [frontend infrastructure](https://vercel.com/features/infrastructure).
|
||||
|
||||
- Develop: Build Hugo sites that connect to your favorite APIs, databases, and content management systems.
|
||||
- Preview: Integrate with any GitHub, GitLab, or Bitbucket repository for [instant continuous deployment](https://vercel.com/features/previews).
|
||||
- Ship: Deploy your site to every edge node worldwide for the fastest Hugo sites. Static files, Serverless and Edge Functions, and [more](https://vercel.com/features/infrastructure).
|
||||
|
||||
## Built-in CI/CD for Hugo sites
|
||||
|
||||
Vercel has integrations for [GitHub](https://vercel.com/docs/concepts/git/vercel-for-github), [GitLab](https://vercel.com/docs/concepts/git/vercel-for-gitlab), and [Bitbucket](https://vercel.com/docs/concepts/git/vercel-for-bitbucket) to enable CI/CD for your Hugo site with zero configuration. Then, you can run [automated tests for performance and reliability](https://vercel.com/docs/concepts/deployments/checks) on every push. Pull and merge requests are deployed instantly to a unique URL, accessible to your entire team.
|
||||
|
||||
## Add your custom domain
|
||||
|
||||
After deploying, your new Hugo site will get automatically assigned a `.vercel.app` suffixed domain. You can then add a [Custom Domain](https://vercel.com/docs/concepts/projects/custom-domains) on your choice, either from a third-party or [purchased through Vercel](https://vercel.com/domains).
|
||||
|
||||
## Deploy Hugo to Vercel
|
||||
|
||||
### Start from a template
|
||||
|
||||
- [Hugo](https://vercel.com/new/clone?s=https%3A%2F%2Fgithub.com%2Fvercel%2Fvercel%2Ftree%2Fmain%2Fexamples%2Fhugo&template=hugo&id=67753070&b=main&from=templates)
|
||||
|
||||
### Vercel CLI
|
||||
|
||||
1. Install the [Vercel CLI](https://vercel.com/cli) and run `vercel` to deploy.
|
||||
2. Vercel will detect that you are using Hugo and will enable the correct settings for your deployment.
|
||||
3. Your site is deployed! (e.g. [hugo-template.vercel.app](https://hugo-template.vercel.app/))
|
||||
|
||||
### Vercel for Git
|
||||
|
||||
1. Push your code to your git repository (GitHub, GitLab, BitBucket).
|
||||
2. [Import your Hugo project](https://vercel.com/new) into Vercel.
|
||||
3. Vercel will detect that you are using Hugo and will enable the correct settings for your deployment.
|
||||
4. Your site is deployed! (e.g. [hugo-template.vercel.app](https://hugo-template.vercel.app/))
|
||||
60
examples/hugo/content/posts/placeholder-text.md
Normal file
@@ -0,0 +1,60 @@
|
||||
+++
|
||||
author = "Hugo Authors"
|
||||
title = "Placeholder Text"
|
||||
date = "2019-03-09"
|
||||
description = "Lorem Ipsum Dolor Si Amet"
|
||||
tags = [
|
||||
"markdown",
|
||||
"text",
|
||||
]
|
||||
+++
|
||||
|
||||
Lorem est tota propiore conpellat pectoribus de
|
||||
pectora summo. <!--more-->Redit teque digerit hominumque toris verebor lumina non cervice
|
||||
subde tollit usus habet Arctonque, furores quas nec ferunt. Quoque montibus nunc
|
||||
caluere tempus inhospita parcite confusaque translucet patri vestro qui optatis
|
||||
lumine cognoscere flos nubis! Fronde ipsamque patulos Dryopen deorum.
|
||||
|
||||
1. Exierant elisi ambit vivere dedere
|
||||
2. Duce pollice
|
||||
3. Eris modo
|
||||
4. Spargitque ferrea quos palude
|
||||
|
||||
Rursus nulli murmur; hastile inridet ut ab gravi sententia! Nomine potitus
|
||||
silentia flumen, sustinet placuit petis in dilapsa erat sunt. Atria
|
||||
tractus malis.
|
||||
|
||||
1. Comas hunc haec pietate fetum procerum dixit
|
||||
2. Post torum vates letum Tiresia
|
||||
3. Flumen querellas
|
||||
4. Arcanaque montibus omnes
|
||||
5. Quidem et
|
||||
|
||||
# Vagus elidunt
|
||||
|
||||
<svg class="canon" xmlns="http://www.w3.org/2000/svg" overflow="visible" viewBox="0 0 496 373" height="373" width="496"><g fill="none"><path stroke="#000" stroke-width=".75" d="M.599 372.348L495.263 1.206M.312.633l494.95 370.853M.312 372.633L247.643.92M248.502.92l246.76 370.566M330.828 123.869V1.134M330.396 1.134L165.104 124.515"></path><path stroke="#ED1C24" stroke-width=".75" d="M275.73 41.616h166.224v249.05H275.73zM54.478 41.616h166.225v249.052H54.478z"></path><path stroke="#000" stroke-width=".75" d="M.479.375h495v372h-495zM247.979.875v372"></path><ellipse cx="498.729" cy="177.625" rx=".75" ry="1.25"></ellipse><ellipse cx="247.229" cy="377.375" rx=".75" ry="1.25"></ellipse></g></svg>
|
||||
|
||||
[The Van de Graaf Canon](https://en.wikipedia.org/wiki/Canons_of_page_construction#Van_de_Graaf_canon)
|
||||
|
||||
## Mane refeci capiebant unda mulcebat
|
||||
|
||||
Victa caducifer, malo vulnere contra
|
||||
dicere aurato, ludit regale, voca! Retorsit colit est profanae esse virescere
|
||||
furit nec; iaculi matertera et visa est, viribus. Divesque creatis, tecta novat collumque vulnus est, parvas. **Faces illo pepulere** tempus adest. Tendit flamma, ab opes virum sustinet, sidus sequendo urbis.
|
||||
|
||||
Iubar proles corpore raptos vero auctor imperium; sed et huic: manus caeli
|
||||
Lelegas tu lux. Verbis obstitit intus oblectamina fixis linguisque ausus sperare
|
||||
Echionides cornuaque tenent clausit possit. Omnia putatur. Praeteritae refert
|
||||
ausus; ferebant e primus lora nutat, vici quae mea ipse. Et iter nil spectatae
|
||||
vulnus haerentia iuste et exercebat, sui et.
|
||||
|
||||
Eurytus Hector, materna ipsumque ut Politen, nec, nate, ignari, vernum cohaesit sequitur. Vel **mitis temploque** vocatus, inque alis, _oculos nomen_ non silvis corpore coniunx ne displicet illa. Crescunt non unus, vidit visa quantum inmiti flumina mortis facto sic: undique a alios vincula sunt iactata abdita! Suspenderat ego fuit tendit: luna, ante urbem
|
||||
Propoetides **parte**.
|
||||
|
||||
{{< css.inline >}}
|
||||
|
||||
<style>
|
||||
.canon { background: white; width: 100%; height: auto;}
|
||||
</style>
|
||||
|
||||
{{< /css.inline >}}
|
||||
42
examples/hugo/content/posts/rich-content.md
Normal file
@@ -0,0 +1,42 @@
|
||||
+++
|
||||
author = "Hugo Authors"
|
||||
title = "Rich Content"
|
||||
date = "2019-03-10"
|
||||
description = "A brief description of Hugo Shortcodes"
|
||||
tags = [
|
||||
"shortcodes",
|
||||
"privacy",
|
||||
]
|
||||
+++
|
||||
|
||||
Hugo ships with several [Built-in Shortcodes](https://gohugo.io/content-management/shortcodes/#use-hugo-s-built-in-shortcodes) for rich content, along with a [Privacy Config](https://gohugo.io/about/hugo-and-gdpr/) and a set of Simple Shortcodes that enable static and no-JS versions of various social media embeds.
|
||||
|
||||
## <!--more-->
|
||||
|
||||
## Instagram Simple Shortcode
|
||||
|
||||
{{< instagram_simple BGvuInzyFAe hidecaption >}}
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## YouTube Privacy Enhanced Shortcode
|
||||
|
||||
{{< youtube ZJthWmvUzzc >}}
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## Twitter Simple Shortcode
|
||||
|
||||
{{< twitter_simple 1085870671291310081 >}}
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## Vimeo Simple Shortcode
|
||||
|
||||
{{< vimeo_simple 48912912 >}}
|
||||
@@ -1 +0,0 @@
|
||||
{ "Target": "ananke/css/main.min.css", "MediaType": "text/css", "Data": {} }
|
||||
@@ -1,169 +0,0 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
||||
|
||||
## [v2.6.1](https://github.com/theNewDynamic/gohugo-theme-ananke/compare/v2.6.0...v2.6.1) - 2020-06-25
|
||||
|
||||
### Commits
|
||||
|
||||
- Updated minimum theme to .55 [`df4c78a`](https://github.com/theNewDynamic/gohugo-theme-ananke/commit/df4c78adb2ed004c3780f7a76254e9756dd024b5)
|
||||
|
||||
## [v2.6.0](https://github.com/theNewDynamic/gohugo-theme-ananke/compare/2.6.0...v2.6.0) - 2020-06-23
|
||||
|
||||
### Merged
|
||||
|
||||
- Update spanish translations [`#304`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/304)
|
||||
- Add automatic cover image support [`#303`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/303)
|
||||
|
||||
## [2.6.0](https://github.com/theNewDynamic/gohugo-theme-ananke/compare/v2.5.5...2.6.0) - 2020-06-17
|
||||
|
||||
### Merged
|
||||
|
||||
- Add translation for taxonomy page [`#299`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/299)
|
||||
- Site logo [`#284`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/284)
|
||||
- Add head partial [`#285`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/285)
|
||||
- Long urls or links extend beyond content and overlap sidebar [`#259`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/259)
|
||||
- Use relative URL for favicon [`#251`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/251)
|
||||
- Fix relURL for custom_css [`#252`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/252)
|
||||
- Fixed a typo in form-contact.html [`#266`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/266)
|
||||
- adding Bulgarian translation [`#267`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/267)
|
||||
- Use | relLangURL for the base url in the site-navigation [`#277`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/277)
|
||||
- RSS svg icon [`#282`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/282)
|
||||
- Updated Windows instructions in README.md [`#276`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/276)
|
||||
- Replace another 2 .URL occurrences with .Permalink [`#275`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/275)
|
||||
- Add alternative method for running prod to the readme [`#273`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/273)
|
||||
- Swap the page title and site title in page <title> elements [`#272`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/272)
|
||||
- Add the post_content_classes param for changing post content font [`#260`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/260)
|
||||
- Add sharing links for the posts [`#255`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/255)
|
||||
- Safari Reader View lacks content [`#254`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/254)
|
||||
- Add Keybase social icon [`#248`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/248)
|
||||
- Add StackOverflow social [`#243`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/243)
|
||||
- Fix to take care of multiple author list, or for setting the [`#221`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/221)
|
||||
- Fix Slack icon size [`#237`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/237)
|
||||
- Correct the original translation [`#241`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/241)
|
||||
|
||||
## [v2.5.6](https://github.com/theNewDynamic/gohugo-theme-ananke/compare/v2.6.1...v2.5.6) - 2019-12-30
|
||||
|
||||
### Merged
|
||||
|
||||
- Use Hugo's built in Site Config for copyright according to PR #199 [`#240`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/240)
|
||||
- Add italian translation [`#239`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/239)
|
||||
|
||||
## [v2.5.5](https://github.com/theNewDynamic/gohugo-theme-ananke/compare/2.5.1...v2.5.5) - 2019-11-15
|
||||
|
||||
### Merged
|
||||
|
||||
- Remove stray grave accent [`#231`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/231)
|
||||
- Add Slack to social options [`#236`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/236)
|
||||
- Fix URL for menus [`#230`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/230)
|
||||
- Fix word count heading typo in README.md [`#222`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/222)
|
||||
- Add auto-changelog [`#228`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/228)
|
||||
- Fix stackbit issues [`#226`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/226)
|
||||
- Add Stackbit Configuration [`#223`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/223)
|
||||
- Replace {{ .URL }} with {{ .Permalink }} [`#216`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/216)
|
||||
- Adds an author to blog posts. [`#209`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/209)
|
||||
- Fixes #212. [`#213`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/213)
|
||||
- Add ukrainian translation [`#214`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/214)
|
||||
- Add swedish translation [`#208`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/208)
|
||||
- Deprecation messages fixes. [`#196`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/196)
|
||||
- Fix README instructions [`#204`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/204)
|
||||
- Use git submodules [`#183`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/183)
|
||||
- Remove Google News meta tags [`#197`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/197)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix URL for menus (#230) [`#229`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/229)
|
||||
- Add auto-changelog (#228) [`#227`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/227) [`#227`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/227)
|
||||
- Fix stackbit issues (#226) [`#224`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/224)
|
||||
- Add Stackbit Configuration (#223) [`#200`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/200)
|
||||
- Fixes #212. (#213) [`#212`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/212)
|
||||
- Deprecation messages fixes. (#196) [`#180`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/180)
|
||||
|
||||
## 2.5.1 - 2019-08-12
|
||||
|
||||
### Merged
|
||||
|
||||
- remove deprecated meta tags for old Windows Mobile and BlackBerry [`#191`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/191)
|
||||
- localization for form-contact shortcode [`#185`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/185)
|
||||
- Fix min_version [`#189`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/189)
|
||||
- Add portuguese translation [`#179`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/179)
|
||||
- Add commento [`#178`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/178)
|
||||
- feat: add RU translation [`#177`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/177)
|
||||
- Spanish Translation [`#175`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/175)
|
||||
- Dutch translations. [`#171`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/171)
|
||||
- Correcting issue with cached i18n menu [`#174`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/174)
|
||||
- Create zh.toml [`#170`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/170)
|
||||
- Fix TOC header [`#168`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/168)
|
||||
- Optimisation "partialCached" [`#165`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/165)
|
||||
- Add a link to "mastodon" [`#159`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/159)
|
||||
- Create fr.toml [`#157`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/157)
|
||||
- add i18n translation support [`#156`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/156)
|
||||
- Support hiding the featured image header text. [`#155`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/155)
|
||||
- enable localization/modification of "Recent" string [`#154`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/154)
|
||||
- add basic support for post translations [`#144`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/144)
|
||||
- Keep article padding throughout widths [`#152`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/152)
|
||||
- Improve semantic structure of pages [`#151`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/151)
|
||||
- Improve social link accessibility [`#147`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/147)
|
||||
- Add explicit path to image example [`#146`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/146)
|
||||
- Open social media links in new tab and add Medium icon [`#143`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/143)
|
||||
- Make cover dimming class customisable. [`#140`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/140)
|
||||
- Removed hardcoded theme sample hero image. This will allow the user to "blank" out the hero default set in the config. The if statement for blank was unreachable. [`#133`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/133)
|
||||
- Use relative url function for custom CSS files [`#132`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/132)
|
||||
- Add Gitlab to social icons [`#131`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/131)
|
||||
- Add div to wrap social icons [`#128`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/128)
|
||||
- Fix asset paths when baseURL has sub-folder [`#103`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/103)
|
||||
- Add inheritance for social links. [`#107`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/107)
|
||||
- Issue 98 [`#101`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/101)
|
||||
- Replace Asset References with a data file instead of paths [`#96`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/96)
|
||||
- Pre-2.0 Enhancements [`#94`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/94)
|
||||
- Don't duplicate site title in home page TITLE tag [`#78`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/78)
|
||||
- Fix pagination [`#76`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/76)
|
||||
- #68|Parmeterize number of recent posts in index.html [`#69`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/69)
|
||||
- Fix typo in single.html [`#67`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/67)
|
||||
- Fixed line breaks in code (resolves budparr/gohugo-theme-ananke#56). [`#57`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/57)
|
||||
- Favicons [`#54`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/54)
|
||||
- indent fix [`#45`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/45)
|
||||
- Social icon updates [`#51`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/51)
|
||||
- Add GitHub social icon [`#48`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/48)
|
||||
- Make Hero image work out-of-the box [`#40`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/40)
|
||||
- Removed excess o in Facebook [`#34`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/34)
|
||||
- Fixes #31 [`#32`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/32)
|
||||
- Bp/fix now function Fixes #29 [`#30`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/30)
|
||||
- fix clunky construction on home page to get section name [`#25`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/25)
|
||||
- fix clunky construction on home page to get section name [`#24`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/24)
|
||||
- fix clunky construction on home page to get section name [`#17`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/17)
|
||||
- tweak hero default behavior [`#16`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/16)
|
||||
- improve terms template [`#15`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/15)
|
||||
- improve image handling for edge cases Fixes #11 [`#14`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/14)
|
||||
- Improve featured image handling Ref #11 + minor homepage impvs [`#12`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/12)
|
||||
- Dev changes [`#10`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/10)
|
||||
- pull in dev changes [`#9`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/9)
|
||||
- keeping things in order [`#8`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/8)
|
||||
- Improve home page posts [`#7`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/7)
|
||||
- make form email comment make more sense. Ref #5 [`#6`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/6)
|
||||
- use a cleaner way to include language code [`#3`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/3)
|
||||
- update from DEV [`#2`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/2)
|
||||
- add taxonomy templates [`#1`](https://github.com/theNewDynamic/gohugo-theme-ananke/pull/1)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Add blockquote styling [`#169`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/169)
|
||||
- Keep article padding throughout widths (#152) [`#130`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/130)
|
||||
- Update readme for formspree change [`#150`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/150)
|
||||
- Improve semantic structure of pages (#151) [`#149`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/149)
|
||||
- Add global background color class to footer [`#135`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/135)
|
||||
- Add div to wrap social icons (#128) [`#127`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/127)
|
||||
- Fix article padding on mobile [`#115`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/115)
|
||||
- Make asset paths absolute [`#97`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/97)
|
||||
- Fix linkedin icon to match the other social icons [`#70`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/70)
|
||||
- Be smarter about linking to posts on home page. [`#50`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/50)
|
||||
- Add body_classes parameter to body [`#43`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/43)
|
||||
- Fixes #31 (#32) [`#31`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/31)
|
||||
- Bp/fix now function Fixes #29 (#30) [`#29`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/29)
|
||||
- Merge pull request #14 from budparr/dev [`#11`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/11)
|
||||
- improve image handling for edge cases Fixes #11 [`#11`](https://github.com/theNewDynamic/gohugo-theme-ananke/issues/11)
|
||||
@@ -1,316 +0,0 @@
|
||||
# Ananke, A theme for [Hugo](http://gohugo.io/), a framework for building websites.
|
||||
|
||||
The intent of this theme is to provide a solid starting place for Hugo sites with basic features and include best practices for performance, accessibility, and rapid development.
|
||||
|
||||

|
||||
|
||||
[DEMO](https://gohugo-ananke-theme-demo.netlify.com/)
|
||||
|
||||
Features
|
||||
|
||||
- Responsive
|
||||
- Accessible
|
||||
- Contact form
|
||||
- Custom Robots.txt (changes values based on environment)
|
||||
- Internal templates for meta data, google analytics, and DISQUS or COMMENTO comments
|
||||
- RSS Discovery
|
||||
- Table of Contents (must declare `toc: true` in post parameter)
|
||||
- Stackbit configuration ([Stackbit](https://www.stackbit.com))
|
||||
|
||||
Also includes examples of Hugo Features or Functions:
|
||||
|
||||
- Pagination (internal template)
|
||||
- Taxonomies
|
||||
- Archetypes
|
||||
- Custom shortcode
|
||||
- Related content
|
||||
- Hugo built-in menu
|
||||
- i18n
|
||||
- `with`
|
||||
- `HUGO_ENV`
|
||||
- `first`
|
||||
- `after`
|
||||
- `sort`
|
||||
- Site LanguageCode
|
||||
- `where`
|
||||
- Content Views
|
||||
- Partials
|
||||
- Template layouts (type "post" uses a special list template, single template, and a content view)
|
||||
- Tags
|
||||
- `len`
|
||||
- Conditionals
|
||||
- `ge` (greater than or equal to)
|
||||
- `.Site.Params.mainSections` to avoid hard-coding "blog," etc. [[release note](https://github.com/spf13/hugo/blob/66ec6305f6cb450ddf9c489854146bac02f7dca1/docs/content/meta/release-notes.md#enhancements)]
|
||||
|
||||
This theme uses the "Tachyons" CSS library. This will allow you to manipulate the design of the theme by changing class names in HTML without touching the original CSS files. For more information see the [Tachyons website](http://tachyons.io/).
|
||||
|
||||
## Installation
|
||||
|
||||
### As a Hugo Module (recommended)
|
||||
|
||||
> ⚠️ If you installed a [Hugo binary](https://gohugo.io/getting-started/installing/#binary-cross-platform), you may not have Go installed on your machine. To check if Go is installed:
|
||||
>
|
||||
> ```
|
||||
> $ go version
|
||||
> ```
|
||||
>
|
||||
> Go modules were considered production ready in v1.14. [Download Go](https://golang.org/dl/).
|
||||
|
||||
1. From your project's root directory, initiate the hugo module system if you haven't already:
|
||||
|
||||
```
|
||||
$ hugo mod init github.com/<your_user>/<your_project>
|
||||
```
|
||||
|
||||
2. Add the theme's repo to your `config.toml`:
|
||||
|
||||
```toml
|
||||
theme = ["github.com/theNewDynamic/gohugo-theme-ananke"]
|
||||
```
|
||||
|
||||
### As Git Submodule
|
||||
|
||||
Inside the folder of your Hugo site run:
|
||||
|
||||
```
|
||||
$ git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke
|
||||
```
|
||||
|
||||
For more information read the official [setup guide](//gohugo.io/overview/installing/) of Hugo.
|
||||
|
||||
## Getting started
|
||||
|
||||
After installing the theme successfully it requires a just a few more steps to get your site running.
|
||||
|
||||
### The config file
|
||||
|
||||
Take a look inside the [`exampleSite`](https://github.com/theNewDynamic/gohugo-theme-ananke/tree/master/exampleSite) folder of this theme. You'll find a file called [`config.toml`](https://github.com/theNewDynamic/gohugo-theme-ananke/blob/master/exampleSite/config.toml). To use it, copy the [`config.toml`](https://github.com/theNewDynamic/gohugo-theme-ananke/blob/master/exampleSite/config.toml) in the root folder of your Hugo site. Feel free to change the strings in this theme.
|
||||
|
||||
You may need to delete the line: `themesDir = "../.."`
|
||||
|
||||
### Add comments
|
||||
|
||||
To enable comments, add following to your config file:
|
||||
|
||||
- DISQUS: `disqusShortname = YOURSHORTNAME`
|
||||
- COMMENTO:
|
||||
```
|
||||
[params]
|
||||
commentoEnable = true
|
||||
```
|
||||
|
||||
### Change the hero background
|
||||
|
||||
For any page or post you can add a featured image by including the local path in front matter (see content in the `exampleSite/content/_readme.md` file for examples): `featured_image: '/images/gohugo-default-sample-hero-image.jpg'`
|
||||
|
||||
#### Featured image as Page Resources
|
||||
|
||||
If user is using [Page Resources](https://gohugo.io/content-management/page-resources/), the theme will try and match the `featured_image` from with a page resource of type `image` and use its relative permalink. If no `featured_image` is set, the theme will look for a Page Resource of type `image` whose filepath incudes either `cover` or `feature`
|
||||
|
||||
#### Other hero settings
|
||||
|
||||
If you would like to hide the header text on the featured image on a page, set `omit_header_text` to `true`. See `exampleSite/content/contact.md` for an example.
|
||||
|
||||
You don't need an image though. The default background color is black, but you can change the color, by changing the default color class in the config.toml file. Choose a background color from any on the [Tachyons](http://tachyons.io/docs/themes/skins/) library site, and preface it with "bg-"
|
||||
|
||||
example: `background_color_class = "bg-blue"` or `background_color_class = "bg-gray"`
|
||||
|
||||
### Activate the contact form
|
||||
|
||||
This theme includes a shortcode for a contact form that you can add to any page (there is an example on the contact page in the exampleSite folder). One option is to use [formspree.io](//formspree.io/) as proxy to send the actual email. Each month, visitors can send you up to one thousand emails without incurring extra charges. Visit the Formspree site to get the "action" link and add it to your shortcode like this:
|
||||
|
||||
```
|
||||
{{< form-contact action="https://formspree.io/your@email.com" >}}
|
||||
```
|
||||
|
||||
### Social Follow + Share
|
||||
|
||||
The theme automatically adds "Follow" link icons to the header and footer and "Share" link icons to pages unless `disable_share` parameter is set to true either on the site level (site params) or page level (front matter). Each built-in services sports a label, an icon and a color.
|
||||
|
||||
In order to register a service to be used, user must add an `ananke_socials` parameter to its project configuration file and list them through it in the desired order. Each entry must bear a
|
||||
|
||||
- name\*: It matches the built-in service reference (Ex: twitter, github)
|
||||
- url\*: The url of the handle's profile on the service (Ex: https://twitter.com/theNewDynamic, https://github.com/
|
||||
theNewDynamic)
|
||||
|
||||
```yaml
|
||||
params:
|
||||
ananke_socials:
|
||||
- name: twitter
|
||||
url: https://twitter.com/theNewDynamic
|
||||
- name: github
|
||||
url: https://github.com/theNewDynamic
|
||||
```
|
||||
|
||||
If user needs to overwrite default `color` and `label` of the service, they simply need to append the following to the entry:
|
||||
|
||||
- label: The displayed name of the service to be used to popuplate `[title]` attributes and read-only. (Ex: Twitter, GitHub)
|
||||
- color: Used for styling purposes. (Ex: '#1da1f2', '#6cc644')
|
||||
|
||||
```yaml
|
||||
params:
|
||||
ananke_socials:
|
||||
- name: twitter
|
||||
url: https://twitter.com/theNewDynamic
|
||||
label: TND Twitter
|
||||
- name: github
|
||||
url: https://github.com/theNewDynamic
|
||||
label: TND GitHub Account
|
||||
color: '#ff6800'
|
||||
```
|
||||
|
||||
#### Social Icons Customization
|
||||
|
||||
On top of easily customizing the built-in services' label and color, user can overwrite their icon by adding an svg file at `/assets/ananke/socials` with a filename matching the service's name.
|
||||
For example, in order to use your own GitHub icon, simply add an svg file at `/assets/ananke/socials/github.svg`
|
||||
|
||||
#### Built-in Services
|
||||
|
||||
Here is the list of built-in services. Those marked with an `*` are also part of the "Share" module.
|
||||
|
||||
- twitter\*
|
||||
- instagram
|
||||
- youtube
|
||||
- github
|
||||
- gitlab
|
||||
- keybase
|
||||
- linkedin\*
|
||||
- medium
|
||||
- mastodon
|
||||
- slack
|
||||
- stackoverflow
|
||||
- facebook\*
|
||||
- rss
|
||||
|
||||
#### Complement
|
||||
|
||||
In order to add an unkown service (absent from the list above), you simply need to add all three settings to `ananke_socials`: name, url, label, color, and optionally add an icon file matching the `name` to the `assets/ananke/socials` directory. In the absence of an icon, the theme will print the service's label.
|
||||
|
||||
### Content indexing
|
||||
|
||||
If the theme is ran in [production](#production), pages will be indexed by search engines. To prevent indexing on some given pages, add `private: true` to its Front Matter.
|
||||
|
||||
### Update font or body classes
|
||||
|
||||
The theme is set, by default, to use a near-white background color and the "Avenir" or serif typeface. You can change these in your config file with the `body_classes` parameter, like this:
|
||||
|
||||
```
|
||||
[params]
|
||||
body_classes = "avenir bg-near-white"
|
||||
```
|
||||
|
||||
which will give you a body class like this:
|
||||
|
||||
```
|
||||
<body class="avenir bg-near-white">
|
||||
```
|
||||
|
||||
note: The `body_classes` parameter will not change the font used in post content. To do this, you must use the `post_content_classes` parameter.
|
||||
|
||||
You can find a list of available typefaces [here](https://github.com/tachyons-css/tachyons/blob/v4.7.0/src/_font-family.css).
|
||||
|
||||
And a list of background colors [here](https://github.com/tachyons-css/tachyons/blob/v4.7.0/src/_skins.css#L96).
|
||||
|
||||
_n.b. in future versions we will likely separate the typeface and other body classes._
|
||||
|
||||
### CSS
|
||||
|
||||
Ananke stylesheet is built with Hugo Pipes's [Asset Bundling](https://gohugo.io/hugo-pipes/bundling/#readout) alone to maximize compatibiliy. The theme simply bundles its several files into one minified and fingerprinted (in production) CSS file.
|
||||
|
||||
Ananke uses [Tachyon.io](http://tachyons.io/) utility class library.
|
||||
|
||||
#### Custom CSS
|
||||
|
||||
WARNING: Pending resolution of this [discussion](https://github.com/theNewDynamic/gohugo-theme-ananke/discussions/452#discussioncomment-1865301), Custom CSS only works with Hugo Extended
|
||||
|
||||
In order to complement the default CSS with your own, you can add custom css files to the project.
|
||||
|
||||
1. Just add a `assets/ananke/css` directory to your project and add the file(s) in it.
|
||||
2. Register the files using the `custom_css` key in your site's parameter. The path referenced in the parameter should be relative to the `assets/ananke/css` folder.
|
||||
|
||||
The css files will be added in their registered order to final `main.css` file.
|
||||
|
||||
For example, if your css files are `assets/ananke/css/custom.css` and `assets/ananke/special.css` then add the following to the config file:
|
||||
|
||||
```
|
||||
[params]
|
||||
custom_css = ["custom.css","special.css"]
|
||||
```
|
||||
|
||||
**Note on retrocompatibiliy for custom css**: If the files registered through the `custom_css` setting are not found in `assets/ananke/css` the theme will expect them to live at the given path relative to the static directory and load them as <link> requests.
|
||||
|
||||
### Show Reading Time and Word Count
|
||||
|
||||
If you add a key of `show_reading_time` true to either the Config Params, a page or section's front matter, articles will show the reading time and word count.
|
||||
|
||||
### Adding Scripts to the Page Head
|
||||
|
||||
Some scripts need to be added within the page head. To add your own scripts to the page head, simply insert them into the `head-additions.html` partial located in the `layouts/partials` folder.
|
||||
|
||||
### Logo
|
||||
|
||||
You can replace the title of your site in the top left corner of each page with your own logo. To do that put your own logo into the `static` directory of your website, and add the `site_logo` parameter to the site params in your config file. For example:
|
||||
|
||||
```
|
||||
[params]
|
||||
site_logo = "img/logo.svg"
|
||||
```
|
||||
|
||||
### Set Content Font Color
|
||||
|
||||
You can set the font color of the main content both globally and on individual pages:
|
||||
|
||||
Globally:
|
||||
Set the `text_color` param in the `config.toml` file.
|
||||
|
||||
```
|
||||
[params]
|
||||
text_color = "green"
|
||||
```
|
||||
|
||||
Individual Page (prioritized over global):
|
||||
Set the `text_color` param in a page's markdown file front matter.
|
||||
|
||||
note: The value of `text_color` must be a valid tachyons color class. Alist can be found [here](http://tachyons.io/docs/themes/skins/).
|
||||
|
||||
### Localize date format
|
||||
|
||||
Dates of blog posts and single pages are rendered with the default date format commonly used in the USA and Canada. It is possible to specify a different format.
|
||||
|
||||
```
|
||||
[params]
|
||||
date_format = "2. January 2006"
|
||||
```
|
||||
|
||||
See hugo's documentation of the [`dateFormat` function](https://gohugo.io/functions/dateformat/) for more details.
|
||||
|
||||
### Nearly finished
|
||||
|
||||
In order to see your site in action, run Hugo's built-in local server.
|
||||
|
||||
`$ hugo server`
|
||||
|
||||
Now enter [`localhost:1313`](http://localhost:1313/) in the address bar of your browser.
|
||||
|
||||
## Production
|
||||
|
||||
To run in production (e.g. to have Google Analytics show up), run `HUGO_ENV=production` before your build command. For example:
|
||||
|
||||
```
|
||||
HUGO_ENV=production hugo
|
||||
```
|
||||
|
||||
Note: The above command will not work on Windows. If you are running a Windows OS, use the below command:
|
||||
|
||||
```
|
||||
set HUGO_ENV=production
|
||||
hugo
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
If you find a bug or have an idea for a feature, feel free to use the [issue tracker](https://github.com/theNewDynamic/gohugo-theme-ananke/issues) to let me know.
|
||||
|
||||
TODO:
|
||||
|
||||
- fix hard-coded link to [section](https://github.com/theNewDynamic/gohugo-theme-ananke/blob/master/layouts/index.html#L32)
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
title: "{{ replace .File.ContentBaseName "-" " " | title }}"
|
||||
date: {{ .Date }}
|
||||
tags: []
|
||||
featured_image: ""
|
||||
description: ""
|
||||
---
|
||||
@@ -1,21 +0,0 @@
|
||||
.ananke-socials a{
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
color: #BABABA;
|
||||
fill: currentColor;
|
||||
}
|
||||
.ananke-socials a .icon svg{
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
.ananke-socials a:hover {
|
||||
color: rgb(107, 114, 128);
|
||||
}
|
||||
.new-window {
|
||||
opacity: 0;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
.link-transition:hover .new-window{
|
||||
opacity: 1;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
<svg style="enable-background:new 0 0 67 67;" version="1.1" viewBox="0 0 67 67" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M28.765,50.32h6.744V33.998h4.499l0.596-5.624h-5.095 l0.007-2.816c0-1.466,0.14-2.253,2.244-2.253h2.812V17.68h-4.5c-5.405,0-7.307,2.729-7.307,7.317v3.377h-3.369v5.625h3.369V50.32z M33,64C16.432,64,3,50.569,3,34S16.432,4,33,4s30,13.431,30,30S49.568,64,33,64z" style="fill-rule:evenodd;clip-rule:evenodd;"/></svg>
|
||||
|
Before Width: | Height: | Size: 502 B |
@@ -1 +0,0 @@
|
||||
<svg style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="M29.782 199.732L256 493.714 8.074 309.699c-6.856-5.142-9.712-13.996-7.141-21.993l28.849-87.974zm75.405-174.806c-3.142-8.854-15.709-8.854-18.851 0L29.782 199.732h131.961L105.187 24.926zm56.556 174.806L256 493.714l94.257-293.982H161.743zm349.324 87.974l-28.849-87.974L256 493.714l247.926-184.015c6.855-5.142 9.711-13.996 7.141-21.993zm-85.404-262.78c-3.142-8.854-15.709-8.854-18.851 0l-56.555 174.806h131.961L425.663 24.926z"></path></svg>
|
||||
|
Before Width: | Height: | Size: 588 B |
@@ -1 +0,0 @@
|
||||
<svg style="enable-background:new 0 0 67 67;" version="1.1" viewBox="0 0 67 67" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M42.271,26.578v-0.006c0.502,0,1.005,0.01,1.508-0.002 c0.646-0.017,1.172-0.57,1.172-1.217c0-0.963,0-1.927,0-2.89c0-0.691-0.547-1.24-1.236-1.241c-0.961,0-1.922-0.001-2.883,0 c-0.688,0.001-1.236,0.552-1.236,1.243c-0.001,0.955-0.004,1.91,0.003,2.865c0.001,0.143,0.028,0.291,0.073,0.426 c0.173,0.508,0.639,0.82,1.209,0.823C41.344,26.579,41.808,26.578,42.271,26.578z M33,27.817c-3.384-0.002-6.135,2.721-6.182,6.089 c-0.049,3.46,2.72,6.201,6.04,6.272c3.454,0.074,6.248-2.686,6.321-6.043C39.254,30.675,36.462,27.815,33,27.817z M21.046,31.116 v0.082c0,4.515-0.001,9.03,0,13.545c0,0.649,0.562,1.208,1.212,1.208c7.16,0.001,14.319,0.001,21.479,0 c0.656,0,1.215-0.557,1.215-1.212c0.001-4.509,0-9.02,0-13.528v-0.094h-2.912c0.411,1.313,0.537,2.651,0.376,4.014 c-0.161,1.363-0.601,2.631-1.316,3.803s-1.644,2.145-2.779,2.918c-2.944,2.006-6.821,2.182-9.946,0.428 c-1.579-0.885-2.819-2.12-3.685-3.713c-1.289-2.373-1.495-4.865-0.739-7.451C22.983,31.116,22.021,31.116,21.046,31.116z M45.205,49.255c0.159-0.026,0.318-0.049,0.475-0.083c1.246-0.265,2.264-1.304,2.508-2.557c0.025-0.137,0.045-0.273,0.067-0.409 V21.794c-0.021-0.133-0.04-0.268-0.065-0.401c-0.268-1.367-1.396-2.428-2.78-2.618c-0.058-0.007-0.113-0.02-0.17-0.03H20.761 c-0.147,0.027-0.296,0.047-0.441,0.08c-1.352,0.308-2.352,1.396-2.545,2.766c-0.008,0.057-0.02,0.114-0.029,0.171V46.24 c0.028,0.154,0.05,0.311,0.085,0.465c0.299,1.322,1.427,2.347,2.77,2.52c0.064,0.008,0.13,0.021,0.195,0.03H45.205z M33,64 C16.432,64,3,50.569,3,34S16.432,4,33,4s30,13.431,30,30S49.568,64,33,64z" style="fill-rule:evenodd;clip-rule:evenodd;"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
@@ -1,5 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<circle cx="6.18" cy="17.82" r="2.18"/>
|
||||
<path id="scale" d="M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 286 B |
@@ -1,8 +0,0 @@
|
||||
<svg
|
||||
style="enable-background:new 0 0 67 67;"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
|
||||
>
|
||||
<path d="M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm.869 5.903l3.114 4.567-.975.665-3.115-4.567.976-.665zm-2.812 2.585l4.84 2.838-.6 1.017-4.842-2.838.602-1.017zm-1.276 2.724l5.413 1.521-.291 1.077-5.428-1.458.306-1.14zm-.588 2.461l5.687.569-.103 1.12-5.691-.513.107-1.176zm-.169 2.16h5.835v1.167h-5.835v-1.167zm7.976 3.167h-10v-6h1v5h8v-5h1v6zm.195-8.602l-.945-5.446 1.162-.202.947 5.446-1.164.202z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 567 B |
@@ -1,3 +0,0 @@
|
||||
<svg style="enable-background:new 0 0 32 32;" version="1.1" viewBox="0 0 32 32" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<path d="m 15.433,1.91 c 7.726455,0 14,6.265147 14,14 0,7.726455 -6.265147,14 -14,14 -7.7264547,0 -14,-6.265147 -14,-14 0,-7.7264547 6.265147,-14 14,-14 z m 3.031794,6.2483503 c 0.260348,2.2003597 1.486502,3.5104977 3.611277,3.6448707 v 2.469107 c -1.234553,0.117576 -2.317936,-0.285543 -3.577684,-1.041392 v 4.619076 c 0,5.878824 -6.407918,7.709658 -8.9778045,3.5021 -1.6544691,-2.70426 -0.6382724,-7.466107 4.6694665,-7.65087 v 2.611877 c -0.40312,0.06719 -0.831434,0.167967 -1.226155,0.30234 -1.184163,0.394721 -1.847631,1.15057 -1.662868,2.469106 0.361128,2.527895 4.997001,3.275345 4.610678,-1.662867 V 8.1667487 h 2.561488 z" style="fill-rule:evenodd;clip-rule:evenodd;"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 868 B |
@@ -1 +0,0 @@
|
||||
<svg style="enable-background:new 0 0 67 67;" version="1.1" viewBox="0 0 67 67" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M37.167,22.283c-2.619,0.953-4.274,3.411-4.086,6.101 l0.063,1.038l-1.048-0.127c-3.813-0.487-7.145-2.139-9.974-4.915l-1.383-1.377l-0.356,1.017c-0.754,2.267-0.272,4.661,1.299,6.271 c0.838,0.89,0.649,1.017-0.796,0.487c-0.503-0.169-0.943-0.296-0.985-0.233c-0.146,0.149,0.356,2.076,0.754,2.839 c0.545,1.06,1.655,2.097,2.871,2.712l1.027,0.487l-1.215,0.021c-1.173,0-1.215,0.021-1.089,0.467 c0.419,1.377,2.074,2.839,3.918,3.475l1.299,0.444l-1.131,0.678c-1.676,0.976-3.646,1.526-5.616,1.568 C19.775,43.256,19,43.341,19,43.405c0,0.211,2.557,1.397,4.044,1.864c4.463,1.377,9.765,0.783,13.746-1.568 c2.829-1.673,5.657-5,6.978-8.221c0.713-1.716,1.425-4.851,1.425-6.354c0-0.975,0.063-1.102,1.236-2.267 c0.692-0.678,1.341-1.419,1.467-1.631c0.21-0.403,0.188-0.403-0.88-0.043c-1.781,0.636-2.033,0.551-1.152-0.402 c0.649-0.678,1.425-1.907,1.425-2.267c0-0.063-0.314,0.042-0.671,0.233c-0.377,0.212-1.215,0.53-1.844,0.72l-1.131,0.361l-1.027-0.7 c-0.566-0.381-1.361-0.805-1.781-0.932C39.766,21.902,38.131,21.944,37.167,22.283z M33,64C16.432,64,3,50.569,3,34S16.432,4,33,4 s30,13.431,30,30S49.568,64,33,64z" style="fill-rule:evenodd;clip-rule:evenodd;"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1 +0,0 @@
|
||||
<svg style="enable-background:new 0 0 67 67;" version="1.1" viewBox="0 0 67 67" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M42.527,41.34c-0.278,0-0.478,0.078-0.6,0.244 c-0.121,0.156-0.18,0.424-0.18,0.796v0.896h1.543V42.38c0-0.372-0.062-0.64-0.185-0.796C42.989,41.418,42.792,41.34,42.527,41.34z M36.509,41.309c0.234,0,0.417,0.076,0.544,0.23c0.123,0.155,0.185,0.383,0.185,0.682v4.584c0,0.286-0.053,0.487-0.153,0.611 c-0.1,0.127-0.256,0.189-0.47,0.189c-0.148,0-0.287-0.033-0.421-0.096c-0.135-0.062-0.274-0.171-0.415-0.313v-5.531 c0.119-0.122,0.239-0.213,0.36-0.271C36.26,41.335,36.383,41.309,36.509,41.309z M41.748,44.658v1.672 c0,0.468,0.057,0.792,0.17,0.974c0.118,0.181,0.313,0.269,0.592,0.269c0.289,0,0.491-0.076,0.606-0.229 c0.114-0.153,0.175-0.489,0.175-1.013v-0.405h1.795v0.456c0,0.911-0.217,1.596-0.657,2.059c-0.435,0.459-1.089,0.687-1.958,0.687 c-0.781,0-1.398-0.242-1.847-0.731c-0.448-0.486-0.676-1.157-0.676-2.014v-3.986c0-0.768,0.249-1.398,0.742-1.882 c0.493-0.484,1.128-0.727,1.911-0.727c0.799,0,1.413,0.225,1.843,0.674c0.429,0.448,0.642,1.093,0.642,1.935v2.264H41.748z M38.623,48.495c-0.271,0.336-0.669,0.501-1.187,0.501c-0.343,0-0.646-0.062-0.912-0.192c-0.267-0.129-0.519-0.327-0.746-0.601 v0.681h-1.764V36.852h1.764v3.875c0.237-0.27,0.485-0.478,0.748-0.616c0.267-0.143,0.534-0.212,0.805-0.212 c0.554,0,0.975,0.189,1.265,0.565c0.294,0.379,0.438,0.933,0.438,1.66v4.926C39.034,47.678,38.897,48.159,38.623,48.495z M30.958,48.884v-0.976c-0.325,0.361-0.658,0.636-1.009,0.822c-0.349,0.191-0.686,0.282-1.014,0.282 c-0.405,0-0.705-0.129-0.913-0.396c-0.201-0.266-0.305-0.658-0.305-1.189v-7.422h1.744v6.809c0,0.211,0.037,0.362,0.107,0.457 c0.077,0.095,0.196,0.141,0.358,0.141c0.128,0,0.292-0.062,0.488-0.188c0.197-0.125,0.375-0.283,0.542-0.475v-6.744h1.744v8.878 H30.958z M24.916,38.6v10.284h-1.968V38.6h-2.034v-1.748h6.036V38.6H24.916z M32.994,32.978c0-0.001,12.08,0.018,13.514,1.45 c1.439,1.435,1.455,8.514,1.455,8.555c0,0-0.012,7.117-1.455,8.556C45.074,52.969,32.994,53,32.994,53s-12.079-0.031-13.516-1.462 c-1.438-1.435-1.441-8.502-1.441-8.556c0-0.041,0.004-7.12,1.441-8.555C20.916,32.996,32.994,32.977,32.994,32.978z M42.52,29.255 h-1.966v-1.08c-0.358,0.397-0.736,0.703-1.13,0.909c-0.392,0.208-0.771,0.312-1.14,0.312c-0.458,0-0.797-0.146-1.027-0.437 c-0.229-0.291-0.345-0.727-0.345-1.311v-8.172h1.962v7.497c0,0.231,0.045,0.399,0.127,0.502c0.08,0.104,0.216,0.156,0.399,0.156 c0.143,0,0.327-0.069,0.548-0.206c0.22-0.137,0.423-0.312,0.605-0.527v-7.422h1.966V29.255z M31.847,27.588 c0.139,0.147,0.339,0.219,0.6,0.219c0.266,0,0.476-0.075,0.634-0.223c0.157-0.152,0.235-0.358,0.235-0.618v-5.327 c0-0.214-0.08-0.387-0.241-0.519c-0.16-0.131-0.37-0.196-0.628-0.196c-0.241,0-0.435,0.065-0.586,0.196 c-0.148,0.132-0.225,0.305-0.225,0.519v5.327C31.636,27.233,31.708,27.439,31.847,27.588z M30.408,19.903 c0.528-0.449,1.241-0.674,2.132-0.674c0.812,0,1.48,0.237,2.001,0.711c0.517,0.473,0.777,1.083,0.777,1.828v5.051 c0,0.836-0.255,1.491-0.762,1.968c-0.513,0.476-1.212,0.714-2.106,0.714c-0.858,0-1.547-0.246-2.064-0.736 c-0.513-0.492-0.772-1.152-0.772-1.983v-5.068C29.613,20.954,29.877,20.351,30.408,19.903z M24.262,16h-2.229l2.634,8.003v5.252 h2.213v-5.5L29.454,16h-2.25l-1.366,5.298h-0.139L24.262,16z M33,64C16.432,64,3,50.569,3,34S16.432,4,33,4s30,13.431,30,30 S49.568,64,33,64z" style="fill-rule:evenodd;clip-rule:evenodd;"/></svg>
|
||||
|
Before Width: | Height: | Size: 3.3 KiB |
@@ -1,3 +0,0 @@
|
||||
module:
|
||||
hugoVersion:
|
||||
min: "0.64.0"
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: 'Ananke: Un thème pour Hugo'
|
||||
|
||||
description: 'Le dernier thème dont vous aurez besoin. Peut-être'
|
||||
cascade:
|
||||
featured_image: '/images/gohugo-default-sample-hero-image.jpg'
|
||||
---
|
||||
|
||||
Bienvenu sur mon blog à propos de mon travail du moment. Je travail sur une idée de livre. Vous pouvez lire quelques chapitres plus bas.
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
title: 'Articles'
|
||||
date: 2017-03-02T12:00:00-05:00
|
||||
---
|
||||
|
||||
Exemple de liste d'article français.
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
date: 2017-04-09T10:58:08-04:00
|
||||
description: 'La grande halle'
|
||||
featured_image: '/images/Pope-Edouard-de-Beaumont-1844.jpg'
|
||||
tags: ['scene']
|
||||
title: 'Chapitre I: La grande halle'
|
||||
---
|
||||
|
||||
Généralement, on utilise un texte en faux latin (le texte ne veut rien dire, il a été modifié), le Lorem ipsum ou Lipsum, qui permet donc de faire office de texte d'attente. L'avantage de le mettre en latin est que l'opérateur sait au premier coup d'oeil que la page contenant ces lignes n'est pas valide, et surtout l'attention du client n'est pas dérangée par le contenu, il demeure concentré seulement sur l'aspect graphique.
|
||||
|
||||
Ce texte a pour autre avantage d'utiliser des mots de longueur variable, essayant de simuler une occupation normale. La méthode simpliste consistant à copier-coller un court texte plusieurs fois (« ceci est un faux-texte ceci est un faux-texte ceci est un faux-texte ceci est un faux-texte ceci est un faux-texte ») a l'inconvénient de ne pas permettre une juste appréciation typographique du résultat final.
|
||||
|
||||
Il circule des centaines de versions différentes du Lorem ipsum, mais ce texte aurait originellement été tiré de l'ouvrage de Cicéron, De Finibus Bonorum et Malorum (Liber Primus, 32), texte populaire à cette époque, dont l'une des premières phrases est : « Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... » (« Il n'existe personne qui aime la souffrance pour elle-même, ni qui la recherche ni qui la veuille pour ce qu'elle est... »).
|
||||
@@ -1,7 +0,0 @@
|
||||
module github.com/theNewDynamic/gohugo-theme-ananke/exampleSite
|
||||
|
||||
go 1.14
|
||||
|
||||
replace github.com/theNewDynamic/gohugo-theme-ananke => ../
|
||||
|
||||
require github.com/theNewDynamic/gohugo-theme-ananke v0.0.0-20220211195439-d4e5a698a829 // indirect
|
||||
@@ -1,2 +0,0 @@
|
||||
github.com/theNewDynamic/gohugo-theme-ananke v0.0.0-20220211195439-d4e5a698a829 h1:dxXpDsAqswhvn8pPOC993d217NX/ZbIUSkWz1/awi4s=
|
||||
github.com/theNewDynamic/gohugo-theme-ananke v0.0.0-20220211195439-d4e5a698a829/go.mod h1:bgj7bjD98mZSR/KOYKuF5lcIgEmTnJ763rZH4EseLv4=
|
||||
@@ -1,3 +0,0 @@
|
||||
module github.com/theNewDynamic/gohugo-theme-ananke
|
||||
|
||||
go 1.14
|
||||
@@ -1,38 +0,0 @@
|
||||
[more]
|
||||
other = "Още"
|
||||
|
||||
[allTitle]
|
||||
other = "Всички {{.Title }}"
|
||||
|
||||
[recentTitle]
|
||||
other = "Последни {{.Title }}"
|
||||
|
||||
[readMore]
|
||||
other = "виж още"
|
||||
|
||||
[whatsInThis]
|
||||
other = "Съдържание {{ .Type }}"
|
||||
|
||||
[related]
|
||||
other = "Подобни"
|
||||
|
||||
[yourName]
|
||||
other = "Вашето име"
|
||||
|
||||
[emailAddress]
|
||||
other = "Адрес на елекронна поща"
|
||||
|
||||
[message]
|
||||
other = "Съобщение"
|
||||
|
||||
[emailRequiredNote]
|
||||
other = "Задължително е да предоставите адрес на електронна поща."
|
||||
|
||||
[send]
|
||||
other = "Изпрати"
|
||||
|
||||
[taxonomyPageList]
|
||||
other = "Below you will find pages that utilize the taxonomy term “{{ .Title }}”"
|
||||
|
||||
[pageTitle]
|
||||
other = "{{ .Name }} страница"
|
||||
@@ -1,46 +0,0 @@
|
||||
[more]
|
||||
other = "Lisää"
|
||||
|
||||
[allTitle]
|
||||
other = "Kaikki kirjoitukset"
|
||||
|
||||
[recentTitle]
|
||||
other = "Viimeisimmät kirjoitukset"
|
||||
|
||||
[readMore]
|
||||
other = "lue lisää"
|
||||
|
||||
[whatsInThis]
|
||||
other = "Sisältö"
|
||||
|
||||
[related]
|
||||
other = "Samankaltaisia kirjoituksia"
|
||||
|
||||
[yourName]
|
||||
other = "sinun nimesi"
|
||||
|
||||
[emailAddress]
|
||||
other = "sähköpostiosoite"
|
||||
|
||||
[message]
|
||||
other = "viesti"
|
||||
|
||||
[emailRequiredNote]
|
||||
other = "Sähköpostiosoite on pakollinen tieto."
|
||||
|
||||
[send]
|
||||
other = "Lähetä"
|
||||
|
||||
[taxonomyPageList]
|
||||
other = "Alla ovat sivut, jotka liittyvät hakusanaasi: “{{ .Title }}”"
|
||||
|
||||
[readingTime]
|
||||
one = "Minuutin lukuaika"
|
||||
other = "{{ .Count }} minuutin lukuaika"
|
||||
|
||||
[wordCount]
|
||||
one = "Yksi sana"
|
||||
other = "{{ .Count }} sanaa"
|
||||
|
||||
[pageTitle]
|
||||
other = "{{ .Name }} sivu"
|
||||
@@ -1,35 +0,0 @@
|
||||
[more]
|
||||
other = "अधिक"
|
||||
|
||||
[allTitle]
|
||||
other = "सब {{.Title }}"
|
||||
|
||||
[recentTitle]
|
||||
other = "हाल में {{.Title }}"
|
||||
|
||||
[readMore]
|
||||
other = "और पढ़ें"
|
||||
|
||||
[whatsInThis]
|
||||
other = "इस में क्या है {{ .Type }}"
|
||||
|
||||
[related]
|
||||
other = "संबंधित"
|
||||
|
||||
[yourName]
|
||||
other = "तुम्हारा नाम"
|
||||
|
||||
[emailAddress]
|
||||
other = "ईमेल पता"
|
||||
|
||||
[message]
|
||||
other = "संदेश"
|
||||
|
||||
[emailRequiredNote]
|
||||
other = "एक ईमेल पता की आवश्यकता है।"
|
||||
|
||||
[send]
|
||||
other = "भेजना"
|
||||
|
||||
[taxonomyPageList]
|
||||
other = "नीचे आपको ऐसे पेज मिलेंगे जो वर्गीकरण शब्द का उपयोग करते हैं “{{ .Title }}”"
|
||||
@@ -1,38 +0,0 @@
|
||||
[more]
|
||||
other = "Több"
|
||||
|
||||
[allTitle]
|
||||
other = "További {{.Title }}"
|
||||
|
||||
[recentTitle]
|
||||
other = "Friss {{.Title }}"
|
||||
|
||||
[readMore]
|
||||
other = "Részletek"
|
||||
|
||||
[whatsInThis]
|
||||
other = "{{ .Type }}"
|
||||
|
||||
[related]
|
||||
other = "Ajánlott cikkek"
|
||||
|
||||
[yourName]
|
||||
other = "Név"
|
||||
|
||||
[emailAddress]
|
||||
other = "E-mail cím"
|
||||
|
||||
[message]
|
||||
other = "Üzenet"
|
||||
|
||||
[emailRequiredNote]
|
||||
other = "E-mail cím megadása kötelező."
|
||||
|
||||
[send]
|
||||
other = "Küldés"
|
||||
|
||||
[taxonomyPageList]
|
||||
other = "Ezen a lapon a(z) {{ .Title }} kategóriába tartozó cikkeket találod"
|
||||
|
||||
[pageTitle]
|
||||
other = "{{ .Name }} oldal"
|
||||
@@ -1,38 +0,0 @@
|
||||
[more]
|
||||
other = "Mer"
|
||||
|
||||
[allTitle]
|
||||
other = "Alle {{.Title }}"
|
||||
|
||||
[recentTitle]
|
||||
other = "Nyeste {{.Title }}"
|
||||
|
||||
[readMore]
|
||||
other = "Les mer"
|
||||
|
||||
[whatsInThis]
|
||||
other = "Innhold av {{ .Type }}"
|
||||
|
||||
[related]
|
||||
other = "Relaterte"
|
||||
|
||||
[yourName]
|
||||
other = "Ditt navn"
|
||||
|
||||
[emailAddress]
|
||||
other = "E-postadresse"
|
||||
|
||||
[message]
|
||||
other = "beskjed"
|
||||
|
||||
[emailRequiredNote]
|
||||
other = "E-postadresse er påkrevd"
|
||||
|
||||
[send]
|
||||
other = "Sende"
|
||||
|
||||
[taxonomyPageList]
|
||||
other = "Below you will find pages that utilize the taxonomy term “{{ .Title }}”"
|
||||
|
||||
[pageTitle]
|
||||
other = "{{ .Name }} side"
|
||||
@@ -1,38 +0,0 @@
|
||||
[more]
|
||||
other = "Daha fazla"
|
||||
|
||||
[allTitle]
|
||||
other = "Tüm {{.Title }}"
|
||||
|
||||
[recentTitle]
|
||||
other = "Güncel {{.Title }}"
|
||||
|
||||
[readMore]
|
||||
other = "daha fazla oku"
|
||||
|
||||
[whatsInThis]
|
||||
other = "Bu {{ .Type }} ne içeriyor"
|
||||
|
||||
[related]
|
||||
other = "İlişkili"
|
||||
|
||||
[yourName]
|
||||
other = "İsminiz"
|
||||
|
||||
[emailAddress]
|
||||
other = "E-posta Adresi"
|
||||
|
||||
[message]
|
||||
other = "Mesaj"
|
||||
|
||||
[emailRequiredNote]
|
||||
other = "E-posta adresi zorunludur."
|
||||
|
||||
[send]
|
||||
other = "Gönder"
|
||||
|
||||
[taxonomyPageList]
|
||||
other = "Aşağıda, “{{ .Title }}” sınıflandırma terimini kullanan sayfaları bulacaksınız."
|
||||
|
||||
[pageTitle]
|
||||
other = "{{ .Name }} sayfa"
|
||||
@@ -1,39 +0,0 @@
|
||||
{{/*
|
||||
GetFeaturedImage
|
||||
|
||||
This partial gets the url for featured image for a given page.
|
||||
|
||||
If a featured_image was set in the page's front matter, then that will be used.
|
||||
|
||||
If not set, this will search page resources to find an image that contains the word
|
||||
"cover", and if found, returns the path to that resource.
|
||||
|
||||
If no featured_image was set, and there's no "cover" image in page resources, then
|
||||
this partial returns an empty string (which evaluates to false).
|
||||
|
||||
@return RelPermalink to featured image, or an empty string if not found.
|
||||
|
||||
*/}}
|
||||
|
||||
{{/* Declare a new string variable, $linkToCover */}}
|
||||
{{ $linkToCover := "" }}
|
||||
{{ $matches := "feature,cover" }}
|
||||
{{/* Use the value from front matter if present */}}
|
||||
{{ with .Params.featured_image }}
|
||||
{{ $linkToCover = . }}
|
||||
{{/* If we find a Page Resource matching the exact value, we use it instead. */}}
|
||||
{{ with $.Resources.GetMatch . }}
|
||||
{{ $linkToCover = .RelPermalink }}
|
||||
{{ end }}
|
||||
{{/* Find the first image with 'cover' in the name in this page bundle. */}}
|
||||
{{ else }}
|
||||
{{ with .Resources.ByType "image" }}
|
||||
{{ with .GetMatch (printf "**{%s}*" $matches) }}
|
||||
{{ $linkToCover = .RelPermalink }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* return either a permalink, or an empty string. Note that partials can only have a single
|
||||
return statement, so this needs to be at the end of the partial (and not in the if block) */}}
|
||||
{{ return $linkToCover }}
|
||||
@@ -1,45 +0,0 @@
|
||||
{{/*
|
||||
socials/Get
|
||||
Returns the list of services registered by the user complemented by the built-in service default data if found.
|
||||
|
||||
@author @regisphilibert
|
||||
|
||||
@context Any (.)
|
||||
|
||||
@access public
|
||||
|
||||
@returns Slice of Maps
|
||||
- String (.name)
|
||||
String (.url)
|
||||
String (.label)
|
||||
String (.color)?
|
||||
Bool (.share)?
|
||||
@uses
|
||||
- partial
|
||||
|
||||
@example - Go Template
|
||||
{{ with partialCached "socials/Get" context context }}
|
||||
{{ something = . }}
|
||||
{{ end }}
|
||||
*/}}
|
||||
{{ $socials := slice }}
|
||||
{{ with partial "func/socials/GetRegisteredServices" "GetRegisteredServices" }}
|
||||
{{ range . }}
|
||||
{{ $service := . }}
|
||||
{{/* We fetch the default data and add it to service map if found */}}
|
||||
{{ with partialCached "func/socials/GetServiceData" .name .name }}
|
||||
{{ $service = merge . $service }}
|
||||
{{ end }}
|
||||
{{/* We fetch the icon and add it to service map fi found */}}
|
||||
{{ with partialCached "func/socials/GetServiceIcon" .name .name }}
|
||||
{{ $service = $service | merge (dict "icon" . ) }}
|
||||
{{ end }}
|
||||
{{/* In case no label is provided (on a non-built-in service) we add the .name as label to the service map */}}
|
||||
{{ with .label }}{{ else }}
|
||||
{{ $service = $service | merge (dict "label" $service.name ) }}
|
||||
{{ end }}
|
||||
{{ $socials = $socials | append $service }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ return $socials }}
|
||||
@@ -1,73 +0,0 @@
|
||||
{{/*
|
||||
GetBuiltInServicesData
|
||||
Returns a map whose keys stores the map of defaults data for any built-in service.
|
||||
We use a key to easily grab the data with `index $that github`
|
||||
|
||||
@author @regisphilibert
|
||||
|
||||
@context Any (.)
|
||||
|
||||
@access public
|
||||
|
||||
@returns Map
|
||||
|
||||
|
||||
## Contributors can add a built-in service
|
||||
|
||||
1. Adding it to the following map with the following format:
|
||||
```yaml
|
||||
# [...]
|
||||
shinyandnew:
|
||||
label: Shiny And New
|
||||
color: '#cccccc'
|
||||
```
|
||||
2. Edit README file with new service https://github.com/theNewDynamic/gohugo-theme-ananke/tree/422-improve-socials#built-in-services
|
||||
|
||||
*/}}
|
||||
{{ return (`
|
||||
facebook:
|
||||
share: true
|
||||
label: Facebook
|
||||
color: '#3b5998'
|
||||
twitter:
|
||||
share: true
|
||||
label: Twitter
|
||||
color: '#1da1f2'
|
||||
instagram:
|
||||
label: Instagram
|
||||
color: '#e1306c'
|
||||
youtube:
|
||||
label: YouTube
|
||||
color: '#cd201f'
|
||||
github:
|
||||
label: GitHub
|
||||
color: '#6cc644'
|
||||
gitlab:
|
||||
label: GitLab
|
||||
color: '#FC6D26'
|
||||
keybase:
|
||||
label: Keybase
|
||||
color: '#3d76ff'
|
||||
linkedin:
|
||||
share: true
|
||||
label: LinkedIn
|
||||
color: '#0077b5'
|
||||
medium:
|
||||
label: Medium
|
||||
color: '#0077b5'
|
||||
mastodon:
|
||||
label: Mastodon
|
||||
color: '#3088d4'
|
||||
slack:
|
||||
label: Slack
|
||||
color: '#E01E5A'
|
||||
stackoverflow:
|
||||
label: Stack Overflow
|
||||
color: '#f48024'
|
||||
rss:
|
||||
label: RSS
|
||||
color: '#ff6f1a'
|
||||
tiktok:
|
||||
label: TikTok
|
||||
color: '#fe2c55'
|
||||
` | transform.Unmarshal) }}
|
||||
@@ -1,45 +0,0 @@
|
||||
{{/*
|
||||
socials/GetRegisteredServices
|
||||
Retrieves the list of user registered services.
|
||||
Support legacy settings (root of params with service name as key)
|
||||
|
||||
@author @regisphilibert
|
||||
|
||||
@context Any (.)
|
||||
|
||||
@access private
|
||||
|
||||
@returns Slice of Maps
|
||||
- String (.name)
|
||||
String (.url)
|
||||
String (.label)?
|
||||
String (.color)?
|
||||
|
||||
*/}}
|
||||
|
||||
{{ $registered_services := slice }}
|
||||
{{/* We first look for legacy settings that lives at the root of the site.Params as such (github: https://github.com/
|
||||
theNewDynamic) and them to the list with key as .name and value as .url */}}
|
||||
{{ $user_using_legacy := false }}
|
||||
|
||||
{{ $legacy_api_services := slice "facebook" "twitter" "instagram" "youtube" "github" "gitlab" "keybase" "linkedin" "medium" "mastodon" "slack" "stackoverflow" "rss" }}
|
||||
{{ range $name := $legacy_api_services }}
|
||||
{{ with $url := index site.Params . }}
|
||||
{{/* If we can find a parameter matching the key with a set value, we add it with proper name and url */}}
|
||||
{{/* We also note that user is using legacy for potential potential deprecation warnings */}}
|
||||
{{ $user_using_legacy = true }}
|
||||
{{ $registered_services = $registered_services | append (dict "name" $name "url" $url) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Then we go through the current way of registering services as per referenced in README */}}
|
||||
{{ with site.Params.ananke_socials }}
|
||||
{{ range $service := . }}
|
||||
{{/* Only if the service has a .name, we add it all its keys to the slice of registered services */}}
|
||||
{{ with .name }}
|
||||
{{ $registered_services = $registered_services | append $service }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ return $registered_services }}
|
||||
@@ -1,27 +0,0 @@
|
||||
{{/*
|
||||
socials/GetServiceDefaults
|
||||
Returns the defaults of any given service as stored in GetBuildInServicesDefaults
|
||||
|
||||
@author @regisphilibert
|
||||
|
||||
@context String (.)
|
||||
|
||||
@access private
|
||||
|
||||
@returns Map
|
||||
- String (.label)
|
||||
String (.color)
|
||||
@uses
|
||||
- func/socials/GetBuiltInServicesDefaults
|
||||
|
||||
*/}}
|
||||
{{ $service_data := dict }}
|
||||
{{ with partialCached "func/socials/GetBuiltInServicesDefaults" "socials/GetBuiltInServicesDefaults" }}
|
||||
{{/* If the passed context string (held in $) is found as a key of the map returned by the above returning partial
|
||||
We store it in the returning variable */}}
|
||||
{{ with index . $ }}
|
||||
{{ $service_data = . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ return $service_data }}
|
||||
@@ -1,21 +0,0 @@
|
||||
{{/*
|
||||
GetServiceIcon
|
||||
|
||||
User can overwrite/complement in assets/ananke/socials/{service_name}.svg
|
||||
|
||||
@author @regisphilibert
|
||||
|
||||
@context String (.)
|
||||
|
||||
@access private
|
||||
|
||||
@return String of safe HTML
|
||||
|
||||
@example - Go Template
|
||||
{{ $icon := partialCached "tnd-socials/private/GetIcon" $icon $icon }}
|
||||
*/}}
|
||||
{{ $icon := "" }}
|
||||
{{ with resources.Get (printf "ananke/socials/%s.svg" $) }}
|
||||
{{ $icon = .Content | safeHTML }}
|
||||
{{ end }}
|
||||
{{ return $icon }}
|
||||
@@ -1,69 +0,0 @@
|
||||
{{/*
|
||||
style/GetMainCSS
|
||||
Process the main css stylesheet and return as resource
|
||||
|
||||
@author @regisphilibert
|
||||
|
||||
@context Any (.)
|
||||
|
||||
@returns Resource
|
||||
|
||||
@uses
|
||||
- func/style/GetResource
|
||||
*/}}
|
||||
{{ $main_style := dict }}
|
||||
|
||||
{{/* We prepare a slice of resources to be concatenated as one */}}
|
||||
{{ $assets_to_concat := slice }}
|
||||
{{/* We add locale css files to the slice in the proper order */}}
|
||||
{{ range slice "_tachyons.css" "_code.css" "_hugo-internal-templates.css" "_social-icons.css" "_styles.css" }}
|
||||
{{ with partialCached "func/style/GetResource" . . }}
|
||||
{{ $assets_to_concat = $assets_to_concat | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ with partialCached "func/socials/Get" "socials/Get" }}
|
||||
{{ $socials_rules := slice }}
|
||||
{{ range $service := . }}
|
||||
{{ with .color }}
|
||||
{{ $rule := printf `
|
||||
.ananke-socials a.%s:hover {
|
||||
color: %s
|
||||
}` $service.name $service.color }}
|
||||
{{ $socials_rules = $socials_rules | append $rule }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ with $socials_rules }}
|
||||
{{ $socials_rules = delimit . "" }}
|
||||
{{ $socials_css := $socials_rules | resources.FromString "ananke/css/generated_socials.css" }}
|
||||
{{ $assets_to_concat = $assets_to_concat | append $socials_css }}
|
||||
{{ end }}
|
||||
|
||||
{{ end }}
|
||||
|
||||
{{/* We look for any custom css files registered by the user under `site.params.custom_css and if found in the theme's
|
||||
css asset directory we add to aforementioned slice */}}
|
||||
{{ with site.Params.custom_css }}
|
||||
{{ range . }}
|
||||
{{ with partialCached "func/style/GetResource" . . }}
|
||||
{{ $assets_to_concat = $assets_to_concat | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ with $assets_to_concat }}
|
||||
{{/* We proceed to concatenate the $assets_to_concat */}}
|
||||
{{ $style := . | resources.Concat "ananke/css/main.css" }}
|
||||
|
||||
{{/* We then use toCSS to add sourceMap and minify */}}
|
||||
{{ $options := dict "enableSourceMap" true "precision" 6 }}
|
||||
{{ $style = $style | resources.ToCSS $options | minify }}
|
||||
{{/* We fingerprint in production for cache busting purposes */}}
|
||||
{{ if eq (getenv "HUGO_ENV") "production" }}
|
||||
{{ $style = $style | fingerprint }}
|
||||
{{ end }}
|
||||
{{/* We're ready to set returning variable with resulting resource */}}
|
||||
{{ $main_style = $style }}
|
||||
{{ end }}
|
||||
|
||||
{{ return $main_style }}
|
||||
@@ -1,19 +0,0 @@
|
||||
{{/*
|
||||
style/GetResource
|
||||
Get a style asset stored at `/assets/ananke/css`
|
||||
|
||||
@author @regisphilibert
|
||||
|
||||
@context String (.)
|
||||
|
||||
@access private
|
||||
|
||||
@returns Resource
|
||||
|
||||
*/}}
|
||||
{{ $resource := dict }}
|
||||
{{ with resources.Get (print "/ananke/css/" .) }}
|
||||
{{ $resource = . }}
|
||||
{{ end }}
|
||||
|
||||
{{ return $resource }}
|
||||
@@ -1,15 +0,0 @@
|
||||
{{/*
|
||||
warn
|
||||
Emits a warning using the theme's Header.
|
||||
|
||||
@author @regisphilibert
|
||||
|
||||
@context String
|
||||
|
||||
@access private
|
||||
|
||||
@example - Go Template
|
||||
{{ partial "func/warn" $message }}
|
||||
*/}}
|
||||
{{ $header := "Ananke Theme Warning" }}
|
||||
{{ warnf "\n%s:\n%s" $header . }}
|
||||
@@ -1,3 +0,0 @@
|
||||
{{ if .Site.Params.favicon }}
|
||||
<link rel="shortcut icon" href="{{ relURL ($.Site.Params.favicon) }}" type="image/x-icon" />
|
||||
{{ end }}
|
||||
@@ -1 +0,0 @@
|
||||
{{/* For Users's overwrite */}}
|
||||
@@ -1,9 +0,0 @@
|
||||
{{ with partialCached "func/style/GetMainCSS" "style/GetMainCSS" }}
|
||||
<link rel="stylesheet" href="{{ .RelPermalink }}" >
|
||||
{{ end }}
|
||||
|
||||
{{ range site.Params.custom_css }}
|
||||
{{ with partialCached "func/style/GetResource" . . }}{{ else }}
|
||||
<link rel="stylesheet" href="{{ relURL (.) }}">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
@@ -1,13 +0,0 @@
|
||||
{{ $socials := partialCached "func/socials/Get" "socials/Get" }}
|
||||
<div class="ananke-socials">
|
||||
{{ range $socials }}
|
||||
<a href="{{ .url }}" target="_blank" class="{{ .name }} ananke-social-link link-transition stackoverflow link dib z-999 pt3 pt0-l mr1" title="{{ .label }} link" rel="noopener" aria-label="follow on {{ .label }}——Opens in a new window">
|
||||
{{ with .icon }}
|
||||
<span class="icon">{{ . }}</span>
|
||||
{{ else }}
|
||||
{{ .label }}
|
||||
{{ end }}
|
||||
{{- partial "new-window-icon.html" . -}}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
@@ -1,24 +0,0 @@
|
||||
{{ $title := .Title }}
|
||||
{{ $url := printf "%s" .Permalink | absLangURL }}
|
||||
|
||||
{{ $facebook_href := printf "https://www.facebook.com/sharer.php?u=%s" $url }}
|
||||
{{ $twitter_href := printf "https://twitter.com/share?url=%s&text=%s" $url $title }}
|
||||
{{ with site.Social.twitter }}
|
||||
{{ $twitter_href = printf "%s&via=%s" $twitter_href . }}
|
||||
{{ end }}
|
||||
{{ $linkedin_href := printf "https://www.linkedin.com/shareArticle?mini=true&url=%s&title=%s" $url $title }}
|
||||
{{ $hrefs := dict "facebook" $facebook_href "twitter" $twitter_href "linkedin" $linkedin_href }}
|
||||
|
||||
{{ $services := where (partialCached "func/socials/Get" "socials/Get") "share" true }}
|
||||
{{ if not ($.Param "disable_share") }}
|
||||
<div id="sharing" class="mt3 ananke-socials">
|
||||
{{ range $service := $services }}
|
||||
{{ $href := index $hrefs .name }}
|
||||
<a href="{{ $href }}" class="ananke-social-link {{ .name }} no-underline" aria-label="share on {{ .label }}">
|
||||
{{ with .icon }}
|
||||
<span class="icon"> {{ . }}</span>
|
||||
{{ end }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -1,6 +0,0 @@
|
||||
<svg{{ with .size }} height="{{ . }}" {{ end }} style="enable-background:new 0 0 32 32;" version="1.1" viewBox="0 0 32 32"
|
||||
width="{{ .size }}" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<path
|
||||
d="m 15.433,1.91 c 7.726455,0 14,6.265147 14,14 0,7.726455 -6.265147,14 -14,14 -7.7264547,0 -14,-6.265147 -14,-14 0,-7.7264547 6.265147,-14 14,-14 z m 3.031794,6.2483503 c 0.260348,2.2003597 1.486502,3.5104977 3.611277,3.6448707 v 2.469107 c -1.234553,0.117576 -2.317936,-0.285543 -3.577684,-1.041392 v 4.619076 c 0,5.878824 -6.407918,7.709658 -8.9778045,3.5021 -1.6544691,-2.70426 -0.6382724,-7.466107 4.6694665,-7.65087 v 2.611877 c -0.40312,0.06719 -0.831434,0.167967 -1.226155,0.30234 -1.184163,0.394721 -1.847631,1.15057 -1.662868,2.469106 0.361128,2.527895 4.997001,3.275345 4.610678,-1.662867 V 8.1667487 h 2.561488 z"
|
||||
style="fill-rule:evenodd;clip-rule:evenodd;"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 942 B |
@@ -1,38 +0,0 @@
|
||||
{
|
||||
"author": "budparr",
|
||||
"bugs": {
|
||||
"url": "https://github.com/theNewDynamic/gohugo-theme-ananke/issues"
|
||||
},
|
||||
"comments": {
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"auto-changelog": "project",
|
||||
"cssnano": "project",
|
||||
"postcss-cli": "project",
|
||||
"postcss-cssnext": "project",
|
||||
"tachyons": "project"
|
||||
}
|
||||
},
|
||||
"dependencies": {},
|
||||
"description": "Theme Ananke",
|
||||
"devDependencies": {
|
||||
"auto-changelog": "^1.16.1",
|
||||
"cssnano": "^3.10.0",
|
||||
"postcss-cli": "^7.1.0",
|
||||
"postcss-cssnext": "^2.10.0",
|
||||
"tachyons": "^4.9.1"
|
||||
},
|
||||
"homepage": "https://github.com/theNewDynamic/gohugo-theme-ananke#readme",
|
||||
"keywords": ["hugo", "gohugo"],
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"name": "gohugo-theme-ananke",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/theNewDynamic/gohugo-theme-ananke.git"
|
||||
},
|
||||
"scripts": {
|
||||
"version": "auto-changelog -p --template keepachangelog --commit-limit 0 \u0026\u0026 git add CHANGELOG.md"
|
||||
},
|
||||
"version": "2.7.0"
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
{
|
||||
"author": "budparr",
|
||||
"bugs": {
|
||||
"url": "https://github.com/theNewDynamic/gohugo-theme-ananke/issues"
|
||||
},
|
||||
"comments": {
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"auto-changelog": "project",
|
||||
"cssnano": "project",
|
||||
"postcss-cli": "project",
|
||||
"postcss-cssnext": "project",
|
||||
"tachyons": "project"
|
||||
}
|
||||
},
|
||||
"dependencies": {},
|
||||
"description": "Theme Ananke",
|
||||
"devDependencies": {
|
||||
"auto-changelog": "^1.16.1",
|
||||
"cssnano": "^3.10.0",
|
||||
"postcss-cli": "^7.1.0",
|
||||
"postcss-cssnext": "^2.10.0",
|
||||
"tachyons": "^4.9.1"
|
||||
},
|
||||
"homepage": "https://github.com/theNewDynamic/gohugo-theme-ananke#readme",
|
||||
"keywords": [
|
||||
"hugo",
|
||||
"gohugo"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"name": "gohugo-theme-ananke",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/theNewDynamic/gohugo-theme-ananke.git"
|
||||
},
|
||||
"scripts": {
|
||||
"version": "auto-changelog -p --template keepachangelog --commit-limit 0 && git add CHANGELOG.md",
|
||||
"deploy": " cd exampleSite; hugo;"
|
||||
},
|
||||
"version": "2.7.0"
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{ "Target": "ananke/css/main.min.css", "MediaType": "text/css", "Data": {} }
|
||||
@@ -1 +0,0 @@
|
||||
{ "Target": "ananke/css/main.min.css", "MediaType": "text/css", "Data": {} }
|
||||
1
examples/hugo/themes/etch/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.DS_Store
|
||||
20
examples/hugo/themes/etch/LICENSE
Normal file
@@ -0,0 +1,20 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2020 Lukas Joswiak
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
33
examples/hugo/themes/etch/README.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Etch
|
||||
|
||||
Etch is a simple, responsive theme for [Hugo](https://gohugo.io) with a focus on writing. A live demo is available at https://lukasjoswiak.github.io/etch/.
|
||||
|
||||
<img src="https://raw.githubusercontent.com/LukasJoswiak/etch/master/images/screenshot_small.png" alt="screenshot" width="545px">
|
||||
|
||||
## Features:
|
||||
|
||||
- Homepage with list of posts.
|
||||
- Support for pages.
|
||||
- Responsive design for optimized mobile experience.
|
||||
- Syntax highlighting with customizable theme.
|
||||
- Dark theme which automatically adjusts based on users' setting ([example](https://github.com/LukasJoswiak/etch/wiki/Dark-mode)).
|
||||
- No external dependencies, no JavaScript, no web fonts.
|
||||
- Internationalization friendly: use default English translations or create your own
|
||||
|
||||
## Installation
|
||||
|
||||
To install `etch`, download the repository into the `themes` folder in the root of your site.
|
||||
|
||||
```
|
||||
$ git submodule add https://github.com/LukasJoswiak/etch.git themes/etch
|
||||
```
|
||||
|
||||
Then, use the theme to generate your site.
|
||||
|
||||
```
|
||||
$ hugo server -t etch
|
||||
```
|
||||
|
||||
Use the [sample configuration](https://github.com/LukasJoswiak/etch/wiki/Configuration#sample-configuration) as a starting point. See the [configuration](https://github.com/LukasJoswiak/etch/wiki/Configuration) page for more info.
|
||||
|
||||
Read the [wiki](https://github.com/LukasJoswiak/etch/wiki) to learn about more options.
|
||||
2
examples/hugo/themes/etch/archetypes/default.md
Normal file
@@ -0,0 +1,2 @@
|
||||
+++
|
||||
+++
|
||||
53
examples/hugo/themes/etch/assets/css/dark.css
Normal file
@@ -0,0 +1,53 @@
|
||||
{{ if not (eq .Site.Params.dark "on") -}}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
{{ end -}}
|
||||
html {
|
||||
scrollbar-color: #6c6c6c #2e2e2e;
|
||||
}
|
||||
|
||||
body {
|
||||
color: #ebebeb;
|
||||
background: #121212;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
header#banner a {
|
||||
color: #e0e0e0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
header#banner nav ul li a {
|
||||
color: #cccccc;
|
||||
}
|
||||
|
||||
main#content a {
|
||||
color: #00b1ed;
|
||||
}
|
||||
|
||||
main#content p {
|
||||
color: #f5f5f5;
|
||||
}
|
||||
|
||||
main#content hr {
|
||||
background: #5c5c5c;
|
||||
}
|
||||
|
||||
main#content #toc h4 {
|
||||
color: #d4d4d4;
|
||||
}
|
||||
|
||||
main#content ul#posts small {
|
||||
color: #a7a7a7;
|
||||
}
|
||||
|
||||
main#content ul#posts li a:hover {
|
||||
color: #21c7ff;
|
||||
}
|
||||
|
||||
main#content header#post-header div {
|
||||
color: #a7a7a7;
|
||||
}
|
||||
{{- if not (eq .Site.Params.dark "on") -}}
|
||||
}
|
||||
{{- end -}}
|
||||
281
examples/hugo/themes/etch/assets/css/main.css
Normal file
@@ -0,0 +1,281 @@
|
||||
*, *:before, *:after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: 62.5%;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 16px;
|
||||
font-size: 1.6rem;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
color: #313a3d;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
padding: 0 16px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
header#banner {
|
||||
margin: 25px 0;
|
||||
}
|
||||
|
||||
header#banner a {
|
||||
color: #313a3d;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
header#banner a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
header#banner h2 {
|
||||
display: inline;
|
||||
font-size: 21px;
|
||||
font-size: 2.1rem;
|
||||
margin: 0 8px 0 0;
|
||||
}
|
||||
|
||||
header#banner nav {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
header#banner nav ul {
|
||||
list-style-type: none;
|
||||
font-size: 1.05em;
|
||||
text-transform: lowercase;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
header#banner nav ul li {
|
||||
display: inline;
|
||||
margin: 0 3px;
|
||||
}
|
||||
|
||||
header#banner nav ul li a {
|
||||
color: #454545;
|
||||
}
|
||||
|
||||
main#content a {
|
||||
color: #007dfa;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
main#content a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
main#content h1,
|
||||
main#content h2,
|
||||
main#content h3,
|
||||
main#content h4,
|
||||
main#content h5,
|
||||
main#content h6 {
|
||||
margin-bottom: 0;
|
||||
line-height: 1.15;
|
||||
}
|
||||
|
||||
main#content h3 {
|
||||
font-size: 19px;
|
||||
font-size: 1.9rem;
|
||||
}
|
||||
|
||||
main#content h1 + p,
|
||||
main#content h2 + p,
|
||||
main#content h3 + p,
|
||||
main#content h4 + p,
|
||||
main#content h5 + p,
|
||||
main#content h6 + p {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
main#content p {
|
||||
color: #394548;
|
||||
margin: 16px 0;
|
||||
}
|
||||
|
||||
main#content hr {
|
||||
height: 1px;
|
||||
border: 0;
|
||||
background: #d8d8d8;
|
||||
}
|
||||
|
||||
main#content abbr {
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
/* index.html styles */
|
||||
main#content ul#posts {
|
||||
list-style-type: none;
|
||||
font-size: 16px;
|
||||
font-size: 1.6rem;
|
||||
margin-top: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
main#content ul#posts li {
|
||||
margin: 5px 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
main#content ul#posts small {
|
||||
font-size: 0.8em;
|
||||
color: #767676;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
main#content ul#posts li a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
main#content ul#posts li a:hover {
|
||||
color: #369aff;
|
||||
}
|
||||
|
||||
main#content ul#posts li a:hover small {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
/* single.html styles */
|
||||
main#content header#post-header h1 {
|
||||
display: block;
|
||||
font-size: 23px;
|
||||
font-size: 2.3rem;
|
||||
font-weight: 600;
|
||||
line-height: 1.15;
|
||||
}
|
||||
|
||||
main#content header#post-header > div {
|
||||
display: block;
|
||||
font-size: 0.85em;
|
||||
color: #767676;
|
||||
}
|
||||
|
||||
main#content #toc {
|
||||
border: 1px solid #b1b1b1;
|
||||
border-radius: 1px;
|
||||
line-height: 26px;
|
||||
margin: 16px 0;
|
||||
padding: 9px 14px;
|
||||
}
|
||||
|
||||
main#content #toc h4 {
|
||||
font-size: 1.06em;
|
||||
color: #3d3d3d;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
main#content #toc nav#TableOfContents {
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
main#content #toc nav#TableOfContents > ul, main#content #toc nav#TableOfContents > ol {
|
||||
margin-left: -40px;
|
||||
}
|
||||
|
||||
main#content #toc ul, main#content #toc ol {
|
||||
font-size: 0.98em;
|
||||
margin: 0;
|
||||
padding: 0 0 0 40px;
|
||||
}
|
||||
|
||||
main#content #toc ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
main#content #toc ol {
|
||||
counter-reset: item;
|
||||
}
|
||||
|
||||
main#content #toc ol li {
|
||||
display: block;
|
||||
}
|
||||
|
||||
main#content #toc ol li:before {
|
||||
content: counters(item, ".") ". ";
|
||||
counter-increment: item;
|
||||
}
|
||||
|
||||
main#content img {
|
||||
max-width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
main#content figure {
|
||||
margin: 16px 0;
|
||||
}
|
||||
|
||||
main#content figure img {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
main#content figure figcaption {
|
||||
font-size: 0.92em;
|
||||
font-style: italic;
|
||||
line-height: 22px;
|
||||
text-align: center;
|
||||
margin-top: 6px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
main#content figure figcaption h4 {
|
||||
font-style: normal;
|
||||
display: inline;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
main#content figure figcaption p {
|
||||
display: inline;
|
||||
margin: 0;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
main#content blockquote {
|
||||
font-style: italic;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
margin-left: 50px;
|
||||
padding-left: 15px;
|
||||
border-left: 3px solid #ccc;
|
||||
}
|
||||
|
||||
main#content code,
|
||||
main#content pre {
|
||||
font-family: 'Menlo', monospace;
|
||||
}
|
||||
|
||||
main#content code {
|
||||
font-size: 0.96em;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
main#content pre {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
font-size: 14px;
|
||||
font-size: 1.4rem;
|
||||
white-space: pre;
|
||||
margin: 20px 0;
|
||||
padding: 1.5rem 1.5rem;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
main#content pre code {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
main#content section.footnotes {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
footer#footer {
|
||||
font-size: 14px;
|
||||
font-size: 1.4rem;
|
||||
font-weight: 400;
|
||||
color: #b3b3b3;
|
||||
margin: 40px 0;
|
||||
}
|
||||
52
examples/hugo/themes/etch/assets/css/min770px.css
Normal file
@@ -0,0 +1,52 @@
|
||||
@media (min-width: 770px) {
|
||||
body {
|
||||
width: 600px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
main#content hr {
|
||||
width: 108%;
|
||||
margin-left: -3.8%;
|
||||
}
|
||||
|
||||
/* index.html styles */
|
||||
header#banner h2 {
|
||||
font-size: 25px;
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
|
||||
main#content h3 {
|
||||
font-size: 20px;
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
main#content ul#posts {
|
||||
font-size: 18px;
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
|
||||
/* single.html styles */
|
||||
main#content header#post-header h1 {
|
||||
font-size: 24px;
|
||||
font-size: 2.4rem;
|
||||
}
|
||||
|
||||
main#content img {
|
||||
max-width: 108%;
|
||||
margin-left: -3.8%;
|
||||
}
|
||||
|
||||
main#content figure {
|
||||
margin-left: -3.8%;
|
||||
}
|
||||
|
||||
main#content figure img {
|
||||
max-width: 108%;
|
||||
}
|
||||
|
||||
main#content pre {
|
||||
width: 108%;
|
||||
margin-left: -3.8%;
|
||||
padding: 1.5rem 2.2rem;
|
||||
}
|
||||
}
|
||||
59
examples/hugo/themes/etch/assets/css/syntax.css
Normal file
@@ -0,0 +1,59 @@
|
||||
/* Background */ .chroma { color: #f8f8f2; background-color: #272822 }
|
||||
/* Error */ .chroma .err { color: #960050; background-color: #1e0010 }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
|
||||
/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
|
||||
/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* Keyword */ .chroma .k { color: #66d9ef }
|
||||
/* KeywordConstant */ .chroma .kc { color: #66d9ef }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #66d9ef }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #f92672 }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #66d9ef }
|
||||
/* KeywordReserved */ .chroma .kr { color: #66d9ef }
|
||||
/* KeywordType */ .chroma .kt { color: #66d9ef }
|
||||
/* NameAttribute */ .chroma .na { color: #a6e22e }
|
||||
/* NameClass */ .chroma .nc { color: #a6e22e }
|
||||
/* NameConstant */ .chroma .no { color: #66d9ef }
|
||||
/* NameDecorator */ .chroma .nd { color: #a6e22e }
|
||||
/* NameException */ .chroma .ne { color: #a6e22e }
|
||||
/* NameFunction */ .chroma .nf { color: #a6e22e }
|
||||
/* NameOther */ .chroma .nx { color: #a6e22e }
|
||||
/* NameTag */ .chroma .nt { color: #f92672 }
|
||||
/* Literal */ .chroma .l { color: #ae81ff }
|
||||
/* LiteralDate */ .chroma .ld { color: #e6db74 }
|
||||
/* LiteralString */ .chroma .s { color: #e6db74 }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #e6db74 }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #e6db74 }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #e6db74 }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #e6db74 }
|
||||
/* LiteralStringDoc */ .chroma .sd { color: #e6db74 }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #e6db74 }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #ae81ff }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color: #e6db74 }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #e6db74 }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #e6db74 }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #e6db74 }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #e6db74 }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #e6db74 }
|
||||
/* LiteralNumber */ .chroma .m { color: #ae81ff }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #ae81ff }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #ae81ff }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #ae81ff }
|
||||
/* Operator */ .chroma .o { color: #f92672 }
|
||||
/* OperatorWord */ .chroma .ow { color: #f92672 }
|
||||
/* Comment */ .chroma .c { color: #75715e }
|
||||
/* CommentHashbang */ .chroma .ch { color: #75715e }
|
||||
/* CommentMultiline */ .chroma .cm { color: #75715e }
|
||||
/* CommentSingle */ .chroma .c1 { color: #75715e }
|
||||
/* CommentSpecial */ .chroma .cs { color: #75715e }
|
||||
/* CommentPreproc */ .chroma .cp { color: #75715e }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #75715e }
|
||||
/* GenericDeleted */ .chroma .gd { color: #f92672 }
|
||||
/* GenericEmph */ .chroma .ge { font-style: italic }
|
||||
/* GenericInserted */ .chroma .gi { color: #a6e22e }
|
||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||
/* GenericSubheading */ .chroma .gu { color: #75715e }
|
||||
19
examples/hugo/themes/etch/i18n/en.toml
Normal file
@@ -0,0 +1,19 @@
|
||||
# Learn how to use Date format (date, created, updated)
|
||||
# -> https://gohugo.io/functions/dateformat/
|
||||
|
||||
[posts]
|
||||
|
||||
[posts.title]
|
||||
other = "Posts"
|
||||
|
||||
[posts.date]
|
||||
other = "Jan 2, 2006"
|
||||
|
||||
|
||||
[post]
|
||||
|
||||
[post.created]
|
||||
other = "January 2, 2006"
|
||||
|
||||
[post.updated]
|
||||
other = "Updated January 2, 2006"
|
||||
BIN
examples/hugo/themes/etch/images/screenshot.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
examples/hugo/themes/etch/images/screenshot_dark.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
examples/hugo/themes/etch/images/screenshot_small.png
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
examples/hugo/themes/etch/images/tn.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
examples/hugo/themes/etch/images/tn_dark.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
11
examples/hugo/themes/etch/layouts/_default/baseof.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
{{- partial "head.html" . -}}
|
||||
<body>
|
||||
{{- partial "header.html" . -}}
|
||||
<main id="content">
|
||||
{{- block "main" . }}{{- end }}
|
||||
</main>
|
||||
{{- partial "footer.html" . -}}
|
||||
</body>
|
||||
</html>
|
||||
6
examples/hugo/themes/etch/layouts/_default/li.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<li>
|
||||
<a href="{{ .Permalink }}">
|
||||
{{ .Title }}
|
||||
<small><time>{{ .Date | time.Format (i18n "posts.date") }}</time></small>
|
||||
</a>
|
||||
</li>
|
||||
3
examples/hugo/themes/etch/layouts/_default/list.html
Normal file
@@ -0,0 +1,3 @@
|
||||
{{ define "main" }}
|
||||
{{- partial "posts.html" . -}}
|
||||
{{ end }}
|
||||
41
examples/hugo/themes/etch/layouts/_default/rss.xml
Normal file
@@ -0,0 +1,41 @@
|
||||
{{- $pctx := . -}}
|
||||
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
|
||||
{{- $pages := slice -}}
|
||||
{{- if or $.IsHome $.IsSection -}}
|
||||
{{- $pages = $pctx.RegularPages -}}
|
||||
{{- else -}}
|
||||
{{- $pages = $pctx.Pages -}}
|
||||
{{- end -}}
|
||||
{{- $limit := .Site.Config.Services.RSS.Limit -}}
|
||||
{{- if ge $limit 1 -}}
|
||||
{{- $pages = $pages | first $limit -}}
|
||||
{{- end -}}
|
||||
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
|
||||
<link>{{ .Permalink }}</link>
|
||||
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
|
||||
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
||||
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
|
||||
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
|
||||
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
||||
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
||||
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
|
||||
{{ with .OutputFormats.Get "RSS" }}
|
||||
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
|
||||
{{ end }}
|
||||
{{ range where .Site.Pages "Kind" "page" }}
|
||||
{{ if or (eq .Section "posts") (eq .Section "post") }}
|
||||
<item>
|
||||
<title>{{ .Title }}</title>
|
||||
<link>{{ .Permalink }}</link>
|
||||
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
||||
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||
<guid>{{ .Permalink }}</guid>
|
||||
<description>{{ .Content | html }}</description>
|
||||
</item>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</channel>
|
||||
</rss>
|
||||
17
examples/hugo/themes/etch/layouts/_default/single.html
Normal file
@@ -0,0 +1,17 @@
|
||||
{{ define "main" }}
|
||||
<article>
|
||||
<header id="post-header">
|
||||
<h1>{{ .Title }}</h1>
|
||||
<div>
|
||||
{{- if isset .Params "date" -}}
|
||||
{{ if eq .Lastmod .Date }}
|
||||
<time>{{ .Date | time.Format (i18n "post.created") }}</time>
|
||||
{{ else }}
|
||||
<time>{{ .Lastmod | time.Format (i18n "post.updated") }}</time>
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
</div>
|
||||
</header>
|
||||
{{- .Content -}}
|
||||
</article>
|
||||
{{ end }}
|
||||
8
examples/hugo/themes/etch/layouts/_default/taxonomy.html
Normal file
@@ -0,0 +1,8 @@
|
||||
{{ define "main" }}
|
||||
<h3>{{ .Title }}</h3>
|
||||
<ul id="posts">
|
||||
{{- range .Pages }}
|
||||
{{ .Render "li" }}
|
||||
{{- end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
4
examples/hugo/themes/etch/layouts/index.html
Normal file
@@ -0,0 +1,4 @@
|
||||
{{ define "main" }}
|
||||
{{ .Content }}
|
||||
{{- partial "posts.html" . -}}
|
||||
{{ end }}
|
||||
3
examples/hugo/themes/etch/layouts/partials/footer.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<footer id="footer">
|
||||
{{ .Site.Params.copyright }}
|
||||
</footer>
|
||||
31
examples/hugo/themes/etch/layouts/partials/head.html
Normal file
@@ -0,0 +1,31 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
{{ with .Site.Params.description -}}
|
||||
<meta name="description" content="{{ . }}">
|
||||
{{ end }}
|
||||
{{ printf `<link rel="shortcut icon" href="%s">` ("favicon.ico" | absURL) | safeHTML }}
|
||||
{{ with .OutputFormats.Get "rss" -}}
|
||||
{{ printf `<link rel="%s" type="%s" href="%s" title="%s">` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
|
||||
{{ end -}}
|
||||
|
||||
{{ $resources := slice -}}
|
||||
|
||||
{{ $resources = $resources | append (resources.Get "css/main.css") -}}
|
||||
|
||||
{{ $resources = $resources | append (resources.Get "css/min770px.css") -}}
|
||||
|
||||
{{ $dark := .Site.Params.dark | default "auto" -}}
|
||||
{{ if not (eq $dark "off") -}}
|
||||
{{ $resources = $resources | append (resources.Get "css/dark.css" | resources.ExecuteAsTemplate "dark.css" .) -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ if .Site.Params.highlight -}}
|
||||
{{ $resources = $resources | append (resources.Get "css/syntax.css") -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $css := $resources | resources.Concat "css/style.css" | minify }}
|
||||
{{ printf `<link rel="stylesheet" href="%s">` $css.RelPermalink | safeHTML }}
|
||||
|
||||
<title>{{ .Title }}</title>
|
||||
</head>
|
||||
12
examples/hugo/themes/etch/layouts/partials/header.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<header id="banner">
|
||||
<h2><a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a></h2>
|
||||
<nav>
|
||||
<ul>
|
||||
{{ range .Site.Menus.main.ByWeight -}}
|
||||
<li>
|
||||
{{ .Pre }}<a href="{{ .URL }}" title="{{ .Title }}">{{- .Name -}}</a>{{ .Post }}
|
||||
</li>
|
||||
{{- end }}
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
6
examples/hugo/themes/etch/layouts/partials/posts.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<h3>{{ i18n "posts.title" }}</h3>
|
||||
<ul id="posts">
|
||||
{{- range where site.RegularPages "Type" "in" site.Params.mainSections }}
|
||||
{{ .Render "li" }}
|
||||
{{- end }}
|
||||
</ul>
|
||||
4
examples/hugo/themes/etch/layouts/shortcodes/toc.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<aside id="toc">
|
||||
<h4>Table of Contents</h4>
|
||||
{{ .Page.TableOfContents }}
|
||||
</aside>
|
||||
13
examples/hugo/themes/etch/theme.toml
Normal file
@@ -0,0 +1,13 @@
|
||||
name = "Etch"
|
||||
license = "MIT"
|
||||
licenselink = "https://github.com/LukasJoswiak/etch/blob/master/LICENSE"
|
||||
description = "Lightweight Hugo theme with a focus on content"
|
||||
homepage = "https://github.com/LukasJoswiak/etch"
|
||||
demosite = "https://lukasjoswiak.github.io/etch/"
|
||||
tags = ["simple", "minimal", "clean", "fast", "blog", "responsive", "dark mode", "privacy"]
|
||||
features = ["fast", "blog", "syntax highlighting", "dark mode"]
|
||||
min_version = "0.41"
|
||||
|
||||
[author]
|
||||
name = "Lukas Joswiak"
|
||||
homepage = "https://lukasjoswiak.com"
|
||||
@@ -32,7 +32,6 @@
|
||||
"@typescript-eslint/parser": "4.28.0",
|
||||
"async-retry": "1.2.3",
|
||||
"buffer-replace": "1.0.0",
|
||||
"cheerio": "1.0.0-rc.3",
|
||||
"eslint": "7.29.0",
|
||||
"eslint-config-prettier": "8.3.0",
|
||||
"eslint-plugin-jest": "24.3.6",
|
||||
@@ -43,8 +42,9 @@
|
||||
"node-fetch": "2.6.1",
|
||||
"npm-package-arg": "6.1.0",
|
||||
"prettier": "2.3.1",
|
||||
"ts-eager": "2.0.2",
|
||||
"ts-jest": "27.0.4",
|
||||
"turbo": "1.0.18"
|
||||
"turbo": "1.1.9"
|
||||
},
|
||||
"scripts": {
|
||||
"lerna": "lerna",
|
||||
@@ -54,9 +54,10 @@
|
||||
"publish-from-github": "./utils/publish.sh",
|
||||
"changelog": "node utils/changelog.js",
|
||||
"build": "turbo run build",
|
||||
"vercel-build": "mkdir -p public && echo '<a href=\"https://vercel.com/import\">Import</a>' > public/output.html",
|
||||
"vercel-build": "yarn build && cd api && node -r ts-eager/register ./_lib/script/build.ts",
|
||||
"pre-commit": "lint-staged",
|
||||
"test-unit": "node utils/run.js test-unit",
|
||||
"test": "jest --rootDir=\"test\" --testPathPattern=\"\\.test.js\"",
|
||||
"test-unit": "yarn test && node utils/run.js test-unit",
|
||||
"test-integration-cli": "node utils/run.js test-integration-cli",
|
||||
"test-integration-once": "node utils/run.js test-integration-once",
|
||||
"test-integration-dev": "node utils/run.js test-integration-dev",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/build-utils",
|
||||
"version": "2.14.1-canary.3",
|
||||
"version": "2.15.0",
|
||||
"license": "MIT",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.js",
|
||||
@@ -30,7 +30,7 @@
|
||||
"@types/node-fetch": "^2.1.6",
|
||||
"@types/semver": "6.0.0",
|
||||
"@types/yazl": "^2.4.1",
|
||||
"@vercel/frameworks": "0.6.1-canary.2",
|
||||
"@vercel/frameworks": "0.7.0",
|
||||
"@vercel/ncc": "0.24.0",
|
||||
"aggregate-error": "3.0.1",
|
||||
"async-retry": "1.2.3",
|
||||
|
||||
44
packages/build-utils/src/edge-function.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import type { Files } from './types';
|
||||
|
||||
/**
|
||||
* An Edge Functions output
|
||||
*/
|
||||
export class EdgeFunction {
|
||||
type: 'EdgeFunction';
|
||||
|
||||
/**
|
||||
* A display name for the edge function.
|
||||
*/
|
||||
name: string;
|
||||
|
||||
/**
|
||||
* The deployment target.
|
||||
* Only v8-worker is currently supported.
|
||||
*/
|
||||
deploymentTarget: 'v8-worker';
|
||||
|
||||
/**
|
||||
* The entrypoint for the edge function.
|
||||
*/
|
||||
entrypoint: string;
|
||||
|
||||
/**
|
||||
* The list of files to be included in the edge function bundle.
|
||||
*/
|
||||
files: Files;
|
||||
|
||||
/**
|
||||
* Extra environment variables in use for the user code, to be
|
||||
* assigned to the edge function.
|
||||
*/
|
||||
envVarsInUse?: string[];
|
||||
|
||||
constructor(params: Omit<EdgeFunction, 'type'>) {
|
||||
this.type = 'EdgeFunction';
|
||||
this.name = params.name;
|
||||
this.deploymentTarget = params.deploymentTarget;
|
||||
this.entrypoint = params.entrypoint;
|
||||
this.files = params.files;
|
||||
this.envVarsInUse = params.envVarsInUse;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import assert from 'assert';
|
||||
import intoStream from 'into-stream';
|
||||
import { File } from './types';
|
||||
import { FileBase } from './types';
|
||||
|
||||
interface FileBlobOptions {
|
||||
mode?: number;
|
||||
@@ -14,7 +14,7 @@ interface FromStreamOptions {
|
||||
stream: NodeJS.ReadableStream;
|
||||
}
|
||||
|
||||
export default class FileBlob implements File {
|
||||
export default class FileBlob implements FileBase {
|
||||
public type: 'FileBlob';
|
||||
public mode: number;
|
||||
public data: string | Buffer;
|
||||
@@ -48,6 +48,10 @@ export default class FileBlob implements File {
|
||||
return new FileBlob({ mode, contentType, data });
|
||||
}
|
||||
|
||||
async toStreamAsync(): Promise<NodeJS.ReadableStream> {
|
||||
return this.toStream();
|
||||
}
|
||||
|
||||
toStream(): NodeJS.ReadableStream {
|
||||
return intoStream(this.data);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import fs from 'fs-extra';
|
||||
import multiStream from 'multistream';
|
||||
import path from 'path';
|
||||
import Sema from 'async-sema';
|
||||
import { File } from './types';
|
||||
import { FileBase } from './types';
|
||||
|
||||
const semaToPreventEMFILE = new Sema(20);
|
||||
|
||||
@@ -20,7 +20,7 @@ interface FromStreamOptions {
|
||||
fsPath: string;
|
||||
}
|
||||
|
||||
class FileFsRef implements File {
|
||||
class FileFsRef implements FileBase {
|
||||
public type: 'FileFsRef';
|
||||
public mode: number;
|
||||
public fsPath: string;
|
||||
|
||||
@@ -3,7 +3,7 @@ import fetch from 'node-fetch';
|
||||
import multiStream from 'multistream';
|
||||
import retry from 'async-retry';
|
||||
import Sema from 'async-sema';
|
||||
import { File } from './types';
|
||||
import { FileBase } from './types';
|
||||
|
||||
interface FileRefOptions {
|
||||
mode?: number;
|
||||
@@ -23,7 +23,7 @@ class BailableError extends Error {
|
||||
}
|
||||
}
|
||||
|
||||
export default class FileRef implements File {
|
||||
export default class FileRef implements FileBase {
|
||||
public type: 'FileRef';
|
||||
public mode: number;
|
||||
public digest: string;
|
||||
|
||||
@@ -3,6 +3,7 @@ import debug from '../debug';
|
||||
import FileFsRef from '../file-fs-ref';
|
||||
import { File, Files, Meta } from '../types';
|
||||
import { remove, mkdirp, readlink, symlink } from 'fs-extra';
|
||||
import streamToBuffer from './stream-to-buffer';
|
||||
|
||||
export interface DownloadedFiles {
|
||||
[filePath: string]: FileFsRef;
|
||||
@@ -15,19 +16,44 @@ export function isSymbolicLink(mode: number): boolean {
|
||||
return (mode & S_IFMT) === S_IFLNK;
|
||||
}
|
||||
|
||||
async function prepareSymlinkTarget(
|
||||
file: File,
|
||||
fsPath: string
|
||||
): Promise<string> {
|
||||
const mkdirPromise = mkdirp(path.dirname(fsPath));
|
||||
if (file.type === 'FileFsRef') {
|
||||
const [target] = await Promise.all([readlink(file.fsPath), mkdirPromise]);
|
||||
return target;
|
||||
}
|
||||
|
||||
if (file.type === 'FileRef' || file.type === 'FileBlob') {
|
||||
const targetPathBufferPromise = await streamToBuffer(
|
||||
await file.toStreamAsync()
|
||||
);
|
||||
const [targetPathBuffer] = await Promise.all([
|
||||
targetPathBufferPromise,
|
||||
mkdirPromise,
|
||||
]);
|
||||
return targetPathBuffer.toString('utf8');
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`file.type "${(file as any).type}" not supported for symlink`
|
||||
);
|
||||
}
|
||||
|
||||
async function downloadFile(file: File, fsPath: string): Promise<FileFsRef> {
|
||||
const { mode } = file;
|
||||
if (mode && isSymbolicLink(mode) && file.type === 'FileFsRef') {
|
||||
const [target] = await Promise.all([
|
||||
readlink((file as FileFsRef).fsPath),
|
||||
mkdirp(path.dirname(fsPath)),
|
||||
]);
|
||||
|
||||
if (isSymbolicLink(mode)) {
|
||||
const target = await prepareSymlinkTarget(file, fsPath);
|
||||
|
||||
await symlink(target, fsPath);
|
||||
return FileFsRef.fromFsPath({ mode, fsPath });
|
||||
} else {
|
||||
const stream = file.toStream();
|
||||
return FileFsRef.fromStream({ mode, stream, fsPath });
|
||||
}
|
||||
|
||||
const stream = file.toStream();
|
||||
return FileFsRef.fromStream({ mode, stream, fsPath });
|
||||
}
|
||||
|
||||
async function removeFile(basePath: string, fileMatched: string) {
|
||||
|
||||
@@ -465,6 +465,8 @@ export async function runPackageJsonScript(
|
||||
|
||||
if (cliType === 'npm') {
|
||||
opts.prettyCommand = `npm run ${scriptName}`;
|
||||
} else if (cliType === 'pnpm') {
|
||||
opts.prettyCommand = `pnpm run ${scriptName}`;
|
||||
} else {
|
||||
opts.prettyCommand = `yarn run ${scriptName}`;
|
||||
}
|
||||
|
||||