From d6bb79411cee7339374642000097d73964132963 Mon Sep 17 00:00:00 2001 From: ljh0608 Date: Thu, 26 Dec 2024 01:09:17 +0900 Subject: [PATCH 1/6] =?UTF-8?q?chore:=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=A3=BC=EC=84=9D=20=EB=B0=8F=20=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=B8=8C=EB=9F=AC=EB=A6=AC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vite.config.ts | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index f3adf604..c30351f6 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,5 +1,3 @@ -// import prerender from '@prerenderer/renderer-puppeteer'; -import legacy from '@vitejs/plugin-legacy'; import react from '@vitejs/plugin-react'; import { visualizer } from 'rollup-plugin-visualizer'; import { defineConfig, loadEnv, type PluginOption } from 'vite'; @@ -59,27 +57,6 @@ export default defineConfig(async ({ mode }) => { }, }, plugins: [ - // legacy({ - // //import.meta 사용하기 위한 최소 버전 - // targets: ['chrome >= 64', 'safari >= 12'], - // renderLegacyChunks: true, - // modernPolyfills: true, - // }), - - // legacy({ - // //? 사용하기 위한 최소 버전 - // targets: ['chrome >= 80', 'safari >= 13.4'], - // renderLegacyChunks: true, - // modernPolyfills: true, - // }), - - // legacy({ - // //? 사용하기 위한 최소 버전 - // targets: ['chrome >= 64', 'edge >= 79', 'safari >= 11.1', 'firefox >= 67', 'ie >= 11'], - // renderLegacyChunks: false, - // modernPolyfills: true, - // }), - react({ jsxImportSource: '@emotion/react', babel: { @@ -95,7 +72,6 @@ export default defineConfig(async ({ mode }) => { }, }), prerender({ - // routes: dynamicRoutes, routes: dynamicRoutes, renderer: '@prerenderer/renderer-puppeteer', server: { @@ -118,9 +94,6 @@ export default defineConfig(async ({ mode }) => { }, }, postProcess: async (renderRoute) => { - // console.log(renderRoute.html); - console.log(renderRoute.route); - console.log('test'); const { data } = await axios.get( `${env.VITE_DEV_BASE_URL}/api/post/${extractLastSegment(renderRoute.route)}`, ); From c6ce1a7cd50cf503dd4d3b1bf02d7870f16a622f Mon Sep 17 00:00:00 2001 From: ljh0608 Date: Thu, 26 Dec 2024 01:26:34 +0900 Subject: [PATCH 2/6] =?UTF-8?q?refactor:=20=ED=95=A8=EC=88=98=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC=20=EB=B0=8F=20=ED=95=84=EC=9A=94=EC=97=86=EB=8A=94=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C,=20=EC=A3=BC=EC=84=9D=20=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/mockServiceWorker.js | 284 ---------------------------- public/vite.svg | 1 - src/pages/postDetail/PostDetail.tsx | 27 --- src/utils/crawler.ts | 0 src/utils/generateDynamicRoute.ts | 18 ++ vite.config.ts | 26 +-- yarn.lock | 177 +++++++++-------- 7 files changed, 122 insertions(+), 411 deletions(-) delete mode 100644 public/mockServiceWorker.js delete mode 100644 public/vite.svg delete mode 100644 src/utils/crawler.ts create mode 100644 src/utils/generateDynamicRoute.ts diff --git a/public/mockServiceWorker.js b/public/mockServiceWorker.js deleted file mode 100644 index 3a2c243f..00000000 --- a/public/mockServiceWorker.js +++ /dev/null @@ -1,284 +0,0 @@ -/* eslint-disable */ -/* tslint:disable */ - -/** - * Mock Service Worker. - * @see https://github.com/mswjs/msw - * - Please do NOT modify this file. - * - Please do NOT serve this file on production. - */ - -const PACKAGE_VERSION = '2.2.10' -const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423' -const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') -const activeClientIds = new Set() - -self.addEventListener('install', function () { - self.skipWaiting() -}) - -self.addEventListener('activate', function (event) { - event.waitUntil(self.clients.claim()) -}) - -self.addEventListener('message', async function (event) { - const clientId = event.source.id - - if (!clientId || !self.clients) { - return - } - - const client = await self.clients.get(clientId) - - if (!client) { - return - } - - const allClients = await self.clients.matchAll({ - type: 'window', - }) - - switch (event.data) { - case 'KEEPALIVE_REQUEST': { - sendToClient(client, { - type: 'KEEPALIVE_RESPONSE', - }) - break - } - - case 'INTEGRITY_CHECK_REQUEST': { - sendToClient(client, { - type: 'INTEGRITY_CHECK_RESPONSE', - payload: { - packageVersion: PACKAGE_VERSION, - checksum: INTEGRITY_CHECKSUM, - }, - }) - break - } - - case 'MOCK_ACTIVATE': { - activeClientIds.add(clientId) - - sendToClient(client, { - type: 'MOCKING_ENABLED', - payload: true, - }) - break - } - - case 'MOCK_DEACTIVATE': { - activeClientIds.delete(clientId) - break - } - - case 'CLIENT_CLOSED': { - activeClientIds.delete(clientId) - - const remainingClients = allClients.filter((client) => { - return client.id !== clientId - }) - - // Unregister itself when there are no more clients - if (remainingClients.length === 0) { - self.registration.unregister() - } - - break - } - } -}) - -self.addEventListener('fetch', function (event) { - const { request } = event - - // Bypass navigation requests. - if (request.mode === 'navigate') { - return - } - - // Opening the DevTools triggers the "only-if-cached" request - // that cannot be handled by the worker. Bypass such requests. - if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { - return - } - - // Bypass all requests when there are no active clients. - // Prevents the self-unregistered worked from handling requests - // after it's been deleted (still remains active until the next reload). - if (activeClientIds.size === 0) { - return - } - - // Generate unique request ID. - const requestId = crypto.randomUUID() - event.respondWith(handleRequest(event, requestId)) -}) - -async function handleRequest(event, requestId) { - const client = await resolveMainClient(event) - const response = await getResponse(event, client, requestId) - - // Send back the response clone for the "response:*" life-cycle events. - // Ensure MSW is active and ready to handle the message, otherwise - // this message will pend indefinitely. - if (client && activeClientIds.has(client.id)) { - ;(async function () { - const responseClone = response.clone() - - sendToClient( - client, - { - type: 'RESPONSE', - payload: { - requestId, - isMockedResponse: IS_MOCKED_RESPONSE in response, - type: responseClone.type, - status: responseClone.status, - statusText: responseClone.statusText, - body: responseClone.body, - headers: Object.fromEntries(responseClone.headers.entries()), - }, - }, - [responseClone.body], - ) - })() - } - - return response -} - -// Resolve the main client for the given event. -// Client that issues a request doesn't necessarily equal the client -// that registered the worker. It's with the latter the worker should -// communicate with during the response resolving phase. -async function resolveMainClient(event) { - const client = await self.clients.get(event.clientId) - - if (client?.frameType === 'top-level') { - return client - } - - const allClients = await self.clients.matchAll({ - type: 'window', - }) - - return allClients - .filter((client) => { - // Get only those clients that are currently visible. - return client.visibilityState === 'visible' - }) - .find((client) => { - // Find the client ID that's recorded in the - // set of clients that have registered the worker. - return activeClientIds.has(client.id) - }) -} - -async function getResponse(event, client, requestId) { - const { request } = event - - // Clone the request because it might've been already used - // (i.e. its body has been read and sent to the client). - const requestClone = request.clone() - - function passthrough() { - const headers = Object.fromEntries(requestClone.headers.entries()) - - // Remove internal MSW request header so the passthrough request - // complies with any potential CORS preflight checks on the server. - // Some servers forbid unknown request headers. - delete headers['x-msw-intention'] - - return fetch(requestClone, { headers }) - } - - // Bypass mocking when the client is not active. - if (!client) { - return passthrough() - } - - // Bypass initial page load requests (i.e. static assets). - // The absence of the immediate/parent client in the map of the active clients - // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet - // and is not ready to handle requests. - if (!activeClientIds.has(client.id)) { - return passthrough() - } - - // Notify the client that a request has been intercepted. - const requestBuffer = await request.arrayBuffer() - const clientMessage = await sendToClient( - client, - { - type: 'REQUEST', - payload: { - id: requestId, - url: request.url, - mode: request.mode, - method: request.method, - headers: Object.fromEntries(request.headers.entries()), - cache: request.cache, - credentials: request.credentials, - destination: request.destination, - integrity: request.integrity, - redirect: request.redirect, - referrer: request.referrer, - referrerPolicy: request.referrerPolicy, - body: requestBuffer, - keepalive: request.keepalive, - }, - }, - [requestBuffer], - ) - - switch (clientMessage.type) { - case 'MOCK_RESPONSE': { - return respondWithMock(clientMessage.data) - } - - case 'PASSTHROUGH': { - return passthrough() - } - } - - return passthrough() -} - -function sendToClient(client, message, transferrables = []) { - return new Promise((resolve, reject) => { - const channel = new MessageChannel() - - channel.port1.onmessage = (event) => { - if (event.data && event.data.error) { - return reject(event.data.error) - } - - resolve(event.data) - } - - client.postMessage( - message, - [channel.port2].concat(transferrables.filter(Boolean)), - ) - }) -} - -async function respondWithMock(response) { - // Setting response status code to 0 is a no-op. - // However, when responding with a "Response.error()", the produced Response - // instance will have status code set to 0. Since it's not possible to create - // a Response instance with status code 0, handle that use-case separately. - if (response.status === 0) { - return Response.error() - } - - const mockedResponse = new Response(response.body, response) - - Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { - value: true, - enumerable: true, - }) - - return mockedResponse -} diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb1..00000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/pages/postDetail/PostDetail.tsx b/src/pages/postDetail/PostDetail.tsx index 0b632332..ced78237 100644 --- a/src/pages/postDetail/PostDetail.tsx +++ b/src/pages/postDetail/PostDetail.tsx @@ -2,7 +2,6 @@ import styled from '@emotion/styled'; import { useEffect, useState } from 'react'; import { useLocation, useNavigate } from 'react-router-dom'; -import { Helmet } from 'react-helmet-async'; import { useParams } from 'react-router-dom'; import { DefaultModal, DefaultModalBtn } from '../../components/commons/modal/DefaultModal'; import Responsive from '../../components/commons/Responsive/Responsive'; @@ -108,32 +107,6 @@ const PostDetail = () => { return ( <> - - {`MILE - ${postData?.title}`} - - - - - - - {/* - A fancy webpage - - - - - - */} - {accessToken ? : } diff --git a/src/utils/crawler.ts b/src/utils/crawler.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/src/utils/generateDynamicRoute.ts b/src/utils/generateDynamicRoute.ts new file mode 100644 index 00000000..b3e98b88 --- /dev/null +++ b/src/utils/generateDynamicRoute.ts @@ -0,0 +1,18 @@ +import { allPostParsing } from './allPostParsing'; + +type GroupPostIdentifierTypes = { + groupId: string; + postId: string; +}; + +export const generateDynamicRoutes = async () => { + const dynamicRoutes: string[] = []; // 동적 경로 저장 배열 + + const data: GroupPostIdentifierTypes[] = await allPostParsing(import.meta.env.VITE_DEV_BASE_URL); + + data.map((items: GroupPostIdentifierTypes) => { + dynamicRoutes.push(`/detail/${items.groupId}/${items.postId}`); // 동적경로 리스트 + }); + + return dynamicRoutes; +}; diff --git a/vite.config.ts b/vite.config.ts index c30351f6..80e318b9 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -3,36 +3,18 @@ import { visualizer } from 'rollup-plugin-visualizer'; import { defineConfig, loadEnv, type PluginOption } from 'vite'; import svgr from 'vite-plugin-svgr'; import prerender from '@prerenderer/rollup-plugin'; +import { generateDynamicRoutes } from './src/utils/generateDynamicRoute'; -import { allPostParsing } from './src/utils/allPostParsing'; import axios from 'axios'; -type GroupPostIdentifierTypes = { - groupId: string; - postId: string; -}; -const generatePerformanceRoutes = async ({ mode }) => { - const env = loadEnv(mode, process.cwd(), ''); - - const dynamicRoutes: string[] = []; // 동적 경로 저장 배열 - - const data: GroupPostIdentifierTypes[] = await allPostParsing(env.VITE_DEV_BASE_URL); - - data.map((items: GroupPostIdentifierTypes) => { - dynamicRoutes.push(`/detail/${items.groupId}/${items.postId}`); // 정적 경로와 동적 경로를 결합하여 반환 - }); - - return dynamicRoutes; -}; - -function extractLastSegment(url: string): string { +function extractPostId(url: string): string { const lastIndex = url.lastIndexOf('/'); return lastIndex !== -1 ? url.substring(lastIndex + 1) : url; } export default defineConfig(async ({ mode }) => { const env = loadEnv(mode, process.cwd(), ''); - const dynamicRoutes = await generatePerformanceRoutes({ mode }); + const dynamicRoutes = await generateDynamicRoutes(); return { esbuild: { @@ -95,7 +77,7 @@ export default defineConfig(async ({ mode }) => { }, postProcess: async (renderRoute) => { const { data } = await axios.get( - `${env.VITE_DEV_BASE_URL}/api/post/${extractLastSegment(renderRoute.route)}`, + `${env.VITE_DEV_BASE_URL}/api/post/${extractPostId(renderRoute.route)}`, ); const title = data.data.title; diff --git a/yarn.lock b/yarn.lock index 697c2269..04adeea8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,7 +23,7 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" -"@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2": +"@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.2": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== @@ -63,27 +63,6 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/core@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" - integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.26.0" - "@babel/generator" "^7.26.0" - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helpers" "^7.26.0" - "@babel/parser" "^7.26.0" - "@babel/template" "^7.25.9" - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.26.0" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - "@babel/generator@^7.23.6": version "7.23.6" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz" @@ -94,7 +73,7 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/generator@^7.26.0", "@babel/generator@^7.26.3": +"@babel/generator@^7.26.3": version "7.26.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== @@ -335,14 +314,6 @@ "@babel/traverse" "^7.23.7" "@babel/types" "^7.23.6" -"@babel/helpers@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" - integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== - dependencies: - "@babel/template" "^7.25.9" - "@babel/types" "^7.26.0" - "@babel/highlight@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz" @@ -357,7 +328,7 @@ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz" integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== -"@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3": +"@babel/parser@^7.25.9", "@babel/parser@^7.26.3": version "7.26.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== @@ -431,6 +402,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" +"@babel/plugin-syntax-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" @@ -743,6 +721,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" +"@babel/plugin-transform-react-display-name@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d" + integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-react-jsx-development@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz#8fd220a77dd139c07e25225a903b8be8c829e0d7" + integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/plugin-transform-react-jsx-self@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz" @@ -757,6 +749,25 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-react-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" + integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-jsx" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/plugin-transform-react-pure-annotations@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz#ea1c11b2f9dbb8e2d97025f43a3b5bc47e18ae62" + integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-regenerator@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" @@ -931,6 +942,18 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-react@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.26.3.tgz#7c5e028d623b4683c1f83a0bd4713b9100560caa" + integrity sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-transform-react-display-name" "^7.25.9" + "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/plugin-transform-react-jsx-development" "^7.25.9" + "@babel/plugin-transform-react-pure-annotations" "^7.25.9" + "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.23.2": version "7.23.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.7.tgz" @@ -952,6 +975,11 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/standalone@^7.17.9": + version "7.26.4" + resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.26.4.tgz#440d8046929174b463e2c6294fc8f6d49fdea550" + integrity sha512-SF+g7S2mhTT1b7CHyfNjDkPU1corxg4LPYsyP0x5KuCl+EbtBQHRLqr9N3q7e7+x7NQ5LYxQf8mJ2PmzebLr0A== + "@babel/template@^7.22.15": version "7.22.15" resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" @@ -1008,7 +1036,7 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3", "@babel/types@^7.4.4": +"@babel/types@^7.25.9", "@babel/types@^7.26.3", "@babel/types@^7.4.4": version "7.26.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0" integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA== @@ -1414,11 +1442,6 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.20" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz" @@ -2216,19 +2239,16 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@vitejs/plugin-legacy@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-legacy/-/plugin-legacy-6.0.0.tgz#c42d728e6c3aee11e0119596960529ce6cb2279d" - integrity sha512-pWt9cWaGJAKYw+67VLpN8hSP+G+yAQnrf5Pqh/NzSDKFl/4KpxTtwb5OLQezHoZOxghahO/ha3IpvblBbX/t6A== +"@vitejs/plugin-legacy@1.8.1": + version "1.8.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-legacy/-/plugin-legacy-1.8.1.tgz#9431a983f950b4343d5b80a1916f25cc03d6b9c4" + integrity sha512-kmBWKq7EeNvzS4AqPBqUKdoWG/NYQXh7StUFMWR3D21aN5Mfmar7CTO2a7K+bBxJH/vAL9gnnueA0wb7cycCmQ== dependencies: - "@babel/core" "^7.26.0" - "@babel/preset-env" "^7.26.0" - browserslist "^4.24.2" - browserslist-to-esbuild "^2.1.1" - core-js "^3.39.0" - magic-string "^0.30.13" - regenerator-runtime "^0.14.1" - systemjs "^6.15.1" + "@babel/standalone" "^7.17.9" + core-js "^3.21.1" + magic-string "^0.26.1" + regenerator-runtime "^0.13.9" + systemjs "^6.12.1" "@vitejs/plugin-react@^4.2.1": version "4.2.1" @@ -2644,13 +2664,6 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" -browserslist-to-esbuild@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/browserslist-to-esbuild/-/browserslist-to-esbuild-2.1.1.tgz#50dc4c55a6889ba22c7b1bd820032f81b822faf0" - integrity sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw== - dependencies: - meow "^13.0.0" - browserslist@^4.22.2: version "4.22.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" @@ -2753,9 +2766,9 @@ caniuse-lite@^1.0.30001565: integrity sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg== caniuse-lite@^1.0.30001688: - version "1.0.30001689" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz#67ca960dd5f443903e19949aeacc9d28f6e10910" - integrity sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g== + version "1.0.30001690" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8" + integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w== case-anything@^2.1.13: version "2.1.13" @@ -2968,7 +2981,7 @@ core-js-compat@^3.38.0, core-js-compat@^3.38.1: dependencies: browserslist "^4.24.2" -core-js@^3.39.0: +core-js@^3.21.1: version "3.39.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.39.0.tgz#57f7647f4d2d030c32a72ea23a0555b2eaa30f83" integrity sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g== @@ -3324,9 +3337,9 @@ electron-to-chromium@^1.4.601: integrity sha512-osHqhtjojpCsACVnuD11xO5g9xaCyw7Qqn/C2KParkMv42i8jrJJgx3g7mkHfpxwhy9MnOJr8+pKOdZ7qzgizg== electron-to-chromium@^1.5.73: - version "1.5.74" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.74.tgz#cb886b504a6467e4c00bea3317edb38393c53413" - integrity sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw== + version "1.5.76" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz#db20295c5061b68f07c8ea4dfcbd701485d94a3d" + integrity sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ== emoji-regex@^8.0.0: version "8.0.0" @@ -4638,9 +4651,9 @@ is-core-module@^2.13.0, is-core-module@^2.13.1: hasown "^2.0.0" is-core-module@^2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.0.tgz#6c01ffdd5e33c49c1d2abfa93334a85cb56bd81c" - integrity sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g== + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== dependencies: hasown "^2.0.2" @@ -5081,12 +5094,12 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== -magic-string@^0.30.13: - version "0.30.17" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" - integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== +magic-string@^0.26.1: + version "0.26.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" + integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" + sourcemap-codec "^1.4.8" make-error@^1.3.6: version "1.3.6" @@ -6201,7 +6214,12 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.14.0, regenerator-runtime@^0.14.1: +regenerator-runtime@^0.13.9: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== @@ -6282,9 +6300,9 @@ resolve-from@^5.0.0: integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve@^1.14.2: - version "1.22.9" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.9.tgz#6da76e4cdc57181fa4471231400e8851d0a924f3" - integrity sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A== + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== dependencies: is-core-module "^2.16.0" path-parse "^1.0.7" @@ -6694,6 +6712,11 @@ source-map@^0.7.4: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + sourcemapped-stacktrace-node@2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/sourcemapped-stacktrace-node/-/sourcemapped-stacktrace-node-2.1.8.tgz#96fd64263051e252ce8dabf9801bea29dc7e5990" @@ -6945,7 +6968,7 @@ synckit@^0.8.6: "@pkgr/core" "^0.1.0" tslib "^2.6.2" -systemjs@^6.15.1: +systemjs@^6.12.1: version "6.15.1" resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-6.15.1.tgz#74175b6810e27a79e1177d21db5f0e3057118cea" integrity sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA== From a2a0f62780bbd2b283336139dbe9402088c226dd Mon Sep 17 00:00:00 2001 From: ljh0608 Date: Thu, 26 Dec 2024 01:50:56 +0900 Subject: [PATCH 3/6] =?UTF-8?q?fix:=20env=20=EC=9D=B8=EC=8B=9D=EB=AA=BB?= =?UTF-8?q?=ED=95=A8=20=EC=9D=B4=EC=8A=88=EB=A1=9C=20param=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=A0=84=EB=8B=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/generateDynamicRoute.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/generateDynamicRoute.ts b/src/utils/generateDynamicRoute.ts index b3e98b88..b878105e 100644 --- a/src/utils/generateDynamicRoute.ts +++ b/src/utils/generateDynamicRoute.ts @@ -5,10 +5,10 @@ type GroupPostIdentifierTypes = { postId: string; }; -export const generateDynamicRoutes = async () => { +export const generateDynamicRoutes = async (apiURL: string) => { const dynamicRoutes: string[] = []; // 동적 경로 저장 배열 - const data: GroupPostIdentifierTypes[] = await allPostParsing(import.meta.env.VITE_DEV_BASE_URL); + const data: GroupPostIdentifierTypes[] = await allPostParsing(apiURL); data.map((items: GroupPostIdentifierTypes) => { dynamicRoutes.push(`/detail/${items.groupId}/${items.postId}`); // 동적경로 리스트 From 1caecf5bbfe23a987977ce5266da0d5e71a3e38e Mon Sep 17 00:00:00 2001 From: ljh0608 Date: Thu, 26 Dec 2024 02:04:34 +0900 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20env=20param=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=A0=84=EB=8B=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/generateDynamicRoute.ts | 12 ++++++++---- vite.config.ts | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/utils/generateDynamicRoute.ts b/src/utils/generateDynamicRoute.ts index b878105e..d29cfa2d 100644 --- a/src/utils/generateDynamicRoute.ts +++ b/src/utils/generateDynamicRoute.ts @@ -8,11 +8,15 @@ type GroupPostIdentifierTypes = { export const generateDynamicRoutes = async (apiURL: string) => { const dynamicRoutes: string[] = []; // 동적 경로 저장 배열 - const data: GroupPostIdentifierTypes[] = await allPostParsing(apiURL); + try { + const data: GroupPostIdentifierTypes[] = await allPostParsing(apiURL); - data.map((items: GroupPostIdentifierTypes) => { - dynamicRoutes.push(`/detail/${items.groupId}/${items.postId}`); // 동적경로 리스트 - }); + data.map((items: GroupPostIdentifierTypes) => { + dynamicRoutes.push(`/detail/${items.groupId}/${items.postId}`); // 동적경로 리스트 + }); + } catch (e) { + console.log(e); + } return dynamicRoutes; }; diff --git a/vite.config.ts b/vite.config.ts index 80e318b9..b2deabc5 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -14,7 +14,8 @@ function extractPostId(url: string): string { export default defineConfig(async ({ mode }) => { const env = loadEnv(mode, process.cwd(), ''); - const dynamicRoutes = await generateDynamicRoutes(); + + const dynamicRoutes = await generateDynamicRoutes(env.VITE_DEV_BASE_URL); return { esbuild: { From b556d6ce8e67d3f051e0e0f423c1f89b2d07b115 Mon Sep 17 00:00:00 2001 From: ljh0608 Date: Thu, 26 Dec 2024 02:19:03 +0900 Subject: [PATCH 5/6] =?UTF-8?q?chore:=20=EC=A3=BC=EC=84=9D=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vite.config.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/vite.config.ts b/vite.config.ts index b2deabc5..2f5ceee3 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -65,6 +65,7 @@ export default defineConfig(async ({ mode }) => { rendererOptions: { maxConcurrentRoutes: 1, launchOptions: { + //chrome 버전 이슈 해결을 위한 env 설정 args: [ '--no-sandbox', '--disable-setuid-sandbox', @@ -76,6 +77,8 @@ export default defineConfig(async ({ mode }) => { headless: true, }, }, + + //render되는 static index html 파일들을 커스텀하기 위한 로직 postProcess: async (renderRoute) => { const { data } = await axios.get( `${env.VITE_DEV_BASE_URL}/api/post/${extractPostId(renderRoute.route)}`, @@ -88,13 +91,14 @@ export default defineConfig(async ({ mode }) => { .replace(/http:/i, 'https:') .replace(/(https:\/\/)?(localhost|127\.0\.0\.1):\d*/i, 'https://www.milewriting.com'); - //기존 meta tag삭제 + //기존 meta tag 삭제 renderRoute.html = renderRoute.html .replace(//i, '') .replace(//i, '') .replace(//i, '') .replace(//i, ''); + //동적으로 OG tag 삽입 renderRoute.html = renderRoute.html.replace( /<\/head>/i, ` From 3e67d4653c33230f523006357d26c9ea04d45f48 Mon Sep 17 00:00:00 2001 From: ljh0608 Date: Fri, 27 Dec 2024 01:28:28 +0900 Subject: [PATCH 6/6] chore: test commit --- vite.config.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vite.config.ts b/vite.config.ts index 2f5ceee3..e5ed99f5 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -108,11 +108,13 @@ export default defineConfig(async ({ mode }) => { 'https://github.com/user-attachments/assets/52ce1a54-3429-4d0d-9801-e7cda913596f' }" /> - + `, ); + + //test }, }),