Skip to content

Add GitHub Pages deployment setup #2

Add GitHub Pages deployment setup

Add GitHub Pages deployment setup #2

Workflow file for this run

name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Cache node modules
uses: actions/cache@v3
with:
path: |
1/node_modules
2/node_modules
3/node_modules
4/node_modules
5/node_modules
5a/node_modules
5b/node_modules
6/node_modules
6a/node_modules
7/node_modules
8/node_modules
key: ${{ runner.os }}-node-${{ hashFiles('*/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install dependencies and build all projects
run: |
# Install dependencies for all projects in parallel
for dir in 1 2 3 4 5 5a 5b 6 6a 7 8; do
(cd $dir && npm ci) &
done
wait
# Build all projects in parallel
for dir in 1 2 3 4 5 5a 5b 6 6a 7 8; do
(cd $dir && npm run build) &
done
wait
- name: Create combined dist
run: |
mkdir -p dist
mkdir -p dist/1 && cp -r 1/dist/* dist/1/
mkdir -p dist/2 && cp -r 2/dist/* dist/2/
mkdir -p dist/3 && cp -r 3/dist/* dist/3/
mkdir -p dist/4 && cp -r 4/dist/* dist/4/
mkdir -p dist/5 && cp -r 5/dist/* dist/5/
mkdir -p dist/5a && cp -r 5a/dist/* dist/5a/
mkdir -p dist/5b && cp -r 5b/dist/* dist/5b/
mkdir -p dist/6 && cp -r 6/dist/* dist/6/
mkdir -p dist/6a && cp -r 6a/dist/* dist/6a/
mkdir -p dist/7 && cp -r 7/dist/* dist/7/
mkdir -p dist/8 && cp -r 8/dist/* dist/8/
- name: Create index.html
run: |
cat > dist/index.html << 'EOF'
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Floating UI React Demo</title>
<style>
body {
font-family: system-ui, -apple-system, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 40px 20px;
line-height: 1.6;
background-color: #f8fafc;
}
h1 {
color: #1e293b;
text-align: center;
margin-bottom: 40px;
}
.demo-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
margin: 40px 0;
}
.demo-card {
background: white;
border-radius: 12px;
padding: 24px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
transition: transform 0.2s, box-shadow 0.2s;
text-decoration: none;
color: inherit;
}
.demo-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.demo-title {
font-size: 1.25rem;
font-weight: 600;
margin-bottom: 8px;
color: #3b82f6;
}
.demo-desc {
color: #64748b;
font-size: 0.875rem;
}
</style>
</head>
<body>
<h1>Floating UI React Demo</h1>
<div class="demo-grid">
<a href="./1/" class="demo-card">
<div class="demo-title">Demo 1</div>
<div class="demo-desc">基本的なFloating UIの実装</div>
</a>
<a href="./2/" class="demo-card">
<div class="demo-title">Demo 2</div>
<div class="demo-desc">ポジショニングオプション</div>
</a>
<a href="./3/" class="demo-card">
<div class="demo-title">Demo 3</div>
<div class="demo-desc">インタラクション機能</div>
</a>
<a href="./4/" class="demo-card">
<div class="demo-title">Demo 4</div>
<div class="demo-desc">アニメーション効果</div>
</a>
<a href="./5/" class="demo-card">
<div class="demo-title">Demo 5</div>
<div class="demo-desc">高度なカスタマイズ</div>
</a>
<a href="./5a/" class="demo-card">
<div class="demo-title">Demo 5a</div>
<div class="demo-desc">バリエーション A</div>
</a>
<a href="./5b/" class="demo-card">
<div class="demo-title">Demo 5b</div>
<div class="demo-desc">バリエーション B</div>
</a>
<a href="./6/" class="demo-card">
<div class="demo-title">Demo 6</div>
<div class="demo-desc">複雑なレイアウト</div>
</a>
<a href="./6a/" class="demo-card">
<div class="demo-title">Demo 6a</div>
<div class="demo-desc">レイアウト応用</div>
</a>
<a href="./7/" class="demo-card">
<div class="demo-title">Demo 7</div>
<div class="demo-desc">実用的な実装例</div>
</a>
<a href="./8/" class="demo-card">
<div class="demo-title">Demo 8</div>
<div class="demo-desc">完全なコンポーネント</div>
</a>
</div>
</body>
</html>
EOF
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './dist'
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