added build script + proper differentiation of dev & prod builds

This commit is contained in:
Simon Martens
2024-12-04 18:56:44 +01:00
parent 3af43b33dd
commit caa5504f2a
11 changed files with 83 additions and 668 deletions

View File

@@ -4,7 +4,7 @@ tmp_dir = "tmp"
[build] [build]
args_bin = [] args_bin = []
full_bin = "export KGPZ_WATCH=false; ./tmp/main" full_bin = "npm --prefix views/ run build -- --config vite.dev.config.js; export KGPZ_WATCH=false; ./tmp/main"
cmd = "go build -tags=\"dev\" -o ./tmp/main ." cmd = "go build -tags=\"dev\" -o ./tmp/main ."
delay = 400 delay = 400
exclude_dir = [ exclude_dir = [
@@ -30,7 +30,7 @@ log = "build-errors.log"
poll = false poll = false
poll_interval = 0 poll_interval = 0
post_cmd = [] post_cmd = []
pre_cmd = ["npm --prefix views/ run build"] pre_cmd = []
rerun = false rerun = false
rerun_delay = 500 rerun_delay = 500
send_interrupt = true send_interrupt = true

1
.gitignore vendored
View File

@@ -1,5 +1,6 @@
KGPZ/ KGPZ/
tmp/ tmp/
bin/
data_git/ data_git/
cache_geo/ cache_geo/
cache_gnd/ cache_gnd/

12
build.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
rm -rf ./bin
npm --prefix ./views run build -- --config vite.config.js
mkdir -p ./bin
go build -o ./bin/kgpz .
if [ -f ./config.json ]; then
cp ./config.json bin/config.json
else
cp ./config.dev.json ./bin/config.json
fi

View File

@@ -78,6 +78,14 @@ func Start(k *app.KGPZ, s *server.Server, c *providers.ConfigProvider) {
// INFO: hot reloading for poor people // INFO: hot reloading for poor people
if c.Watch { if c.Watch {
go func() { go func() {
_, routesexist := os.Stat(server.ROUTES_FILEPATH)
_, layoutexist := os.Stat(server.LAYOUT_FILEPATH)
if routesexist != nil && layoutexist != nil {
logging.Info("Routes or Layout folder does not exist. Watcher disabled.")
return
}
watcher, err := helpers.NewFileWatcher() watcher, err := helpers.NewFileWatcher()
if err != nil { if err != nil {
return return
@@ -89,15 +97,19 @@ func Start(k *app.KGPZ, s *server.Server, c *providers.ConfigProvider) {
s.Engine(Engine(k, c)) s.Engine(Engine(k, c))
}) })
if routesexist != nil {
err = watcher.RecursiveDir(server.ROUTES_FILEPATH) err = watcher.RecursiveDir(server.ROUTES_FILEPATH)
if err != nil { if err != nil {
return return
} }
}
if layoutexist != nil {
err = watcher.RecursiveDir(server.LAYOUT_FILEPATH) err = watcher.RecursiveDir(server.LAYOUT_FILEPATH)
if err != nil { if err != nil {
return return
} }
}
}() }()
} }

View File

@@ -1,31 +1,22 @@
function setup() { function a() {
let templates = document.querySelectorAll("template[simple]"); document.querySelectorAll("template[simple]").forEach((l) => {
templates.forEach((template) => { let s = l.getAttribute("id"), n = l.content;
let templateId = template.getAttribute("id"); customElements.define(s, class extends HTMLElement {
let templateContent = template.content;
customElements.define(templateId, class extends HTMLElement {
constructor() { constructor() {
super(); super(), this.appendChild(n.cloneNode(!0)), this.slots = this.querySelectorAll("slot");
this.appendChild(templateContent.cloneNode(true));
this.slots = this.querySelectorAll("slot");
} }
connectedCallback() { connectedCallback() {
let toremove = []; let o = [];
this.slots.forEach((tslot) => { this.slots.forEach((e) => {
let slotName = tslot.getAttribute("name"); let r = e.getAttribute("name"), t = this.querySelector(`[slot="${r}"]`);
let slotContent = this.querySelector(`[slot="${slotName}"]`); t && (e.replaceWith(t.cloneNode(!0)), o.push(t));
if (slotContent) { }), o.forEach((e) => {
tslot.replaceWith(slotContent.cloneNode(true)); e.remove();
toremove.push(slotContent);
}
});
toremove.forEach((element) => {
element.remove();
}); });
} }
}); });
}); });
} }
export { export {
setup a as setup
}; };

File diff suppressed because one or more lines are too long

View File

@@ -26,7 +26,7 @@
</script> </script>
</head> </head>
<body class="w-full h-full" hx-ext="response-targets"> <body class="w-full h-full p-3" hx-ext="response-targets">
{{ block "_menu" . }} {{ block "_menu" . }}
<!-- Default app menu... --> <!-- Default app menu... -->
{{ end }} {{ end }}

View File

@@ -1,8 +1,8 @@
export default { export default {
plugins: { plugins: {
'postcss-import': {}, "postcss-import": {},
'tailwindcss/nesting': {}, "tailwindcss/nesting": {},
tailwindcss: {}, tailwindcss: {},
autoprefixer: {}, autoprefixer: {},
}, },
} };

View File

@@ -8,7 +8,7 @@
</div> </div>
<div> <div>
<div class="py-3"> <div class="py-3 text-xl">
<div>{{ $model.Year }}</div> <div>{{ $model.Year }}</div>
<div>Stück {{ $model.No }}</div> <div>Stück {{ $model.No }}</div>
<div>{{ $model.Day }}. {{ $date.Month }} ({{ $date.Weekday }})</div> <div>{{ $model.Day }}. {{ $date.Month }} ({{ $date.Weekday }})</div>

View File

@@ -1,12 +1,9 @@
import { resolve } from "path"; import { resolve } from "path";
import { defineConfig } from "vite"; import { defineConfig } from "vite";
export default defineConfig({ export default defineConfig({
mode: "production",
build: { build: {
root: resolve(__dirname, ""), root: resolve(__dirname, ""),
// These are dev options only:
minify: false,
emitAssets: true,
lib: { lib: {
entry: "./transform/main.js", entry: "./transform/main.js",
name: "PC-UI", name: "PC-UI",

27
views/vite.dev.config.js Normal file
View File

@@ -0,0 +1,27 @@
import { resolve } from "path";
import { defineConfig } from "vite";
import tailwindcss from "tailwindcss";
export default defineConfig({
mode: "development",
css: {
postcss: {
plugins: [tailwindcss],
},
},
build: {
root: resolve(__dirname, ""),
// These are dev options only:
minify: false,
emitAssets: true,
lib: {
entry: "./transform/main.js",
name: "PC-UI",
fileName: "scripts",
cssFileName: "style",
formats: ["es"],
},
outDir: resolve(__dirname, "assets/"),
},
});