index.html
@@ -8,8 +8,8 @@ name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" /> <link rel="icon" href="/ZQHXico.ico" /> <title>æµè¯è¿éå管çç³»ç»</title> <link rel="icon" href="/favicon.ico" /> <title>%VITE_APP_TITLE%</title> <!--[if lt IE 11 ]><script> window.location.href = "/html/ie.html"; multiple/assets/favicon/HYSNico.ico
multiple/assets/favicon/JZYJico.ico
multiple/assets/favicon/WDSYico.ico
multiple/assets/favicon/ZQHXico.ico
multiple/assets/favicon/favicon.ico
multiple/assets/logo/HYSNLogo.png
multiple/assets/logo/logo.png
multiple/assets/logo/ÄÏÍ¨ÔÆ´Ó¹¤Òµ»¥ÁªÍøÓÐÏÞ¹«Ë¾.png
multiple/assets/logo/ÐÂÀ£¨½ËÕ£©Êý×ֿƼ¼ÓÐÏÞ¹«Ë¾.png
multiple/assets/logo/оµ¼Èí¼þ£¨½ËÕ£©ÓÐÏÞ¹«Ë¾.png
multiple/assets/screen/HYSNView.png
multiple/assets/screen/JZYJView.png
multiple/assets/screen/WDSYView.png
multiple/assets/screen/ZQHXView.png
multiple/config.json
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ { "default": { "env": { "VITE_APP_TITLE": "è¯å¯¼äºï¼ç®¡çä¿¡æ¯ç³»ç»ï¼" }, "screen": "screen/JZYJView.png", "logo": "logo/HYSNLogo.png", "favicon": "favicon/HYSNico.ico" }, "AAA": { "env": { "VITE_APP_TITLE": "éè¾¹å¿ä¼å¾·å®ä¸æéå ¬å¸", "VITE_BASE_API": "http://127.0.0.1:9036" }, "screen": "screen/HYSNView.png", "logo": "logo/åéäºä»å·¥ä¸äºèç½æéå ¬å¸.png", "favicon": "favicon/WDSYico.ico" }, "BBB": { "env": { "VITE_APP_TITLE": "éè¾¹å¿ä¸å¼ºæå ´ç¯ä¿ç§ææéå ¬å¸", "VITE_BASE_API": "http://127.0.0.1:9036" }, "screen": "screen/ZQHXView.png", "logo": "logo/æ°ç¼ï¼æ±èï¼æ°åç§ææéå ¬å¸.png", "favicon": "favicon/HYSNico.ico" }, "screen": "/src/assets/images/login-background.png", "logo": "/src/assets/logo/logo.png", "favicon": "/public/favicon.ico" } multiple/multiple-build.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,86 @@ import fs from 'fs/promises'; import fsSync from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; import { execSync } from "child_process"; // è·å __dirname const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); // 读å JSON é ç½® const data = await fs.readFile(path.join(__dirname, 'config.json'), 'utf-8'); const config = JSON.parse(data); // 项ç®è·¯å¾ const rootPath = path.resolve(__dirname, '..'); const resourcePath = path.join(rootPath, 'multiple', 'assets'); const replacePath = path.join(rootPath, 'replace'); // è·åå½ä»¤è¡åæ° const params = parseArgs(process.argv); const company = params["company"] ?? "default"; const companyMap = config[company]; const envFilePath = path.join(process.cwd(), '.env.production.local'); try { // 1ï¸â£ çæ .env console.log("=======çæ.env======="); const envContent = Object.entries(companyMap.env) .map(([key, value]) => `${key}='${value}'`) .join('\n') + '\n'; await fs.writeFile(envFilePath, envContent, 'utf-8'); // 2ï¸â£ å¤ä»½åå§èµæºå¹¶æ¿æ¢ console.log("=======ä¿®æ¹èµæº======="); for (const [key, value] of Object.entries(companyMap)) { if (key === 'env') continue; const originFile = path.join(rootPath, config[key]); const backupFile = path.join(replacePath, config[key]); const replaceFile = path.join(resourcePath, companyMap[key]); await fs.mkdir(path.dirname(backupFile), { recursive: true }); await fs.copyFile(originFile, backupFile); await fs.copyFile(replaceFile, originFile); } console.log("=====å¼å§æå ======"); execSync("vite build", { stdio: "inherit" }); console.log("=====æå 宿======"); } finally { console.log("=====æ¢å¤èµæº======"); // å é¤ä¸´æ¶ .env æä»¶ if (fsSync.existsSync(envFilePath)) { await fs.unlink(envFilePath); console.log(`ðï¸ å·²å é¤ ${envFilePath}`); } // æ¢å¤èµæºæä»¶ if (fsSync.existsSync(replacePath)) { for (const [key, value] of Object.entries(companyMap)) { if (key === 'env') continue; const originFile = path.join(rootPath, config[key]); const backupFile = path.join(replacePath, config[key]); await fs.copyFile(backupFile, originFile); } await fs.rm(replacePath, { recursive: true, force: true }); console.log(`ðï¸ å·²å é¤ ${replacePath}`); } } // ç®åå½ä»¤è¡åæ°è§£æ function parseArgs(argv) { const params = {}; for (const arg of argv.slice(2)) { if (arg.startsWith('--')) { const [key, value] = arg.slice(2).split('='); params[key] = value ?? true; } } return params; } package.json
@@ -1,13 +1,13 @@ { "name": "ruoyi", "version": "3.8.9", "description": "æµè¯è¿éå管çç³»ç»", "description": "ä¸å°ä¼ä¸æ°åå转åäºçº§å¥é¤å ", "author": "è¥ä¾", "license": "MIT", "type": "module", "scripts": { "dev": "vite", "build:prod": "vite build", "build:prod": "node multiple/multiple-build.js", "build:stage": "vite build --mode staging", "preview": "vite preview" }, src/main.js
@@ -76,7 +76,7 @@ app.config.globalProperties.addDateRange = addDateRange; app.config.globalProperties.selectDictLabel = selectDictLabel; app.config.globalProperties.selectDictLabels = selectDictLabels; app.config.globalProperties.javaApi = "http://114.132.189.42:9037"; app.config.globalProperties.javaApi = __BASE_API__; app.config.globalProperties.HaveJson = (val) => { return JSON.parse(JSON.stringify(val)); }; vite.config.js
@@ -7,11 +7,13 @@ const env = loadEnv(mode, process.cwd()); const { VITE_APP_ENV } = env; const baseUrl = VITE_APP_ENV == "development" ? "http://114.132.189.42:9036" // å¼åç¯å¢å端æ¥å£ : "http://114.132.189.42:9036"; // ç产ç¯å¢å端æ¥å£ env.VITE_APP_ENV === "development" ? "http://127.0.0.1:9036" : env.VITE_BASE_API; return { define:{ __BASE_API__: JSON.stringify(baseUrl) }, // é¨ç½²ç产ç¯å¢åå¼åç¯å¢ä¸çURLã // é»è®¤æ åµä¸ï¼vite ä¼åè®¾ä½ çåºç¨æ¯è¢«é¨ç½²å¨ä¸ä¸ªååçæ ¹è·¯å¾ä¸ // ä¾å¦ https://www.ruoyi.vip/ã妿åºç¨è¢«é¨ç½²å¨ä¸ä¸ªåè·¯å¾ä¸ï¼ä½ å°±éè¦ç¨è¿ä¸ªé项æå®è¿ä¸ªåè·¯å¾ãä¾å¦ï¼å¦æä½ çåºç¨è¢«é¨ç½²å¨ https://www.ruoyi.vip/admin/ï¼å设置 baseUrl 为 /admin/ã