mirror of
https://github.com/handsomezhuzhu/AeroStart.git
synced 2026-02-20 12:00:15 +00:00
✨ feat: add Vercel deployment support and optimize build configuration
Configure project for Vercel deployment with comprehensive build optimization: - Add Vercel deployment configuration (vercel.json) - Configure build commands and output directory - Set up Bilibili API proxy rewrites - Add security response headers (X-Content-Type-Options, X-Frame-Options, X-XSS-Protection) - Integrate Tailwind CSS 4.x build system - Add PostCSS configuration with @tailwindcss/postcss plugin - Create Tailwind CSS configuration with content scanning paths - Set up index.css with Tailwind imports and custom styles - Add Tailwind CSS 4.x and dependencies to package.json - Optimize HTML and entry files - Remove CDN-based Tailwind CSS in favor of local build - Add Google Fonts preconnect for better performance - Import CSS in index.tsx for proper bundling - Update README with deployment instructions - Add one-click Vercel deployment button - Separate local development and deployment sections Tech Stack Updates: - Tailwind CSS 4.1.17 with new PostCSS architecture - Autoprefixer 10.4.22 for CSS compatibility - PostCSS 8.5.6 for CSS processing Build Verification: - Development server runs successfully on port 3000 - Production build completes in ~860ms - Output: 13KB CSS (gzipped: 2.94KB), 260KB JS (gzipped: 80KB) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -15,6 +15,14 @@ A modern, customizable browser start page with elegant search experience and per
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### Deploy to Vercel
|
||||
|
||||
[](https://vercel.com/new/clone?repository-url=https://github.com/yourusername/AeroStart)
|
||||
|
||||
Click the button above to deploy your own instance of AeroStart to Vercel in minutes.
|
||||
|
||||
### Local Development
|
||||
|
||||
**Prerequisites:** Node.js 16+
|
||||
|
||||
### Install Dependencies
|
||||
|
||||
29
index.css
Normal file
29
index.css
Normal file
@@ -0,0 +1,29 @@
|
||||
@import "tailwindcss";
|
||||
|
||||
@theme {
|
||||
--font-family-sans: 'Inter', sans-serif;
|
||||
--font-family-mono: 'JetBrains Mono', monospace;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: var(--font-family-sans);
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.custom-scrollbar::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
}
|
||||
|
||||
.custom-scrollbar::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.custom-scrollbar::-webkit-scrollbar-thumb {
|
||||
background-color: rgba(255, 255, 255, 0.15);
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
30
index.html
30
index.html
@@ -4,33 +4,9 @@
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>AeroStart</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<style>
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;600&family=JetBrains+Mono:wght@300;400&display=swap');
|
||||
|
||||
body {
|
||||
font-family: 'Inter', sans-serif;
|
||||
margin: 0;
|
||||
overflow: hidden; /* Prevent scroll bars */
|
||||
}
|
||||
|
||||
/* Custom Scrollbar for Settings Modal */
|
||||
.custom-scrollbar::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
}
|
||||
.custom-scrollbar::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
.custom-scrollbar::-webkit-scrollbar-thumb {
|
||||
background-color: rgba(255, 255, 255, 0.15);
|
||||
border-radius: 999px;
|
||||
}
|
||||
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="/index.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;600&family=JetBrains+Mono:wght@300;400&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom/client';
|
||||
import './index.css';
|
||||
import App from './App';
|
||||
import { ToastProvider } from './context/ToastContext';
|
||||
|
||||
|
||||
@@ -13,8 +13,12 @@
|
||||
"react-dom": "^19.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/postcss": "^4.1.17",
|
||||
"@types/node": "^22.14.0",
|
||||
"@vitejs/plugin-react": "^5.0.0",
|
||||
"autoprefixer": "^10.4.22",
|
||||
"postcss": "^8.5.6",
|
||||
"tailwindcss": "^4.1.17",
|
||||
"typescript": "~5.8.2",
|
||||
"vite": "^6.2.0"
|
||||
}
|
||||
|
||||
817
pnpm-lock.yaml
generated
817
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
6
postcss.config.js
Normal file
6
postcss.config.js
Normal file
@@ -0,0 +1,6 @@
|
||||
export default {
|
||||
plugins: {
|
||||
'@tailwindcss/postcss': {},
|
||||
autoprefixer: {},
|
||||
},
|
||||
}
|
||||
12
tailwind.config.ts
Normal file
12
tailwind.config.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { Config } from 'tailwindcss'
|
||||
|
||||
export default {
|
||||
content: [
|
||||
"./index.html",
|
||||
"./*.{js,ts,jsx,tsx}",
|
||||
"./components/**/*.{js,ts,jsx,tsx}",
|
||||
"./context/**/*.{js,ts,jsx,tsx}",
|
||||
"./i18n/**/*.{js,ts,jsx,tsx}",
|
||||
"./utils/**/*.{js,ts,jsx,tsx}",
|
||||
],
|
||||
} satisfies Config
|
||||
32
vercel.json
Normal file
32
vercel.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"buildCommand": "pnpm build",
|
||||
"outputDirectory": "dist",
|
||||
"devCommand": "pnpm dev",
|
||||
"installCommand": "pnpm install",
|
||||
"framework": "vite",
|
||||
"rewrites": [
|
||||
{
|
||||
"source": "/bilibili/:path*",
|
||||
"destination": "https://s.search.bilibili.com/main/suggest/:path*"
|
||||
}
|
||||
],
|
||||
"headers": [
|
||||
{
|
||||
"source": "/(.*)",
|
||||
"headers": [
|
||||
{
|
||||
"key": "X-Content-Type-Options",
|
||||
"value": "nosniff"
|
||||
},
|
||||
{
|
||||
"key": "X-Frame-Options",
|
||||
"value": "DENY"
|
||||
},
|
||||
{
|
||||
"key": "X-XSS-Protection",
|
||||
"value": "1; mode=block"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user