From 2e7e6588a875518e77ab0625457a172ee6454888 Mon Sep 17 00:00:00 2001 From: qier222 Date: Thu, 12 May 2022 17:53:04 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E4=BC=98=E5=8C=96Vercel=E9=83=A8?= =?UTF-8?q?=E7=BD=B2=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 ++++ packages/web/package.json | 2 +- packages/web/scripts/build.web.mjs | 37 ++++++++++++++++++++++++++++++ packages/web/vercel.example.json | 8 +++++++ packages/web/vite.config.ts | 6 ++--- 5 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 packages/web/scripts/build.web.mjs create mode 100644 packages/web/vercel.example.json diff --git a/.gitignore b/.gitignore index b0ae428..980f883 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,8 @@ release *.local .vscode/settings.json .turbo +.env +packages/web/bundle-stats-renderer.html +packages/web/bundle-stats.html +vercel.json +.vercel diff --git a/packages/web/package.json b/packages/web/package.json index 51308ac..ff92d23 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -4,7 +4,7 @@ "version": "2.0.0", "scripts": { "dev": "vite dev --host", - "build": "vite build", + "build": "node ./scripts/build.web.mjs", "test": "vitest", "test:ui": "vitest --ui", "test:coverage": "vitest run --coverage", diff --git a/packages/web/scripts/build.web.mjs b/packages/web/scripts/build.web.mjs new file mode 100644 index 0000000..7833f56 --- /dev/null +++ b/packages/web/scripts/build.web.mjs @@ -0,0 +1,37 @@ +import { build } from 'vite' +import { promises as fs } from 'fs' + +const main = async () => { + const api = process.env.VITE_APP_NETEASE_API_URL || '' + const rewriteApi = process.env.NETEASE_API_URL_FOR_REWRITE || '' + + /** + * 使用 Vercel 的 rewrite 功能来帮我们解决跨域的问题 + * @see https://vercel.com/docs/project-configuration#project-configuration/rewrites + */ + if (process.env.VERCEL && api === '/netease') { + console.log(`VITE_APP_NETEASE_API_URL: ${api}`) + console.log(`NETEASE_API_URL_FOR_REWRITE: ${rewriteApi}`) + + if (!rewriteApi.startsWith('http')) { + throw new Error('NETEASE_API_URL_FOR_REWRITE must start with http') + } + + const vercelConfig = JSON.parse(await fs.readFile('./vercel.example.json')) + vercelConfig.rewrites[0].destination = `${rewriteApi}${ + rewriteApi.endsWith('/') ? '' : '/' + }:match*` + + console.log('vercel.json 👇') + console.log(vercelConfig) + + await fs.writeFile( + '../../vercel.json', + JSON.stringify(vercelConfig, null, 2) + ) + } + + await build() +} + +main() diff --git a/packages/web/vercel.example.json b/packages/web/vercel.example.json new file mode 100644 index 0000000..70e2557 --- /dev/null +++ b/packages/web/vercel.example.json @@ -0,0 +1,8 @@ +{ + "rewrites": [ + { + "source": "/netease/:match*", + "destination": "https://your-netease-api.example.com/:match*" + } + ] +} diff --git a/packages/web/vite.config.ts b/packages/web/vite.config.ts index c4a1d93..ca5125f 100644 --- a/packages/web/vite.config.ts +++ b/packages/web/vite.config.ts @@ -27,15 +27,15 @@ export default defineConfig({ base: '/', build: { target: process.env.IS_ELECTRON ? 'esnext' : 'modules', - sourcemap: process.env.NODE_ENV === 'debug', + sourcemap: true, outDir: './dist', emptyOutDir: true, rollupOptions: { plugins: [ visualizer({ - filename: './bundle-stats-renderer.html', + filename: './bundle-stats.html', gzipSize: true, - projectRoot: 'src/renderer', + projectRoot: './', template: 'treemap', }), ],