mirror of
https://github.com/wah-su/wah-su.github.io.git
synced 2025-04-17 14:54:39 +00:00
add build action
This commit is contained in:
parent
610e61dccd
commit
84efd38d68
3 changed files with 96 additions and 215 deletions
60
.github/workflows/build.yaml
vendored
Normal file
60
.github/workflows/build.yaml
vendored
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
name: Deploy to Pages
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
||||||
|
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
||||||
|
concurrency:
|
||||||
|
group: "pages"
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Build job
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment: "env"
|
||||||
|
steps:
|
||||||
|
- name: Install bun
|
||||||
|
uses: oven-sh/setup-bun@v2
|
||||||
|
with:
|
||||||
|
bun-version: latest
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Setup Pages
|
||||||
|
id: pages
|
||||||
|
uses: actions/configure-pages@v4
|
||||||
|
- name: Install bun dependencies
|
||||||
|
run: "bun install"
|
||||||
|
- name: Build website
|
||||||
|
run: "bun run gen"
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-pages-artifact@v3
|
||||||
|
with:
|
||||||
|
path: ./out/
|
||||||
|
|
||||||
|
# Deployment job
|
||||||
|
deploy:
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
steps:
|
||||||
|
- name: Deploy to GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@v4
|
|
@ -1,6 +1,7 @@
|
||||||
import { Log } from "./utils";
|
import { Log } from "./utils";
|
||||||
import { renderToString } from "react-dom/server";
|
import { renderToString } from "react-dom/server";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
import exec from "child_process";
|
||||||
import Base from "./templates/Base";
|
import Base from "./templates/Base";
|
||||||
import Title from "./templates/Title";
|
import Title from "./templates/Title";
|
||||||
import Bento from "./templates/Bento";
|
import Bento from "./templates/Bento";
|
||||||
|
@ -26,5 +27,40 @@ const html = renderToString(
|
||||||
fs.cpSync("src/static", "out/static", { recursive: true });
|
fs.cpSync("src/static", "out/static", { recursive: true });
|
||||||
if (environment == "dev") {
|
if (environment == "dev") {
|
||||||
fs.cpSync("src/static_dev", "out/static/js", { recursive: true });
|
fs.cpSync("src/static_dev", "out/static/js", { recursive: true });
|
||||||
|
} else {
|
||||||
|
log.info("Minifying resources...");
|
||||||
|
exec.exec(
|
||||||
|
"bun run tailwindcss -i src/input.css -o out/static/css/tailwind.css --build --minify",
|
||||||
|
(error, stdout, stderr) => {
|
||||||
|
if (error) {
|
||||||
|
log.error(error.message);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (stderr) {
|
||||||
|
log.error(stderr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
log.info(stdout);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const transpiler = new Bun.Transpiler({
|
||||||
|
loader: "js",
|
||||||
|
target: "browser",
|
||||||
|
minifyWhitespace: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const files = fs.readdirSync("src/static/js");
|
||||||
|
const minify = files.filter((file) => file.endsWith(".js"));
|
||||||
|
|
||||||
|
minify.forEach((file) => {
|
||||||
|
const ext = file.split(".")[file.split(".").length - 1];
|
||||||
|
const name = file.split(".")[0];
|
||||||
|
const orFile = fs.readFileSync(`src/static/js/${file}`, {
|
||||||
|
encoding: "utf-8",
|
||||||
|
});
|
||||||
|
const minFile = transpiler.transformSync(orFile);
|
||||||
|
fs.writeFileSync(`out/static/js/${name}.${ext}`, minFile);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
fs.writeFileSync("out/index.html", `<!DOCTYPE html />${html}`);
|
fs.writeFileSync("out/index.html", `<!DOCTYPE html />${html}`);
|
||||||
|
|
|
@ -518,18 +518,12 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@layer utilities {
|
@layer utilities {
|
||||||
.collapse {
|
|
||||||
visibility: collapse;
|
|
||||||
}
|
|
||||||
.invisible {
|
.invisible {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
.absolute {
|
.absolute {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
.fixed {
|
|
||||||
position: fixed;
|
|
||||||
}
|
|
||||||
.relative {
|
.relative {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
@ -626,24 +620,12 @@
|
||||||
.inline {
|
.inline {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
.inline-flex {
|
|
||||||
display: inline-flex;
|
|
||||||
}
|
|
||||||
.list-item {
|
|
||||||
display: list-item;
|
|
||||||
}
|
|
||||||
.table {
|
|
||||||
display: table;
|
|
||||||
}
|
|
||||||
.aspect-square {
|
.aspect-square {
|
||||||
aspect-ratio: 1 / 1;
|
aspect-ratio: 1 / 1;
|
||||||
}
|
}
|
||||||
.aspect-video {
|
.aspect-video {
|
||||||
aspect-ratio: var(--aspect-video);
|
aspect-ratio: var(--aspect-video);
|
||||||
}
|
}
|
||||||
.h-2 {
|
|
||||||
height: calc(var(--spacing) * 2);
|
|
||||||
}
|
|
||||||
.h-4 {
|
.h-4 {
|
||||||
height: calc(var(--spacing) * 4);
|
height: calc(var(--spacing) * 4);
|
||||||
}
|
}
|
||||||
|
@ -668,18 +650,12 @@
|
||||||
.min-h-\[438px\] {
|
.min-h-\[438px\] {
|
||||||
min-height: 438px;
|
min-height: 438px;
|
||||||
}
|
}
|
||||||
.w-2 {
|
|
||||||
width: calc(var(--spacing) * 2);
|
|
||||||
}
|
|
||||||
.w-4 {
|
.w-4 {
|
||||||
width: calc(var(--spacing) * 4);
|
width: calc(var(--spacing) * 4);
|
||||||
}
|
}
|
||||||
.w-6 {
|
.w-6 {
|
||||||
width: calc(var(--spacing) * 6);
|
width: calc(var(--spacing) * 6);
|
||||||
}
|
}
|
||||||
.w-8 {
|
|
||||||
width: calc(var(--spacing) * 8);
|
|
||||||
}
|
|
||||||
.w-\[114px\] {
|
.w-\[114px\] {
|
||||||
width: 114px;
|
width: 114px;
|
||||||
}
|
}
|
||||||
|
@ -698,15 +674,9 @@
|
||||||
.max-w-\[1210px\] {
|
.max-w-\[1210px\] {
|
||||||
max-width: 1210px;
|
max-width: 1210px;
|
||||||
}
|
}
|
||||||
.flex-shrink {
|
|
||||||
flex-shrink: 1;
|
|
||||||
}
|
|
||||||
.flex-shrink-0 {
|
.flex-shrink-0 {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.border-collapse {
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
.origin-center {
|
.origin-center {
|
||||||
transform-origin: center;
|
transform-origin: center;
|
||||||
}
|
}
|
||||||
|
@ -734,15 +704,9 @@
|
||||||
--tw-scale-z: 150%;
|
--tw-scale-z: 150%;
|
||||||
scale: var(--tw-scale-x) var(--tw-scale-y);
|
scale: var(--tw-scale-x) var(--tw-scale-y);
|
||||||
}
|
}
|
||||||
.transform {
|
|
||||||
transform: var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y);
|
|
||||||
}
|
|
||||||
.animate-ping {
|
.animate-ping {
|
||||||
animation: var(--animate-ping);
|
animation: var(--animate-ping);
|
||||||
}
|
}
|
||||||
.resize {
|
|
||||||
resize: both;
|
|
||||||
}
|
|
||||||
.grid-cols-1 {
|
.grid-cols-1 {
|
||||||
grid-template-columns: repeat(1, minmax(0, 1fr));
|
grid-template-columns: repeat(1, minmax(0, 1fr));
|
||||||
}
|
}
|
||||||
|
@ -755,30 +719,9 @@
|
||||||
.grid-rows-\[repeat\(4\,minmax\(0\,136px\)\)\] {
|
.grid-rows-\[repeat\(4\,minmax\(0\,136px\)\)\] {
|
||||||
grid-template-rows: repeat(4,minmax(0,136px));
|
grid-template-rows: repeat(4,minmax(0,136px));
|
||||||
}
|
}
|
||||||
.grid-rows-\[repeat\(7\,144px\)\] {
|
|
||||||
grid-template-rows: repeat(7,144px);
|
|
||||||
}
|
|
||||||
.grid-rows-\[repeat\(7\,164px\)\] {
|
|
||||||
grid-template-rows: repeat(7,164px);
|
|
||||||
}
|
|
||||||
.grid-rows-\[repeat\(7\,164spx\)\] {
|
|
||||||
grid-template-rows: repeat(7,164spx);
|
|
||||||
}
|
|
||||||
.grid-rows-\[repeat\(7\,180px\)\] {
|
|
||||||
grid-template-rows: repeat(7,180px);
|
|
||||||
}
|
|
||||||
.grid-rows-\[repeat\(7\,190px\)\] {
|
|
||||||
grid-template-rows: repeat(7,190px);
|
|
||||||
}
|
|
||||||
.grid-rows-\[repeat\(7\,200px\)\] {
|
|
||||||
grid-template-rows: repeat(7,200px);
|
|
||||||
}
|
|
||||||
.grid-rows-\[repeat\(7\,210px\)\] {
|
.grid-rows-\[repeat\(7\,210px\)\] {
|
||||||
grid-template-rows: repeat(7,210px);
|
grid-template-rows: repeat(7,210px);
|
||||||
}
|
}
|
||||||
.grid-rows-\[repeat\(7\,288px\)\] {
|
|
||||||
grid-template-rows: repeat(7,288px);
|
|
||||||
}
|
|
||||||
.flex-col {
|
.flex-col {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
@ -803,9 +746,6 @@
|
||||||
.justify-end {
|
.justify-end {
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
.gap-0 {
|
|
||||||
gap: calc(var(--spacing) * 0);
|
|
||||||
}
|
|
||||||
.gap-1 {
|
.gap-1 {
|
||||||
gap: calc(var(--spacing) * 1);
|
gap: calc(var(--spacing) * 1);
|
||||||
}
|
}
|
||||||
|
@ -901,10 +841,6 @@
|
||||||
font-size: var(--text-lg);
|
font-size: var(--text-lg);
|
||||||
line-height: var(--tw-leading, var(--text-lg--line-height));
|
line-height: var(--tw-leading, var(--text-lg--line-height));
|
||||||
}
|
}
|
||||||
.text-sm {
|
|
||||||
font-size: var(--text-sm);
|
|
||||||
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
||||||
}
|
|
||||||
.text-xs {
|
.text-xs {
|
||||||
font-size: var(--text-xs);
|
font-size: var(--text-xs);
|
||||||
line-height: var(--tw-leading, var(--text-xs--line-height));
|
line-height: var(--tw-leading, var(--text-xs--line-height));
|
||||||
|
@ -935,20 +871,6 @@
|
||||||
.text-white {
|
.text-white {
|
||||||
color: var(--color-white);
|
color: var(--color-white);
|
||||||
}
|
}
|
||||||
.underline {
|
|
||||||
text-decoration-line: underline;
|
|
||||||
}
|
|
||||||
.outline {
|
|
||||||
outline-style: var(--tw-outline-style);
|
|
||||||
outline-width: 1px;
|
|
||||||
}
|
|
||||||
.filter {
|
|
||||||
filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
|
|
||||||
}
|
|
||||||
.backdrop-filter {
|
|
||||||
-webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
|
|
||||||
backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
|
|
||||||
}
|
|
||||||
.transition {
|
.transition {
|
||||||
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter;
|
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter;
|
||||||
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
||||||
|
@ -998,26 +920,11 @@
|
||||||
margin-left: calc(var(--spacing) * 0);
|
margin-left: calc(var(--spacing) * 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.sm\:ml-1 {
|
|
||||||
@media (width >= 40rem) {
|
|
||||||
margin-left: calc(var(--spacing) * 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.sm\:inline {
|
.sm\:inline {
|
||||||
@media (width >= 40rem) {
|
@media (width >= 40rem) {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.sm\:h-6 {
|
|
||||||
@media (width >= 40rem) {
|
|
||||||
height: calc(var(--spacing) * 6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.sm\:w-6 {
|
|
||||||
@media (width >= 40rem) {
|
|
||||||
width: calc(var(--spacing) * 6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.sm\:flex-shrink-1 {
|
.sm\:flex-shrink-1 {
|
||||||
@media (width >= 40rem) {
|
@media (width >= 40rem) {
|
||||||
flex-shrink: 1;
|
flex-shrink: 1;
|
||||||
|
@ -1038,11 +945,6 @@
|
||||||
gap: calc(var(--spacing) * 2);
|
gap: calc(var(--spacing) * 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.sm\:gap-3 {
|
|
||||||
@media (width >= 40rem) {
|
|
||||||
gap: calc(var(--spacing) * 3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.sm\:gap-8 {
|
.sm\:gap-8 {
|
||||||
@media (width >= 40rem) {
|
@media (width >= 40rem) {
|
||||||
gap: calc(var(--spacing) * 8);
|
gap: calc(var(--spacing) * 8);
|
||||||
|
@ -1053,11 +955,6 @@
|
||||||
padding-block: calc(var(--spacing) * 14);
|
padding-block: calc(var(--spacing) * 14);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.sm\:py-\[200px\] {
|
|
||||||
@media (width >= 40rem) {
|
|
||||||
padding-block: 200px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.sm\:text-base {
|
.sm\:text-base {
|
||||||
@media (width >= 40rem) {
|
@media (width >= 40rem) {
|
||||||
font-size: var(--text-base);
|
font-size: var(--text-base);
|
||||||
|
@ -1069,16 +966,6 @@
|
||||||
margin-block: calc(var(--spacing) * -8);
|
margin-block: calc(var(--spacing) * -8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.md\:grid {
|
|
||||||
@media (width >= 48rem) {
|
|
||||||
display: grid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.md\:hidden {
|
|
||||||
@media (width >= 48rem) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.md\:scale-85 {
|
.md\:scale-85 {
|
||||||
@media (width >= 48rem) {
|
@media (width >= 48rem) {
|
||||||
--tw-scale-x: 85%;
|
--tw-scale-x: 85%;
|
||||||
|
@ -1247,31 +1134,6 @@ body {
|
||||||
inherits: false;
|
inherits: false;
|
||||||
initial-value: 1;
|
initial-value: 1;
|
||||||
}
|
}
|
||||||
@property --tw-rotate-x {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: rotateX(0);
|
|
||||||
}
|
|
||||||
@property --tw-rotate-y {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: rotateY(0);
|
|
||||||
}
|
|
||||||
@property --tw-rotate-z {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: rotateZ(0);
|
|
||||||
}
|
|
||||||
@property --tw-skew-x {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: skewX(0);
|
|
||||||
}
|
|
||||||
@property --tw-skew-y {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: skewY(0);
|
|
||||||
}
|
|
||||||
@property --tw-border-style {
|
@property --tw-border-style {
|
||||||
syntax: "*";
|
syntax: "*";
|
||||||
inherits: false;
|
inherits: false;
|
||||||
|
@ -1327,83 +1189,6 @@ body {
|
||||||
syntax: "*";
|
syntax: "*";
|
||||||
inherits: false;
|
inherits: false;
|
||||||
}
|
}
|
||||||
@property --tw-outline-style {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: solid;
|
|
||||||
}
|
|
||||||
@property --tw-blur {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-brightness {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-contrast {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-grayscale {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-hue-rotate {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-invert {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-opacity {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-saturate {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-sepia {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-backdrop-blur {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-backdrop-brightness {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-backdrop-contrast {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-backdrop-grayscale {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-backdrop-hue-rotate {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-backdrop-invert {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-backdrop-opacity {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-backdrop-saturate {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-backdrop-sepia {
|
|
||||||
syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}
|
|
||||||
@property --tw-duration {
|
@property --tw-duration {
|
||||||
syntax: "*";
|
syntax: "*";
|
||||||
inherits: false;
|
inherits: false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue