chore: scaffold astro frontend with static output
This commit is contained in:
parent
6bec95a563
commit
f1a0d1ddef
8 changed files with 10277 additions and 0 deletions
6
frontend/.gitignore
vendored
Normal file
6
frontend/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
.astro/
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
*.log
|
||||||
19
frontend/astro.config.mjs
Normal file
19
frontend/astro.config.mjs
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
// @ts-check
|
||||||
|
import { defineConfig } from 'astro/config';
|
||||||
|
import node from '@astrojs/node';
|
||||||
|
import react from '@astrojs/react';
|
||||||
|
|
||||||
|
// astro 5 merged 'hybrid' into 'static' + per-route `export const prerender = false`.
|
||||||
|
// the node adapter is required so api endpoints can actually run on demand.
|
||||||
|
export default defineConfig({
|
||||||
|
output: 'static',
|
||||||
|
adapter: node({ mode: 'standalone' }),
|
||||||
|
integrations: [react()],
|
||||||
|
server: {
|
||||||
|
host: process.env.HOST || '0.0.0.0',
|
||||||
|
port: Number(process.env.PORT) || 3000,
|
||||||
|
},
|
||||||
|
vite: {
|
||||||
|
server: { fs: { strict: true } },
|
||||||
|
},
|
||||||
|
});
|
||||||
13
frontend/eslint.config.js
Normal file
13
frontend/eslint.config.js
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
import tseslint from 'typescript-eslint';
|
||||||
|
|
||||||
|
export default tseslint.config(
|
||||||
|
{ ignores: ['dist', 'node_modules', '.astro'] },
|
||||||
|
...tseslint.configs.recommended,
|
||||||
|
{
|
||||||
|
rules: {
|
||||||
|
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
|
||||||
|
'@typescript-eslint/no-explicit-any': 'error',
|
||||||
|
'no-console': ['warn', { allow: ['warn', 'error'] }],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
10169
frontend/package-lock.json
generated
Normal file
10169
frontend/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
37
frontend/package.json
Normal file
37
frontend/package.json
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
"name": "denpa-frontend",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "astro dev",
|
||||||
|
"build": "astro build",
|
||||||
|
"start": "node ./dist/server/entry.mjs",
|
||||||
|
"preview": "astro preview",
|
||||||
|
"check": "astro check",
|
||||||
|
"lint": "eslint src",
|
||||||
|
"test": "vitest run",
|
||||||
|
"test:watch": "vitest"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@astrojs/node": "^9.0.0",
|
||||||
|
"@astrojs/react": "^4.0.0",
|
||||||
|
"astro": "^5.0.0",
|
||||||
|
"react": "^18.3.1",
|
||||||
|
"react-dom": "^18.3.1",
|
||||||
|
"yaml": "^2.5.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@astrojs/check": "^0.9.9",
|
||||||
|
"@testing-library/react": "^16.0.0",
|
||||||
|
"@types/node": "^25.6.0",
|
||||||
|
"@types/react": "^18.3.0",
|
||||||
|
"@types/react-dom": "^18.3.0",
|
||||||
|
"@vitest/ui": "^2.0.0",
|
||||||
|
"eslint": "^9.0.0",
|
||||||
|
"happy-dom": "^15.0.0",
|
||||||
|
"typescript": "^5.9.3",
|
||||||
|
"typescript-eslint": "^8.0.0",
|
||||||
|
"vitest": "^2.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
9
frontend/src/env.d.ts
vendored
Normal file
9
frontend/src/env.d.ts
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
/// <reference types="astro/client" />
|
||||||
|
|
||||||
|
declare namespace NodeJS {
|
||||||
|
interface ProcessEnv {
|
||||||
|
LIBRARY_ROOT?: string;
|
||||||
|
DATA_ROOT?: string;
|
||||||
|
PUBLIC_ORIGIN?: string;
|
||||||
|
}
|
||||||
|
}
|
||||||
15
frontend/tsconfig.json
Normal file
15
frontend/tsconfig.json
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"extends": "astro/tsconfigs/strict",
|
||||||
|
"include": ["src/**/*", "astro.config.mjs"],
|
||||||
|
"exclude": ["dist", "node_modules"],
|
||||||
|
"compilerOptions": {
|
||||||
|
"jsx": "react-jsx",
|
||||||
|
"jsxImportSource": "react",
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"@lib/*": ["src/lib/*"],
|
||||||
|
"@components/*": ["src/components/*"],
|
||||||
|
"@styles/*": ["src/styles/*"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
frontend/vitest.config.ts
Normal file
9
frontend/vitest.config.ts
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { defineConfig } from 'vitest/config';
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
test: {
|
||||||
|
environment: 'happy-dom',
|
||||||
|
include: ['src/tests/**/*.test.ts', 'src/tests/**/*.test.tsx'],
|
||||||
|
globals: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue