Skip to content

Commit b30300c

Browse files
authored
Merge branch 'main' into 26-feat/모달-컴포넌트-제작
2 parents 6b07d0d + 11c8cd5 commit b30300c

8 files changed

Lines changed: 1168 additions & 44 deletions

File tree

.github/workflows/pr-check.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ jobs:
7575

7676
- name: Build size check
7777
run: |
78-
BUILD_SIZE_KB=$(du -sk dist | cut -f1)
78+
BUILD_SIZE_KB=$(du -sk build/client | cut -f1)
7979
BUILD_SIZE_MB=$((BUILD_SIZE_KB / 1024))
8080
echo "Build size: ${BUILD_SIZE_MB}MB"
8181
@@ -93,7 +93,7 @@ jobs:
9393
uses: actions/upload-artifact@v4
9494
with:
9595
name: build-test-files
96-
path: dist/
96+
path: build/client/
9797
retention-days: 1
9898

9999
- name: Comment build results on PR
@@ -148,10 +148,10 @@ jobs:
148148
149149
// 빌드 크기 정보
150150
try {
151-
const stats = fs.statSync('dist');
151+
const stats = fs.statSync('build/client');
152152
if (stats.isDirectory()) {
153153
const { execSync } = require('child_process');
154-
const sizeKB = execSync('du -sk dist | cut -f1', { encoding: 'utf8' }).trim();
154+
const sizeKB = execSync('du -sk build/client | cut -f1', { encoding: 'utf8' }).trim();
155155
const sizeMB = Math.round(parseInt(sizeKB) / 1024);
156156
157157
if (sizeMB > 10) {

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ pnpm-debug.log*
88
lerna-debug.log*
99

1010
node_modules
11-
dist
11+
build
1212
dist-ssr
1313
*.local
1414
.react-router
@@ -38,3 +38,7 @@ storybook-static
3838
# Yarn
3939
.yarn/cache
4040
.yarn/install-state.gz
41+
!.yarn/releases
42+
43+
# Vercel
44+
.vercel

.yarn/releases/yarn-4.10.3.cjs

Lines changed: 942 additions & 0 deletions
Large diffs are not rendered by default.

.yarnrc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
nodeLinker: node-modules
2+
3+
yarnPath: .yarn/releases/yarn-4.10.3.cjs

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
"type": "module",
66
"packageManager": "yarn@4.10.3",
77
"scripts": {
8-
"dev": "vite",
9-
"build": "tsc -b && vite build",
8+
"dev": "react-router dev",
9+
"build": "react-router build",
1010
"lint": "eslint .",
1111
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,md}\"",
1212
"format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,css,md}\"",
@@ -23,10 +23,12 @@
2323
"@hookform/resolvers": "^5.2.2",
2424
"@tanstack/react-query": "^5.90.12",
2525
"@tanstack/react-query-devtools": "^5.91.1",
26+
"@vercel/react-router": "^1.2.4",
2627
"axios": "^1.13.2",
2728
"clsx": "^2.1.1",
2829
"dayjs": "^1.11.19",
2930
"es-toolkit": "^1.43.0",
31+
"isbot": "^5.1.32",
3032
"pretendard": "^1.3.9",
3133
"react": "^19.2.3",
3234
"react-dom": "^19.2.3",

react-router.config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
import { vercelPreset } from '@vercel/react-router/vite';
12
import type { Config } from '@react-router/dev/config';
23

34
export default {
45
appDirectory: 'src/app',
5-
buildDirectory: 'dist',
66
ssr: false,
7+
presets: [vercelPreset()],
78
} satisfies Config;

src/app/entry.server.tsx

Lines changed: 7 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,12 @@
1-
import { PassThrough } from 'node:stream';
2-
import { createReadableStreamFromReadable } from '@react-router/node';
3-
import { renderToPipeableStream } from 'react-dom/server';
4-
import { ServerRouter, type EntryContext } from 'react-router';
1+
import { handleRequest } from '@vercel/react-router/entry.server';
2+
import type { AppLoadContext, EntryContext } from 'react-router';
53

6-
export default function handleRequest(
4+
export default async function handleServerRequest(
75
request: Request,
86
responseStatusCode: number,
97
responseHeaders: Headers,
10-
routerContext: EntryContext
11-
) {
12-
return new Promise((resolve, reject) => {
13-
const { pipe } = renderToPipeableStream(
14-
<ServerRouter context={routerContext} url={request.url} />,
15-
{
16-
onShellReady() {
17-
responseHeaders.set('Content-Type', 'text/html');
18-
19-
const body = new PassThrough();
20-
const stream = createReadableStreamFromReadable(body);
21-
22-
resolve(
23-
new Response(stream, {
24-
headers: responseHeaders,
25-
status: responseStatusCode,
26-
})
27-
);
28-
29-
pipe(body);
30-
},
31-
onShellError(error: unknown) {
32-
reject(error);
33-
},
34-
}
35-
);
36-
});
8+
routerContext: EntryContext,
9+
loadContext?: AppLoadContext
10+
): Promise<Response> {
11+
return handleRequest(request, responseStatusCode, responseHeaders, routerContext, loadContext);
3712
}

0 commit comments

Comments
 (0)