mirror of
https://github.com/thomasjsn/hugo-theme-hello-friend.git
synced 2024-11-23 08:15:07 +01:00
Init Hugo Module
This commit is contained in:
parent
b91e898982
commit
54a137aaad
56
README.md
56
README.md
@ -23,7 +23,6 @@
|
||||
- [Found a bug?](#bug)
|
||||
- [New cool idea or feature](#feature)
|
||||
- [`Hello Friend` theme user?](#hello-friend-theme-user)
|
||||
- [Sponsoring](#sponsoring)
|
||||
- [License](#license)
|
||||
|
||||
## Features
|
||||
@ -53,7 +52,7 @@
|
||||
font-size: 1rem;
|
||||
overflow: auto;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
@ -94,19 +93,56 @@ Some enhancements have been made to Hugo's [internal RSS](https://github.com/goh
|
||||
|
||||
You can download the theme manually by going to [https://github.com/panr/hugo-theme-hello-friend.git](https://github.com/panr/hugo-theme-hello-friend.git) and pasting it to `themes/hello-friend` in your root directory.
|
||||
|
||||
You can also clone it directly to your Hugo folder:
|
||||
### Install theme as Hugo Module
|
||||
|
||||
```bash
|
||||
# If this is the first time you're using Hugo Modules
|
||||
# in your project. You have to initiate your own module before
|
||||
# you fetch the theme module.
|
||||
#
|
||||
# hugo mod init [your website/module name]
|
||||
hugo mod get github.com/panr/hugo-theme-hello-friend
|
||||
```
|
||||
|
||||
and in your config file add:
|
||||
|
||||
```toml
|
||||
[module]
|
||||
# this is needed when you fetch the theme as a submodule to your repo.
|
||||
# replacements = "github.com/panr/hugo-theme-hello-friend -> themes/hello-friend"
|
||||
[[module.imports]]
|
||||
path = 'github.com/panr/hugo-theme-hello-friend'
|
||||
```
|
||||
|
||||
Keep in mind that the theme by default won't show up in the `themes` directory. This means that you are using the theme as it was on the repository at the moment you fetched it. Your local `go.sum` file keeps all the references. Read more about Hugo Modules in the [official documentation](https://gohugo.io/hugo-modules/).
|
||||
|
||||
⚠️ If you encounter any issues with:
|
||||
|
||||
```bash
|
||||
Error: module "hello-friend" not found; either add it as a Hugo Module or store it in "[...your custom path]/themes".: module does not exist
|
||||
```
|
||||
|
||||
then please try to remove `theme = "hello-friend"` from your config file.
|
||||
|
||||
⚠️ **The theme needs at least Hugo version 0.74.x**.
|
||||
|
||||
### Install theme locally
|
||||
|
||||
```bash
|
||||
git clone https://github.com/panr/hugo-theme-hello-friend.git themes/hello-friend
|
||||
```
|
||||
|
||||
If you don't want to make any radical changes, it's the best option, because you can get new updates when they are available. To do so, include it as a git submodule:
|
||||
This will clone the repository directly to the `themes/hello-friend` directory.
|
||||
|
||||
### Install theme as a submodule
|
||||
|
||||
```bash
|
||||
git submodule add -f https://github.com/panr/hugo-theme-hello-friend.git themes/hello-friend
|
||||
```
|
||||
|
||||
⚠️ **The theme needs at least Hugo version 0.74.x**.
|
||||
This will install the repository as a sumbodule in the `themes/hello-friend` directory.
|
||||
|
||||
⚠️ **The theme needs at least Hugo version 0.90.x**.
|
||||
|
||||
## How to run your site
|
||||
|
||||
@ -125,6 +161,8 @@ The theme doesn't require any advanced configuration. Just copy:
|
||||
```toml
|
||||
baseurl = "/"
|
||||
languageCode = "en-us"
|
||||
# Add it only if you keep the theme in the `themes` directory.
|
||||
# Remove it if you use the theme as a remote Hugo Module.
|
||||
theme = "hello-friend"
|
||||
paginate = 5
|
||||
|
||||
@ -281,14 +319,8 @@ Sounds OK? Cool, let's rock! 🤘
|
||||
|
||||
I'd be happy to know more about you and what you are doing. If you want to share it, please make a contribution and [add your site to the list](https://github.com/panr/hugo-theme-hello-friend/blob/master/USERS.md)! 🤗
|
||||
|
||||
## Sponsoring
|
||||
|
||||
If you like my work and want to support the development of the project, now you can! Just:
|
||||
|
||||
<a href="https://www.buymeacoffee.com/panr" target="_blank"><img src="https://res.cloudinary.com/panr/image/upload/v1579374705/buymeacoffee_y6yvov.svg" alt="Buy Me A Coffee" ></a>
|
||||
|
||||
## License
|
||||
|
||||
Copyright © 2019-2020 Radosław Kozieł ([@panr](https://twitter.com/panr))
|
||||
Copyright © 2019-2022 Radosław Kozieł ([@panr](https://twitter.com/panr))
|
||||
|
||||
The theme is released under the MIT License. Check the [original theme license](https://github.com/panr/hugo-theme-hello-friend/blob/master/LICENSE.md) for additional licensing information.
|
||||
|
@ -11,7 +11,7 @@
|
||||
align-items: flex-start;
|
||||
padding: 10px 0;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
&-year {
|
||||
margin-top: 40px;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
width: 200px;
|
||||
opacity: .5;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
margin: 10px 0 0;
|
||||
}
|
||||
}
|
@ -11,7 +11,7 @@
|
||||
width: 760px;
|
||||
max-width: 100%;
|
||||
|
||||
@media (--tablet) {
|
||||
@media ($tablet) {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
@ -36,14 +36,14 @@
|
||||
padding-right: 10px;
|
||||
margin-right: 10px;
|
||||
|
||||
@media (--tablet) {
|
||||
@media ($tablet) {
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (--tablet) {
|
||||
@media ($tablet) {
|
||||
flex-direction: column;
|
||||
margin-top: 10px;
|
||||
}
|
@ -11,7 +11,7 @@
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@
|
||||
align-items: center;
|
||||
margin-right: 5px;
|
||||
|
||||
@mixin greater-icon 8px;
|
||||
@include greater-icon(8px);
|
||||
}
|
||||
|
||||
&__text {
|
@ -23,7 +23,7 @@ body {
|
||||
-webkit-overflow-scrolling: touch;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
@ -48,7 +48,7 @@ h4 {
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
@ -150,7 +150,7 @@ pre {
|
||||
font-size: .9rem;
|
||||
overflow: auto;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
@ -170,7 +170,7 @@ blockquote {
|
||||
margin: 40px;
|
||||
padding: 10px 20px;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
}
|
||||
@ -216,7 +216,7 @@ ul, ol {
|
||||
margin-left: 40px;
|
||||
padding: 0;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
@ -240,7 +240,7 @@ ol ol {
|
||||
justify-content: center;
|
||||
margin: 50px 0;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
@ -264,7 +264,7 @@ hr {
|
||||
}
|
||||
|
||||
blockquote.twitter-tweet {
|
||||
background: hsl(206deg 62% 45% / 10%);
|
||||
background: hsla(206deg, 62%, 45%, 0.1);
|
||||
border: none;
|
||||
padding: 30px;
|
||||
color: inherit;
|
@ -1,4 +1,4 @@
|
||||
@define-mixin menu {
|
||||
@mixin menu {
|
||||
position: absolute;
|
||||
background: var(--header);
|
||||
box-shadow: var(--shadow);
|
||||
@ -18,8 +18,8 @@
|
||||
padding-right: 24px;
|
||||
font-weight: 500;
|
||||
|
||||
@media (--phone) {
|
||||
@mixin menu;
|
||||
@media ($phone) {
|
||||
@include menu;
|
||||
border: none;
|
||||
top: 50px;
|
||||
right: 10px;
|
||||
@ -39,7 +39,7 @@
|
||||
padding: 0;
|
||||
|
||||
&--desktop {
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@ -47,7 +47,7 @@
|
||||
&--mobile {
|
||||
display: none;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@ -61,7 +61,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
padding: 0;
|
||||
@ -84,7 +84,7 @@
|
||||
}
|
||||
|
||||
&-more {
|
||||
@mixin menu;
|
||||
@include menu;
|
||||
top: 35px;
|
||||
left: 0;
|
||||
|
||||
@ -101,7 +101,7 @@
|
||||
transform: rotate(90deg);
|
||||
line-height: 1;
|
||||
|
||||
@mixin greater-icon 5px;
|
||||
@include greater-icon(5px);
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
padding: 20px;
|
||||
margin: 20px auto;
|
||||
|
||||
@media (--tablet) {
|
||||
@media ($tablet) {
|
||||
max-width: 660px;
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
font-size: 1rem;
|
||||
margin-bottom: 10px;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
font-size: .85rem;
|
||||
}
|
||||
}
|
||||
@ -26,7 +26,7 @@
|
||||
font-size: 2.625rem;
|
||||
margin: 0 0 20px;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@
|
||||
box-shadow: 0 12px 40px rgba(0, 0, 0, .15);
|
||||
}
|
||||
|
||||
@media (--tablet) {
|
||||
@media ($tablet) {
|
||||
margin: 20px 0;
|
||||
width: 100%;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
@import 'variables.css';
|
||||
|
||||
@import 'fonts.css';
|
||||
@import 'buttons.css';
|
||||
|
||||
@import 'header.css';
|
||||
@import 'logo.css';
|
||||
@import 'menu.css';
|
||||
@import 'main.css';
|
||||
@import 'post.css';
|
||||
@import 'pagination.css';
|
||||
@import 'footer.css';
|
||||
|
||||
@import 'terms.css';
|
||||
@import 'archive.css';
|
||||
|
||||
@import 'prism.css';
|
||||
@import 'code.css';
|
18
assets/css/style.scss
Normal file
18
assets/css/style.scss
Normal file
@ -0,0 +1,18 @@
|
||||
@import 'variables';
|
||||
|
||||
@import 'fonts';
|
||||
@import 'buttons';
|
||||
|
||||
@import 'header';
|
||||
@import 'logo';
|
||||
@import 'menu';
|
||||
@import 'main';
|
||||
@import 'post';
|
||||
@import 'pagination';
|
||||
@import 'footer';
|
||||
|
||||
@import 'terms';
|
||||
@import 'archive';
|
||||
|
||||
@import 'prism';
|
||||
@import 'code';
|
@ -46,10 +46,11 @@ body.dark-theme {
|
||||
}
|
||||
}
|
||||
|
||||
@custom-media --phone (width < 684px);
|
||||
@custom-media --tablet (width < 900px);
|
||||
/* MEDIA QUERIES */
|
||||
$phone: (max-width: 684px);
|
||||
$tablet: (max-width: 900px);
|
||||
|
||||
@define-mixin greater-icon $stroke-width: 3px, $width: .95rem, $height: 100% {
|
||||
@mixin greater-icon($stroke-width: 3px, $width: .95rem, $height: 100%) {
|
||||
.greater-icon {
|
||||
width: $width;
|
||||
height: $height;
|
||||
@ -63,6 +64,6 @@ body.dark-theme {
|
||||
|
||||
/* HOW TO USE */
|
||||
|
||||
/*@media (--phone) {*/
|
||||
/*@media ($phone) {*/
|
||||
/*margin-top: 0;*/
|
||||
/*}*/
|
File diff suppressed because one or more lines are too long
0
config.toml
Normal file
0
config.toml
Normal file
@ -24,7 +24,7 @@ pre {
|
||||
font-size: 1rem;
|
||||
overflow: auto;
|
||||
|
||||
@media (--phone) {
|
||||
@media ($phone) {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
3
go.mod
Normal file
3
go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module github.com/panr/hugo-theme-hello-friend
|
||||
|
||||
go 1.19
|
@ -10,7 +10,7 @@
|
||||
|
||||
{{ if .Site.Taxonomies.tags }}
|
||||
<p>
|
||||
{{ "Maybe these tags will help you find what you're looking for. :smile:" | markdownify | emojify }}
|
||||
{{ "Maybe these tags will help you find what you're looking for." | markdownify }}
|
||||
</p>
|
||||
<h2>Tags</h2>
|
||||
<div class="terms">
|
||||
|
@ -16,13 +16,13 @@
|
||||
|
||||
<div class="posts">
|
||||
{{ range $paginator.Pages }}
|
||||
<div class="post on-list">
|
||||
<article class="post on-list">
|
||||
<h1 class="post-title"><a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h1>
|
||||
<div class="post-meta">
|
||||
{{ if .Date }}
|
||||
<span class="post-date">
|
||||
<time class="post-date">
|
||||
{{ .Date.Format ($.Site.Params.DateFormatList | default "2006-01-02") }}
|
||||
</span>
|
||||
</time>
|
||||
|
||||
{{ if $.Site.Params.LastModDisplay }}
|
||||
{{ partial "lastmod.html" . }}
|
||||
@ -62,7 +62,7 @@
|
||||
{{ if not .Params.hideReadMore }}
|
||||
<div><a class="read-more button" href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore | default "Read more" }} →</a></div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</article>
|
||||
{{ end }}
|
||||
{{ partial "pagination.html" . }}
|
||||
</div>
|
||||
|
@ -1,13 +1,13 @@
|
||||
{{ define "main" }}
|
||||
<div class="posts">
|
||||
{{ range .Pages }}
|
||||
<div class="post on-list">
|
||||
<article class="post on-list">
|
||||
<h1 class="post-title"><a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h1>
|
||||
<div class="post-meta">
|
||||
{{ if .Date }}
|
||||
<span class="post-date">
|
||||
<time class="post-date">
|
||||
{{ .Date.Format ($.Site.Params.DateFormatList | default "2006-01-02") }}
|
||||
</span>
|
||||
</time>
|
||||
|
||||
{{ if $.Site.Params.LastModDisplay }}
|
||||
{{ partial "lastmod.html" . }}
|
||||
@ -54,7 +54,7 @@
|
||||
>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</article>
|
||||
{{ end }}
|
||||
{{ partial "pagination.html" . }}
|
||||
</div>
|
||||
|
@ -2,13 +2,13 @@
|
||||
{{ $isntDefault := not (or (eq (trim $.Site.Params.contentTypeName " ") "posts") (eq (trim $.Site.Params.contentTypeName " ") "")) }}
|
||||
{{ $contentTypeName := cond $isntDefault (string $.Site.Params.contentTypeName) "posts" }}
|
||||
|
||||
<div class="post">
|
||||
<article class="post">
|
||||
<h1 class="post-title">{{ .Title | markdownify }}</h1>
|
||||
<div class="post-meta">
|
||||
{{ if .Date | default nil }}
|
||||
<span class="post-date">
|
||||
<time class="post-date">
|
||||
{{ .Date.Format ($.Site.Params.DateFormatSingle | default "2006-01-02") }}
|
||||
</span>
|
||||
</time>
|
||||
|
||||
{{ if eq .Type $contentTypeName }}
|
||||
{{ if $.Site.Params.LastModDisplay }}
|
||||
@ -87,5 +87,5 @@
|
||||
{{ partial "comments.html" . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</article>
|
||||
{{ end }}
|
||||
|
@ -14,14 +14,14 @@
|
||||
<div class="archive__group-posts">
|
||||
{{ range where .Pages "Type" $contentTypeName }}
|
||||
{{ if eq .Kind "page" }}
|
||||
<div class="archive__post">
|
||||
<article class="archive__post">
|
||||
<h3 class="archive__post-title">
|
||||
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
|
||||
</h3>
|
||||
<div class="archive__post-meta">
|
||||
<span class="archive__post-date">
|
||||
<time class="archive__post-date">
|
||||
{{ .Date.Format ($.Site.Params.DateFormatList | default "2006-01-02") }}
|
||||
</span>
|
||||
</time>
|
||||
{{ with .Params.Author }}
|
||||
<span class="archive__post-author"
|
||||
>—
|
||||
@ -36,7 +36,7 @@
|
||||
>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
@ -18,7 +18,10 @@
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="{{ "assets/main.js" | absURL }}"></script>
|
||||
<script src="{{ "assets/prism.js" | absURL }}"></script>
|
||||
{{ $menu := resources.Get "js/menu.js" | js.Build }}
|
||||
{{ $prism := resources.Get "js/prism.js" | js.Build }}
|
||||
{{ $theme := resources.Get "js/theme.js" | js.Build }}
|
||||
{{ $bundle := slice $menu $prism $theme | resources.Concat "bundle.js" | resources.Minify }}
|
||||
<script type="text/javascript" src="{{ $bundle.RelPermalink }}"></script>
|
||||
|
||||
{{- partial "extended_footer.html" . }}
|
||||
|
@ -15,25 +15,23 @@
|
||||
{{- partial "prepended_head.html" . }}
|
||||
|
||||
<!-- Theme CSS -->
|
||||
<link rel="stylesheet" href="{{ "assets/style.css" | absURL }}" />
|
||||
{{ $res := resources.Get "css/style.scss" }}
|
||||
{{ $style := $res | resources.ToCSS }}
|
||||
<link rel="stylesheet" href="{{ $style.RelPermalink }}" />
|
||||
<!-- Custom CSS to override theme properties (/static/style.css) -->
|
||||
<link rel="stylesheet" href="{{ "style.css" | absURL }}" />
|
||||
|
||||
<!-- Icons -->
|
||||
<link
|
||||
rel="apple-touch-icon-precomposed"
|
||||
sizes="144x144"
|
||||
href="{{ "img/apple-touch-icon-144-precomposed.png" | absURL }}"
|
||||
/>
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ "img/apple-touch-icon-144-precomposed.png" | absURL }}" />
|
||||
<link rel="shortcut icon" href="{{ "img/favicon.png" | absURL }}" />
|
||||
|
||||
<!-- Fonts -->
|
||||
<link href="{{ "assets/fonts/Inter-Italic.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
<link href="{{ "assets/fonts/Inter-Regular.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
<link href="{{ "assets/fonts/Inter-Medium.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
<link href="{{ "assets/fonts/Inter-MediumItalic.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
<link href="{{ "assets/fonts/Inter-Bold.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
<link href="{{ "assets/fonts/Inter-BoldItalic.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
<link href="{{ (resources.Get "fonts/Inter-Italic.woff2").RelPermalink }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
<link href="{{ (resources.Get "fonts/Inter-Regular.woff2").RelPermalink }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
<link href="{{ (resources.Get "fonts/Inter-Medium.woff2").RelPermalink }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
<link href="{{ (resources.Get "fonts/Inter-MediumItalic.woff2").RelPermalink }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
<link href="{{ (resources.Get "fonts/Inter-Bold.woff2").RelPermalink }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
<link href="{{ (resources.Get "fonts/Inter-BoldItalic.woff2").RelPermalink }}" rel="preload" type="font/woff2" as="font" crossorigin="">
|
||||
|
||||
<!-- Twitter Card -->
|
||||
{{ template "_internal/twitter_cards.html" . }}
|
||||
|
44
package.hugo.json
Normal file
44
package.hugo.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "hello-friend",
|
||||
"version": "3.0.0",
|
||||
"main": "index.js",
|
||||
"author": "Radosław Kozieł <@panr> <radoslaw.koziel@gmail.com>",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"test": "echo 'Test'"
|
||||
},
|
||||
"browserslist": [
|
||||
"last 2 versions",
|
||||
">1%",
|
||||
"not dead"
|
||||
],
|
||||
"comments": {
|
||||
"dependencies": {
|
||||
"yarn": "project"
|
||||
},
|
||||
"devDependencies": {
|
||||
"browserslist": "project",
|
||||
"clipboard": "project",
|
||||
"eslint-config-airbnb": "project",
|
||||
"eslint-config-prettier": "project",
|
||||
"eslint-plugin-jsx-a11y": "project",
|
||||
"husky": "project"
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"yarn": "^1.22.10"
|
||||
},
|
||||
"devDependencies": {
|
||||
"browserslist": "^4.16.5",
|
||||
"clipboard": "^2.0.4",
|
||||
"eslint-config-airbnb": "^18.2.0",
|
||||
"eslint-config-prettier": "^8.1.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.2.1",
|
||||
"husky": "^5.1.3"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-push": "yarn build && git add . && git commit --amend --no-edit"
|
||||
}
|
||||
}
|
||||
}
|
58
package.json
58
package.json
@ -1,58 +1,40 @@
|
||||
{
|
||||
"name": "hello-friend",
|
||||
"version": "2.1.0",
|
||||
"version": "3.0.0",
|
||||
"main": "index.js",
|
||||
"author": "Radosław Kozieł <@panr> <radoslaw.koziel@gmail.com>",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"dev": "webpack --mode=development --watch",
|
||||
"build": "webpack --mode=production",
|
||||
"prepare": "husky install"
|
||||
"test": "echo 'Test'"
|
||||
},
|
||||
"browserslist": [
|
||||
"last 2 versions",
|
||||
">1%",
|
||||
"not dead"
|
||||
],
|
||||
"comments": {
|
||||
"dependencies": {
|
||||
"yarn": "project"
|
||||
},
|
||||
"devDependencies": {
|
||||
"browserslist": "project",
|
||||
"clipboard": "project",
|
||||
"eslint-config-airbnb": "project",
|
||||
"eslint-config-prettier": "project",
|
||||
"eslint-plugin-jsx-a11y": "project",
|
||||
"husky": "project"
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"yarn": "^1.22.10"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "^7.2.3",
|
||||
"@babel/core": "^7.2.2",
|
||||
"@babel/plugin-transform-runtime": "^7.2.0",
|
||||
"@babel/preset-env": "^7.3.1",
|
||||
"@babel/preset-stage-2": "^7.0.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"babel-loader": "^8.0.5",
|
||||
"browserslist": "^4.0.1",
|
||||
"clean-webpack-plugin": "^4.0.0",
|
||||
"browserslist": "^4.16.5",
|
||||
"clipboard": "^2.0.4",
|
||||
"css-loader": "^6.5.1",
|
||||
"cssnano": "^5.0.8",
|
||||
"eslint-config-airbnb": "^18.2.0",
|
||||
"eslint-config-prettier": "^8.1.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.2.1",
|
||||
"file-loader": "^6.1.0",
|
||||
"html-webpack-plugin": "^5.5.0",
|
||||
"husky": "^7.0.4",
|
||||
"mini-css-extract-plugin": "^2.4.3",
|
||||
"postcss": "^8.2.10",
|
||||
"postcss-browser-reporter": "^0.6.0",
|
||||
"postcss-cli": "^9.0.1",
|
||||
"postcss-color-function": "^4.0.1",
|
||||
"postcss-color-mod-function": "^3.0.3",
|
||||
"postcss-import": "^14.0.0",
|
||||
"postcss-loader": "^6.2.0",
|
||||
"postcss-mixins": "^8.1.0",
|
||||
"postcss-nested": "^5.0.5",
|
||||
"postcss-preset-env": "^6.7.0",
|
||||
"postcss-reporter": "^7.0.2",
|
||||
"postcss-url": "^10.1.3",
|
||||
"prettier-eslint-cli": "^5.0.0",
|
||||
"ramda": "^0.27.1",
|
||||
"style-loader": "^3.3.1",
|
||||
"terser-webpack-plugin": "^5.2.4",
|
||||
"url-loader": "^4.1.0",
|
||||
"webpack": "^5.27.1",
|
||||
"webpack-cli": "^4.5.0"
|
||||
"husky": "^5.1.3"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
|
@ -1,6 +1,7 @@
|
||||
const url = require("postcss-url");
|
||||
const imports = require("postcss-import");
|
||||
const nested = require("postcss-nested");
|
||||
const postcssCustomMedia = require("postcss-custom-media");
|
||||
const postCSSPresetEnv = require("postcss-preset-env");
|
||||
const browsers = require("browserslist");
|
||||
const cssnano = require("cssnano");
|
||||
@ -12,6 +13,7 @@ module.exports = () => ({
|
||||
imports,
|
||||
mixins,
|
||||
nested,
|
||||
postcssCustomMedia,
|
||||
postCSSPresetEnv({
|
||||
stage: 1,
|
||||
}),
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
||||
!function(){var e,t,n,o,d,i,c,s,a,r;e=document.querySelector(".container"),t=document.querySelector(".menu"),n=document.querySelector(".menu-trigger"),document.querySelector(".menu__inner--desktop"),o=document.querySelector(".menu__sub-inner-more-trigger"),d=document.querySelector(".menu__sub-inner-more"),i=getComputedStyle(document.body).getPropertyValue("--phoneWidth"),c=function(){return window.matchMedia(i).matches},s=function(){n&&n.classList.toggle("hidden",!c()),t&&t.classList.toggle("hidden",c()),d&&d.classList.toggle("hidden",!c())},t&&t.addEventListener("click",(function(e){return e.stopPropagation()})),d&&d.addEventListener("click",(function(e){return e.stopPropagation()})),s(),document.body.addEventListener("click",(function(){c()||!d||d.classList.contains("hidden")?c()&&!t.classList.contains("hidden")&&t.classList.add("hidden"):d.classList.add("hidden")})),window.addEventListener("resize",s),n&&n.addEventListener("click",(function(e){e.stopPropagation(),t&&t.classList.toggle("hidden")})),o&&o.addEventListener("click",(function(t){t.stopPropagation(),d&&d.classList.toggle("hidden"),d&&d.getBoundingClientRect().right>e.getBoundingClientRect().right&&(d.style.left="auto",d.style.right=0)})),a=window.localStorage&&window.localStorage.getItem("theme"),r=document.querySelector(".theme-toggle"),a&&(document.body.classList.remove("light-theme","dark-theme"),document.body.classList.add(a)),r.addEventListener("click",(function(){var e=!new RegExp("(dark|light)-theme").test(document.body.className),t=window.matchMedia("(prefers-color-scheme: dark)").matches;e?t?document.body.classList.add("light-theme"):document.body.classList.add("dark-theme"):(document.body.classList.toggle("light-theme"),document.body.classList.toggle("dark-theme")),window.localStorage&&window.localStorage.setItem("theme",document.body.classList.contains("dark-theme")?"dark-theme":"light-theme")}))}();
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
BIN
static/img/apple-touch-icon-144-precomposed.png
Normal file
BIN
static/img/apple-touch-icon-144-precomposed.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
BIN
static/img/favicon.png
Normal file
BIN
static/img/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
@ -1,10 +1,10 @@
|
||||
name = "hello-friend"
|
||||
description = "A simple theme for Hugo. That's it."
|
||||
features = ["blog", "shortcode", "syntax Highlighting"]
|
||||
homepage = "https://github.com/panr/hugo-theme-hello-friend/"
|
||||
license = "MIT"
|
||||
licenselink = "https://github.com/panr/hugo-theme-hello-friend/blob/master/LICENSE.md"
|
||||
min_version = 0.74
|
||||
name = "hello-friend"
|
||||
min_version = 0.90
|
||||
tags = [
|
||||
"blog",
|
||||
"clean",
|
||||
|
@ -1,98 +0,0 @@
|
||||
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
|
||||
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||||
const TerserPlugin = require("terser-webpack-plugin");
|
||||
|
||||
const path = require("path");
|
||||
|
||||
const join = (...paths) => path.join(__dirname, ...paths);
|
||||
|
||||
module.exports = (env, { mode }) => ({
|
||||
resolve: {
|
||||
extensions: [".js", ".css"],
|
||||
modules: ["assets", "node_modules"],
|
||||
},
|
||||
entry: {
|
||||
main: [join("assets", "js", "menu.js"), join("assets", "js", "theme.js")],
|
||||
prism: join("assets", "js", "prism.js"),
|
||||
style: join("assets", "css", "style.css"),
|
||||
},
|
||||
output: {
|
||||
filename: "[name].js",
|
||||
path: join("static/assets"),
|
||||
publicPath: "",
|
||||
},
|
||||
performance: {
|
||||
hints: false,
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.js$/,
|
||||
exclude: /node_modules/,
|
||||
use: {
|
||||
loader: "babel-loader",
|
||||
options: {
|
||||
presets: ["@babel/preset-env"],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.(png|jpe?g|svg)$/,
|
||||
type: "asset/resource",
|
||||
generator: {
|
||||
filename: "images/[name][ext]",
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.(woff|woff2|ttf|eot)$/,
|
||||
type: "asset/resource",
|
||||
generator: {
|
||||
filename: "fonts/[name][ext]",
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.css$/,
|
||||
use: [
|
||||
MiniCssExtractPlugin.loader,
|
||||
{
|
||||
loader: "css-loader",
|
||||
options: {
|
||||
modules: {
|
||||
localIdentName: "[local]",
|
||||
},
|
||||
import: true,
|
||||
importLoaders: 1,
|
||||
},
|
||||
},
|
||||
{
|
||||
loader: "postcss-loader",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
optimization: {
|
||||
splitChunks: {
|
||||
name: "vendor",
|
||||
minChunks: 2,
|
||||
},
|
||||
minimize: true,
|
||||
minimizer: [
|
||||
new TerserPlugin({
|
||||
parallel: true,
|
||||
extractComments: false,
|
||||
}),
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
new CleanWebpackPlugin({
|
||||
cleanOnceBeforeBuildPatterns: [join("static/assets")],
|
||||
cleanAfterEveryBuildPatterns: [join("static/assets/style.js")],
|
||||
verbose: true,
|
||||
}),
|
||||
new MiniCssExtractPlugin({
|
||||
filename: "[name].css",
|
||||
chunkFilename: "[id].css",
|
||||
}),
|
||||
],
|
||||
});
|
Loading…
Reference in New Issue
Block a user