refactor: unify bundled assets with subdirs and Hugo mounts

Move bundled outputs to dedicated css/js subdirs. Update Vite
config to output directly to bundled/ with simplified naming.
Add Hugo module mounts to expose as assets/bundled and
static/bundled. Adjust gitignore and partial accordingly.

Signed-off-by: Sped0n <hi@sped0n.com>
This commit is contained in:
Sped0n
2025-11-14 18:09:51 +08:00
committed by Ryan
parent 2e7131a5a5
commit 268159e7d2
14 changed files with 26 additions and 21 deletions

2
.gitignore vendored
View File

@@ -27,4 +27,4 @@ jsconfig.json
*.css.map *.css.map
# dummmy file # dummmy file
assets/bundled/critical.js bundled/css/critical.js

View File

@@ -3,5 +3,4 @@ static/
exmapleSite/ exmapleSite/
single.json single.json
pnpm-lock.yaml pnpm-lock.yaml
assets/bundled/ bundled/
assets/bundled/

0
bundled/js/critical.js Normal file
View File

View File

@@ -12,13 +12,7 @@ export default defineConfig([
tseslint.configs.recommended, tseslint.configs.recommended,
importPlugin.flatConfigs.recommended, importPlugin.flatConfigs.recommended,
solid, solid,
globalIgnores([ globalIgnores(['node_modules/', 'static/', 'exampleSite/', '*.mjs', 'bundled/']),
'node_modules/',
'static/',
'exampleSite/',
'*.mjs',
'assets/bundled/'
]),
{ {
...love, ...love,
...prettier, ...prettier,

18
hugo.toml Normal file
View File

@@ -0,0 +1,18 @@
[[module.mounts]]
source = 'archetypes'
target = 'archetypes'
[[module.mounts]]
source = 'assets'
target = 'assets'
[[module.mounts]]
source = 'layouts'
target = 'layouts'
[[module.mounts]]
source = 'static'
target = 'static'
[[module.mounts]]
source = "bundled"
target = "assets/bundled"
[[module.mounts]]
source = "bundled"
target = "static/bundled"

View File

@@ -2,7 +2,7 @@
{{- $fingerprint := .Scratch.Get "fingerprint" | default "" -}} {{- $fingerprint := .Scratch.Get "fingerprint" | default "" -}}
{{- /* critical style */ -}} {{- /* critical style */ -}}
{{- $style := dict "Source" "bundled/critical.css" "Fingerprint" $fingerprint -}} {{- $style := dict "Source" "bundled/css/critical.css" "Fingerprint" $fingerprint -}}
{{- $options := dict "enableSourceMap" false -}} {{- $options := dict "enableSourceMap" false -}}
{{- $style = dict "Context" . "ToCSS" $options "Inline" true "Template" true | merge $style -}} {{- $style = dict "Context" . "ToCSS" $options "Inline" true "Template" true | merge $style -}}
{{- partial "plugin/style.html" $style -}} {{- partial "plugin/style.html" $style -}}

View File

@@ -4,7 +4,7 @@ import solidPlugin from 'vite-plugin-solid'
export default defineConfig({ export default defineConfig({
plugins: [solidPlugin()], plugins: [solidPlugin()],
build: { build: {
outDir: './', outDir: './bundled',
watch: process.env.DISABLE_WATCH watch: process.env.DISABLE_WATCH
? null ? null
: { : {
@@ -17,15 +17,9 @@ export default defineConfig({
}, },
output: { output: {
format: 'es', format: 'es',
entryFileNames: (chunkInfo) => entryFileNames: 'js/[name].js',
chunkInfo.name === 'critical' chunkFileNames: 'js/[hash:6].js',
? 'assets/bundled/[name].js' assetFileNames: '[ext]/[name].[ext]',
: 'static/bundled/js/[name].js',
chunkFileNames: 'static/bundled/js/[hash:6].js',
assetFileNames: (assetInfo) =>
assetInfo.names[0]?.startsWith('critical')
? 'assets/bundled/[name].[ext]'
: 'static/bundled/[ext]/[name].[ext]',
compact: true compact: true
} }
} }