first commit.
This commit is contained in:
42
.github/workflows/deploy.yml
vendored
Normal file
42
.github/workflows/deploy.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
name: Deploy
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build-and-deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 'current'
|
||||
cache: 'npm'
|
||||
- run: npm install
|
||||
- run: CI=false npm run build
|
||||
|
||||
- uses: appleboy/ssh-action@v0.1.4
|
||||
with:
|
||||
username: root
|
||||
host: ${{ secrets.HOST }}
|
||||
key: ${{ secrets.KEY }}
|
||||
script: docker compose -f /root/Home/docker-compose.yml down
|
||||
|
||||
- uses: easingthemes/ssh-deploy@v2.2.11
|
||||
env:
|
||||
SSH_PRIVATE_KEY: ${{ secrets.KEY }}
|
||||
REMOTE_HOST: ${{ secrets.HOST }}
|
||||
ARGS: "-avzr --delete"
|
||||
SOURCE: dist/
|
||||
REMOTE_USER: root
|
||||
TARGET: /root/Home/build
|
||||
|
||||
- uses: appleboy/ssh-action@v0.1.4
|
||||
with:
|
||||
username: root
|
||||
host: ${{ secrets.HOST }}
|
||||
key: ${{ secrets.KEY }}
|
||||
script: docker compose -f /root/Home/docker-compose.yml up -d
|
||||
24
.gitignore
vendored
Normal file
24
.gitignore
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
1
.prettierrc.toml
Normal file
1
.prettierrc.toml
Normal file
@@ -0,0 +1 @@
|
||||
semi = false
|
||||
14
index.html
Normal file
14
index.html
Normal file
@@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-Hans">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>首页</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
52
main.js
Normal file
52
main.js
Normal file
@@ -0,0 +1,52 @@
|
||||
import "./style.css"
|
||||
|
||||
const sites = [
|
||||
{
|
||||
url: "https://oj.hyyz.izhai.net",
|
||||
title: "在线判题网站",
|
||||
description: "判题狗",
|
||||
},
|
||||
{
|
||||
url: "https://code.hyyz.izhai.net",
|
||||
title: "代码运行网站",
|
||||
description: "自测猫",
|
||||
},
|
||||
{
|
||||
url: "https://book.hyyz.izhai.net",
|
||||
title: "编程知识网站",
|
||||
description: "编程书",
|
||||
},
|
||||
{
|
||||
url: "https://survey.hyyz.izhai.net",
|
||||
title: "问卷系统网站",
|
||||
description: "问卷姬",
|
||||
},
|
||||
{
|
||||
url: "https://huabu.hyyz.izhai.net",
|
||||
title: "在线画布",
|
||||
description: " Excalidraw",
|
||||
},
|
||||
{
|
||||
url: "https://blog.hyyz.izhai.net",
|
||||
title: "博客",
|
||||
description: "博客",
|
||||
},
|
||||
]
|
||||
|
||||
const item = (site) => `
|
||||
<a href="${site.url}" class="card">
|
||||
<h2>${site.title} →</h2>
|
||||
<p>徐越的${site.description} ${site.url}</p>
|
||||
</a>
|
||||
`
|
||||
|
||||
document.querySelector("#app").innerHTML = `
|
||||
<div class="container">
|
||||
<main class="main">
|
||||
<h1 class="title">你是不是要找以下网站?</h1>
|
||||
<div class="grid" id="sites"></div>
|
||||
</main>
|
||||
</div>
|
||||
`
|
||||
|
||||
document.querySelector("#sites").innerHTML = sites.map(item)
|
||||
1245
package-lock.json
generated
Normal file
1245
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
18
package.json
Normal file
18
package.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "hyyz-home-next",
|
||||
"private": true,
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"start": "vite",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview",
|
||||
"fmt": "prettier --write *.js style.css index.html"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-legacy": "^2.3.0",
|
||||
"prettier": "^2.7.1",
|
||||
"terser": "^5.15.1",
|
||||
"vite": "^3.2.0"
|
||||
}
|
||||
}
|
||||
BIN
public/favicon.ico
Normal file
BIN
public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
107
style.css
Normal file
107
style.css
Normal file
@@ -0,0 +1,107 @@
|
||||
html,
|
||||
body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
|
||||
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.container {
|
||||
padding: 0 2rem;
|
||||
}
|
||||
|
||||
.main {
|
||||
min-height: 100vh;
|
||||
padding: 2rem 0;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
margin: 0 0 2rem;
|
||||
line-height: 1.15;
|
||||
font-size: 3rem;
|
||||
}
|
||||
|
||||
.title,
|
||||
.description {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.description {
|
||||
margin: 4rem 0;
|
||||
line-height: 1.5;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
.card {
|
||||
margin: 1rem;
|
||||
padding: 1.5rem;
|
||||
text-align: left;
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
border: 1px solid #eaeaea;
|
||||
border-radius: 10px;
|
||||
transition: color 0.15s ease, border-color 0.15s ease;
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
.card:hover,
|
||||
.card:focus,
|
||||
.card:active {
|
||||
color: #0070f3;
|
||||
border-color: #0070f3;
|
||||
}
|
||||
|
||||
.card h2 {
|
||||
margin: 0 0 1rem 0;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.card p {
|
||||
margin: 0;
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.grid {
|
||||
width: 100%;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
color-scheme: dark;
|
||||
}
|
||||
|
||||
body {
|
||||
color: white;
|
||||
background: black;
|
||||
}
|
||||
|
||||
.card {
|
||||
border-color: #222;
|
||||
}
|
||||
}
|
||||
11
vite.config.js
Normal file
11
vite.config.js
Normal file
@@ -0,0 +1,11 @@
|
||||
import { defineConfig } from "vite"
|
||||
import legacy from "@vitejs/plugin-legacy"
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
legacy({
|
||||
targets: ["defaults", "not IE 11"],
|
||||
}),
|
||||
],
|
||||
})
|
||||
Reference in New Issue
Block a user