mirror of
https://github.com/tiennm99/HugoBlox-kit.git
synced 2026-10-13 14:15:47 +00:00
feat: refactor block system
Refactored from legacy layouts/partials/blox/* system to:
- blox/<block-id>/block.html source structure
- Hugo module mounts to layouts/partials/hbx/blocks/<block-id>/block.html
- Resolver-based lookup
- Support for data-driven pages and client islands
This commit is contained in:
1 parent
acb0eb7b8a
commit
93585c868d
69 files changed
+229
-122
No files matched your search
@@ -24,7 +24,8 @@
|
||||
"**/pagefind/**": true
|
||||
},
|
||||
"explorer.excludeGitIgnore": true,
|
||||
|
||||
"workbench.editor.labelFormat": "medium",
|
||||
"breadcrumbs.enabled": true,
|
||||
"npm.packageManager": "pnpm",
|
||||
|
||||
"editor.formatOnSave": true,
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -65,30 +65,6 @@ minify:
|
||||
keepSpecialComments: true
|
||||
sitemap:
|
||||
changefreq: weekly
|
||||
module:
|
||||
hugoVersion:
|
||||
min: '0.148.2'
|
||||
extended: true
|
||||
imports:
|
||||
- path: github.com/HugoBlox/hugo-blox-builder/modules/blox-analytics
|
||||
mounts:
|
||||
- source: content
|
||||
target: content
|
||||
- source: static
|
||||
target: static
|
||||
- source: layouts
|
||||
target: layouts
|
||||
- source: data
|
||||
target: data
|
||||
- source: assets
|
||||
target: assets
|
||||
- source: i18n
|
||||
target: i18n
|
||||
- source: archetypes
|
||||
target: archetypes
|
||||
- disableWatch: true
|
||||
source: hugo_stats.json
|
||||
target: assets/notwatching/hugo_stats.json
|
||||
security:
|
||||
funcs:
|
||||
getenv:
|
||||
@@ -113,3 +89,62 @@ params:
|
||||
date_format: 'Jan 2, 2006'
|
||||
time_format: '3:04 PM'
|
||||
address_format: en-us
|
||||
module:
|
||||
hugoVersion:
|
||||
min: '0.148.2'
|
||||
extended: true
|
||||
imports:
|
||||
- path: github.com/HugoBlox/hugo-blox-builder/modules/blox-analytics
|
||||
mounts:
|
||||
- source: content
|
||||
target: content
|
||||
- source: static
|
||||
target: static
|
||||
- source: layouts
|
||||
target: layouts
|
||||
- source: data
|
||||
target: data
|
||||
- source: assets
|
||||
target: assets
|
||||
- source: i18n
|
||||
target: i18n
|
||||
- source: archetypes
|
||||
target: archetypes
|
||||
- disableWatch: true
|
||||
source: hugo_stats.json
|
||||
target: assets/notwatching/hugo_stats.json
|
||||
|
||||
# BLOX A) Server-rendered block templates (Go HTML)
|
||||
- source: blox
|
||||
target: layouts/partials/hbx/blocks
|
||||
includeFiles:
|
||||
- '**/block.html'
|
||||
|
||||
# BLOX B) Client islands (compiled with js.Build/js.Batch)
|
||||
- source: blox
|
||||
target: assets/js/hbx/blocks
|
||||
includeFiles:
|
||||
- '**/*.js'
|
||||
- '**/*.ts'
|
||||
- '**/*.jsx'
|
||||
- '**/*.tsx'
|
||||
|
||||
# BLOX C) Block-specific CSS
|
||||
- source: blox
|
||||
target: assets/css/hbx/blocks
|
||||
includeFiles:
|
||||
- '**/*.css'
|
||||
|
||||
# BLOX D) Shared assets (optional)
|
||||
- source: blox/shared/js
|
||||
target: assets/js/hbx/shared
|
||||
- source: blox/shared/css
|
||||
target: assets/css/hbx/shared
|
||||
- source: blox
|
||||
target: assets/img/hbx/blocks
|
||||
includeFiles:
|
||||
- '**/*.png'
|
||||
- '**/*.jpg'
|
||||
- '**/*.jpeg'
|
||||
- '**/*.svg'
|
||||
- '**/*.webp'
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -322,7 +322,7 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
|
||||
# Feedback widget
|
||||
|
||||
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,4 +262,4 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
@@ -262,7 +262,7 @@
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators.
|
||||
translation: Made with {hugoblox}.
|
||||
|
||||
# Feedback widget
|
||||
|
||||
|
||||
@@ -9,14 +9,9 @@
|
||||
{{ range $r := site.Data.blox_aliases.renames }}
|
||||
{{ $block_type = cond (eq $block_type $r.old) $r.new $block_type }}
|
||||
{{ end }}
|
||||
{{ $block_path := printf "blox/%s.html" $block_type }}
|
||||
{{ $block_path := printf "hbx/blocks/%s/block.html" $block_type }}
|
||||
{{ if not (templates.Exists (printf "_partials/%s" $block_path)) }}
|
||||
{{ $block_path_community := printf "blox/community/%s.html" $block_type }}
|
||||
{{ if not (templates.Exists (printf "_partials/%s" $block_path_community)) }}
|
||||
{{ errorf "%s uses a `%s` blox but the `%s` blox was not found. Check the name of the blox and try again. For a custom or community blox, upload it first to `hugo-blox/blox/community/%s.html`. For an All Access blox, upload it first to `hugo-blox/blox/all-access/%s.html`" $page.File.Path $block_type $block_type $block_type $block_type }}
|
||||
{{ else }}
|
||||
{{ $block_path = $block_path_community }}
|
||||
{{ end }}
|
||||
{{ errorf "%s uses a `%s` block but the `%s` block was not found at `%s`. Check the name of the block and ensure it exists in the blox/%s/ directory." $page.File.Path $block_type $block_type $block_path $block_type }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Mermaid block: Workaround to make Hugo's .Page.Store.Set cascade up to the parent of headless pages */}}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
{{/* HBX resolver: maps a section { block: "<id>", ... } to the block partial.
|
||||
This resolver looks up blocks from the blox/<block-id>/block.html structure,
|
||||
which are mounted to layouts/partials/hbx/blocks/<block-id>/block.html via module.yaml.
|
||||
*/}}
|
||||
{{- $id := .section.block -}}
|
||||
{{- if not $id }}{{ errorf "HBX: section is missing 'block' key: %v" .section }}{{ end -}}
|
||||
|
||||
{{- $params := .section -}}
|
||||
{{- $path := printf "hbx/blocks/%s/block.html" $id -}}
|
||||
|
||||
{{- if templates.Exists (printf "partials/%s" $path) -}}
|
||||
{{ partial $path (dict "wcPage" .ctx "wcBlock" $params "wcIdentifier" ($params.id | default (printf "section-%s" $id))) }}
|
||||
{{- else -}}
|
||||
{{ errorf "HBX: block '%s' not found at %q" $id $path }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,11 @@
|
||||
{{/* Returns sections from front matter or from data. */}}
|
||||
{{- $sections := .Params.sections -}}
|
||||
{{- if not $sections -}}
|
||||
{{/* Data-driven pages. */}}
|
||||
{{- $p := .File.PathBase -}}
|
||||
{{- with index site.Data.pages $p -}}
|
||||
{{- $sections = .sections -}}
|
||||
{{- warnf "HBX: Using data-driven sections from data/pages/%s for page %s" $p $.RelPermalink -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- return $sections -}}
|
||||
@@ -1,5 +1,11 @@
|
||||
{{/* Load Hugo Blox */}}
|
||||
{{ range $index, $block := .Params.sections }}
|
||||
{{/* Load Hugo Blox - HBX resolver-based system
|
||||
Blocks live in `blox/<block-id>/block.html` and are mounted to `layouts/partials/hbx/blocks/<block-id>/block.html`.
|
||||
Landing pages must specify `sections: [{ block: '<id>', ... }]`.
|
||||
*/}}
|
||||
{{/* Use unified sections source */}}
|
||||
{{- $sections := partial "hbx/sections.html" . -}}
|
||||
|
||||
{{ range $index, $block := $sections }}
|
||||
{{/* Do not show sections intended only for the demo site. */}}
|
||||
{{ if or (not $block.demo) ($block.demo | and (eq (os.Getenv "HUGO_BLOX_DEMO") "true")) }}
|
||||
{{ partial "functions/parse_block_v2" (dict "page" $ "block" $block) }}
|
||||
|
||||
@@ -10,21 +10,66 @@
|
||||
{{ end }}
|
||||
{{ partial $footer_section_path . }}
|
||||
|
||||
<p class="powered-by text-center">
|
||||
{{ $is_sponsor := site.Params.i_am_a_sponsor | default false }}
|
||||
{{ $hide_published_with_footer := site.Params.power_ups.hide_published_with | default true }}
|
||||
{{ if not (and $is_sponsor $hide_published_with_footer) }}
|
||||
{{ $default := "Published with {hugoblox} — the free, {repo_link}open source{/repo_link} website builder that empowers creators." }}
|
||||
{{ $i18n_published_with := i18n "published_with" | default $default }}
|
||||
{{ if not (findRE "{hugoblox}" $i18n_published_with) }}
|
||||
{{ warnf "Please attribute Hugo Blox using `{hugoblox}` in the `published_with` text." }}
|
||||
{{ $i18n_published_with = $default }}
|
||||
{{/* Attribution - PLEASE DO NOT REMOVE THIS, SUPPORT OPEN SOURCE */}}
|
||||
{{- if not (site.Params.i_am_a_sponsor | default false) -}}
|
||||
{{- $base := "https://hugoblox.com" -}}
|
||||
{{- $tid := "" -}}
|
||||
{{- $ref := .Site.Params.affiliate_ref | default "" -}}
|
||||
|
||||
{{/* Detect Template */}}
|
||||
{{ $hugoblox_file := "" }}
|
||||
{{ if fileExists "hugoblox.yaml" }}
|
||||
{{ $hugoblox_file = readFile "hugoblox.yaml" }}
|
||||
{{ if $hugoblox_file }}
|
||||
{{ $hugoblox_data := $hugoblox_file | transform.Unmarshal }}
|
||||
{{ $tid = $hugoblox_data.template.id | default "" }}
|
||||
{{ end }}
|
||||
{{ $i18n_published_with = replace $i18n_published_with "{hugoblox}" "<a href=\"https://hugoblox.com/?utm_campaign=poweredby\" target=\"_blank\" rel=\"noopener\">Hugo Blox Builder</a>" | safeHTML }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Per-site variant selection */}}
|
||||
{{- $brandOptions := slice "Hugo Blox" "Hugo Blox Builder" "Hugo Blox — Open Source" -}}
|
||||
{{- $ctaWhenTemplate := slice "Duplicate this template →" "Clone this template →" "Build yours →" "Create yours →" "Build your site →" "Create your site →" -}}
|
||||
{{- $ctaNoTemplate := slice "Start free →" "Build yours →" "Create yours →" "Build your site →" "Create your site →" -}}
|
||||
|
||||
{{- $seed := .Site.BaseURL -}}
|
||||
{{- $h := md5 $seed -}}
|
||||
{{- $digits := replaceRE "[^0-9]" "" $h -}}
|
||||
{{- if lt (len $digits) 6 }}{{- $digits = printf "%s123456" $digits -}}{{- end -}}
|
||||
{{- $n := int (substr $digits 0 6) -}}
|
||||
|
||||
{{- $brandText := index $brandOptions (mod $n (len $brandOptions)) -}}
|
||||
{{- $ctaText := cond (ne $tid "")
|
||||
(index $ctaWhenTemplate (mod $n (len $ctaWhenTemplate)))
|
||||
(index $ctaNoTemplate (mod $n (len $ctaNoTemplate))) -}}
|
||||
|
||||
{{- $target := cond (ne $tid "")
|
||||
(printf "%s/templates/%s/start" $base $tid)
|
||||
(printf "%s/start" $base) -}}
|
||||
|
||||
{{- $brandHref := printf "%s?utm_source=site_footer&utm_medium=referral&utm_campaign=poweredby_oss&utm_content=brand_%s"
|
||||
$base (cond (ne $tid "") (printf "%s" $tid) "na") -}}
|
||||
{{- $ctaHref := printf "%s?utm_source=site_footer&utm_medium=referral&utm_campaign=poweredby_oss&utm_content=cta_%s"
|
||||
$target (cond (ne $tid "") (printf "%s" $tid) "na") -}}
|
||||
{{- if ne $ref "" -}}
|
||||
{{- $brandHref = printf "%s&ref=%s" $brandHref $ref -}}
|
||||
{{- $ctaHref = printf "%s&ref=%s" $ctaHref $ref -}}
|
||||
{{- end -}}
|
||||
|
||||
<p class="powered-by text-center text-sm opacity-80 py-1">
|
||||
{{ $published_with := "Made with {hugoblox}." }}
|
||||
{{ $i18n_published_with := i18n "published_with" | default $published_with }}
|
||||
{{ $i18n_ctaText := i18n "poweredby_button" | default $ctaText }}
|
||||
{{ if not (findRE "{hugoblox}" $i18n_published_with) }}
|
||||
{{ warnf "Please attribute Hugo Blox using `{hugoblox}` in the i18n `published_with` text or sponsor with All Access to remove attribution." }}
|
||||
{{ $i18n_published_with = $published_with }}
|
||||
{{ end }}
|
||||
{{ $i18n_published_with = replace $i18n_published_with "{hugoblox}" (printf "<a class=\"underline hover:opacity-100\" href=\"%s\" target=\"_blank\" rel=\"noopener\" data-hbx=\"poweredby_brand\">%s</a>" $brandHref $brandText) | safeHTML }}
|
||||
{{ $i18n_published_with = replace $i18n_published_with "{repo_link}" "<a href=\"https://github.com/HugoBlox/hugo-blox-builder\" target=\"_blank\" rel=\"noopener\">" | safeHTML }}
|
||||
{{ $i18n_published_with = replace $i18n_published_with "{/repo_link}" "</a>" | safeHTML }}
|
||||
{{ $i18n_published_with | replaceRE "{year}" now.Year | markdownify | emojify | safeHTML }}
|
||||
{{ end }}
|
||||
</p>
|
||||
{{ $i18n_published_with | safeHTML }}
|
||||
<a class="inline-flex items-center rounded px-2 py-0.5 border border-current ms-2 text-xs hover:opacity-100"
|
||||
href="{{ $ctaHref }}" target="_blank" rel="noopener" data-hbx="poweredby_cta">{{ $i18n_ctaText }}</a>
|
||||
</p>
|
||||
{{- end -}}
|
||||
|
||||
</footer>
|
||||
+6
-10
@@ -32,27 +32,23 @@
|
||||
"prettier-plugin-go-template": "~0.0.12",
|
||||
"stylelint": "14.8.2",
|
||||
"stylelint-config-prettier": "~9.0.3",
|
||||
"stylelint-config-prettier-scss": "^0.0.1",
|
||||
"stylelint-config-standard": "~25.0.0",
|
||||
"stylelint-config-standard-scss": "^3.0.0",
|
||||
"stylelint-scss": "~4.2.0"
|
||||
},
|
||||
"scripts": {
|
||||
"view": "scripts/view-starter.sh",
|
||||
"view:local": "scripts/view-starter-dev.sh",
|
||||
"prod": "scripts/view-starter-prod.sh",
|
||||
"dev": "scripts/view-starter-dev.sh",
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"lint": "pnpm run lint:js && pnpm run lint:style",
|
||||
"lint:js": "eslint '*/**/*.{js,ts,tsx}'",
|
||||
"lint:js:fix": "eslint '*/**/*.{js,ts,tsx}' --fix",
|
||||
"lint:style": "stylelint 'modules/blox-tailwind/**/*.css'",
|
||||
"lint:style:fix": "stylelint 'modules/blox-tailwind/**/*.css' --fix",
|
||||
"format": "prettier --write \"*.{css,js,json,md,scss}\" \"./**/*.{css,js,json,md,scss}\"",
|
||||
"lint:style": "stylelint '**/*.css'",
|
||||
"lint:style:fix": "stylelint '**/*.css' --fix",
|
||||
"format": "prettier --write \"*.{css,js,json,md}\" \"./**/*.{css,js,json,md}\"",
|
||||
"stylelint-conflict-check": "stylelint-config-prettier-check",
|
||||
"update:starter": "scripts/update-starter.sh",
|
||||
"update:starters": "poetry run python ./scripts/update.py",
|
||||
"vendor:libs": "vite build --config vite.config.js",
|
||||
"vendor:libs:watch": "vite build --config vite.config.js --watch"
|
||||
},
|
||||
"browserslist": "> 1%",
|
||||
"packageManager": "pnpm@10.14.0"
|
||||
"browserslist": "> 1%"
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env zsh
|
||||
|
||||
# Generate preprocessed resources for demo site whilst also removing disused resources.
|
||||
# Run this script from the root Hugo Blox dir.
|
||||
HUGO_THEME=hugo-blox-builder hugo --source exampleSite --themesDir ../../ --gc
|
||||
File renamed without changes.
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env zsh
|
||||
|
||||
cd "starters/$1"
|
||||
hugo mod get -u ./...
|
||||
cd ../..
|
||||
@@ -10,8 +10,15 @@ cleanup() {
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
usage() {
|
||||
echo "View a starter template with local development modules and debug features."
|
||||
echo ""
|
||||
echo "Usage: ./scripts/view-starter-dev.sh <starter-name> [--debug] [--no-pagefind]"
|
||||
echo "Example: ./scripts/view-starter-dev.sh blog --debug"
|
||||
echo ""
|
||||
echo "This script uses:"
|
||||
echo " • Local development modules (via HUGO_MODULE_REPLACEMENTS)"
|
||||
echo " • Development environment with demo/debug flags enabled"
|
||||
echo " • Optional Pagefind search indexing and enhanced debugging"
|
||||
}
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
|
||||
@@ -8,9 +8,20 @@ exitfn () {
|
||||
|
||||
trap "exitfn" INT
|
||||
|
||||
usage() {
|
||||
echo "View a starter template with published production modules."
|
||||
echo ""
|
||||
echo "Usage: ./scripts/view-starter-prod.sh <starter-name>"
|
||||
echo "Example: ./scripts/view-starter-prod.sh blog"
|
||||
echo ""
|
||||
echo "This script uses:"
|
||||
echo " • Published/released modules (no local overrides)"
|
||||
echo " • Production environment (simulates end-user experience)"
|
||||
echo " • Minimal configuration for testing published versions"
|
||||
}
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: ./scripts/view-starter.sh <starter-name>"
|
||||
echo "Example: ./scripts/view-starter.sh blog"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -31,8 +42,8 @@ if [ -f "package.json" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
HUGO_ENVIRONMENT=development \
|
||||
HUGOxPARAMSxDECAP_CMSxLOCAL_BACKEND=true \
|
||||
# Use production environment with published modules (no local module replacements)
|
||||
HUGO_ENVIRONMENT=production \
|
||||
hugo server --panicOnWarning --renderStaticToDisk -F --port 8081 --bind 0.0.0.0
|
||||
|
||||
trap SIGINT
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env zsh
|
||||
|
||||
# View the demo site on any local devices by binding the local IP on port 1315.
|
||||
# Run this script from the root Hugo Blox dir.
|
||||
HUGO_THEME=hugo-blox-builder hugo \
|
||||
--source exampleSite --themesDir ../../ \
|
||||
--bind=0.0.0.0 -p 1315 --baseURL=http://0.0.0.0:1315 \
|
||||
--i18n-warnings --minify -e "development" \
|
||||
server
|
||||
|
||||
#HUGO_THEME=hugo-blox-builder hugo convert toYAML --unsafe --themesDir ../../
|
||||
@@ -91,8 +91,6 @@ jobs:
|
||||
# Check if site uses Pagefind search
|
||||
if [ -f "package.json" ] && grep -q "pagefind" package.json; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
fi
|
||||
|
||||
- name: Upload artifact
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
build:
|
||||
hugo_version: '0.148.2'
|
||||
template:
|
||||
id: "academic-cv"
|
||||
name: "Academic CV"
|
||||
-2
@@ -91,8 +91,6 @@ jobs:
|
||||
# Check if site uses Pagefind search
|
||||
if [ -f "package.json" ] && grep -q "pagefind" package.json; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
fi
|
||||
|
||||
- name: Upload artifact
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
build:
|
||||
hugo_version: '0.148.2'
|
||||
template:
|
||||
id: "blog"
|
||||
name: "Blog"
|
||||
@@ -91,8 +91,6 @@ jobs:
|
||||
# Check if site uses Pagefind search
|
||||
if [ -f "package.json" ] && grep -q "pagefind" package.json; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
fi
|
||||
|
||||
- name: Upload artifact
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
build:
|
||||
hugo_version: '0.148.2'
|
||||
template:
|
||||
id: "documentation"
|
||||
name: "Documentation"
|
||||
@@ -91,8 +91,6 @@ jobs:
|
||||
# Check if site uses Pagefind search
|
||||
if [ -f "package.json" ] && grep -q "pagefind" package.json; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
fi
|
||||
|
||||
- name: Upload artifact
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
build:
|
||||
hugo_version: '0.148.2'
|
||||
template:
|
||||
id: "landing-page"
|
||||
name: "Landing Page"
|
||||
@@ -91,8 +91,6 @@ jobs:
|
||||
# Check if site uses Pagefind search
|
||||
if [ -f "package.json" ] && grep -q "pagefind" package.json; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
fi
|
||||
|
||||
- name: Upload artifact
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
build:
|
||||
hugo_version: '0.148.2'
|
||||
template:
|
||||
id: "link-in-bio"
|
||||
name: "Link in Bio"
|
||||
@@ -91,8 +91,6 @@ jobs:
|
||||
# Check if site uses Pagefind search
|
||||
if [ -f "package.json" ] && grep -q "pagefind" package.json; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
elif [ -f "netlify.toml" ] && grep -q "pagefind" netlify.toml; then
|
||||
pnpm dlx pagefind --source "public" || npx pagefind --source "public"
|
||||
fi
|
||||
|
||||
- name: Upload artifact
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
build:
|
||||
hugo_version: '0.148.2'
|
||||
template:
|
||||
id: "resume"
|
||||
name: "Resume"
|
||||
Reference in new issue
Block a user