前端多个项目放在一个域名下如何配置打包文件

devtools/2025/2/27 17:22:37/

一、原因

        当前端有三个项目,比如,大学生后台管理系统、大学生手机端网页、大学生电脑端网页,这三个项目想放在同一个域名下,此时就需要对项目打包配置进行更改,才能实现。

注:如果前端三个项目请求同一个后端域名,但是前端项目和后端项目域名不同,导致跨域,可以收到响应体信息,但是响应头返回的token无法获取,可以用nginx解决。

二、实现

1.服务器下新建三个文件夹

域名下新建三个文件夹,eg :  manager、app、pc

访问方式:访问项目链接的时候,要加上这个文件夹名字:https://www.a.com:8080/app

2.打包配置

①vue3(vite)有两种配置方法

方法一, vite.config.js 文件配置如下:


import { defineConfig, loadEnv } from "vite";
import { resolve } from "path";
import createVitePlugins from "./vite";export default defineConfig(({ mode, command }) => {const env = loadEnv(mode, process.cwd());return {base: "./", // 开发或生产环境服务的公共基础路径envDir: "vite-env",plugins: createVitePlugins(env, command === "build"),css: {preprocessorOptions: {less: {additionalData: '@import "./src/styles/common.less";'}}},resolve: {alias: {// 设置路径"@": resolve("./src"),// 设置别名"~@": resolve("./src"),},extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"]},build: {outDir: "dist",minify: "terser", // esbuild 打包更快,但是不能去除 console.log,去除 console 使用 terser 模式rollupOptions: {output: {chunkFileNames: "js/[name]-[hash].js", // 引入文件名的名称entryFileNames: "js/[name]-[hash].js", // 包的入口文件名称assetFileNames: "[ext]/[name]-[hash].[ext]", // 资源文件像 字体,图片等},},},};
});

方法二, vite.config.js 文件配置如下:


import type { UserConfig, ConfigEnv } from 'vite';
import { defineConfig } from 'vite'
import { resolve } from "path";export default defineConfig(({ command, mode }: ConfigEnv): UserConfig => {return {publicDir: "public",base: "/manager/",//将manager换成你的在域名下起的放这个项目的文件夹的名字resolve: {alias: {"@": resolve(__dirname, "./src"),"components": resolve(__dirname, "./src/components"),"api": resolve(__dirname, "./src/api"),},},build: {outDir: 'dist',commonjsOptions: {include: [/node_modules/, ],},},}})

②react(webpack)两种系统两种方法

Windows 系统:

更改 package.json 的打包配置:

 "scripts": {"build": "set PUBLIC_URL=/manager&& react-scripts build", }

这个是打包项目的配置,set 是一个命令,在 Windows 系统的命令提示符(CMD)或 PowerShell 里,set 命令用于设置环境变量。环境变量是操作系统中存储的一些值,这些值可以被运行在系统中的各种程序访问和使用。在这个命令中,set PUBLIC_URL=/manager 这部分将名为 PUBLIC_URL 的环境变量设置为 /manager

之后的 && 是逻辑与运算符,它的作用是当 set PUBLIC_URL=/manager 命令成功执行后,才会接着执行 react-scripts build 命令。

react-scripts build 是创建 React 应用(Create React App)中用于构建生产版本的命令。在构建过程中,React 应用会读取 PUBLIC_URL 环境变量的值,然后根据这个值来确定静态资源(如 CSS、JavaScript 文件等)的公共路径。

注:react打包配置后,放在企业微信自建应用,在点击页面刷新时会导致路由路径丢失 /manager,强制加上也无效,小编暂时没有找到解决办法,如果你有解决办法,希望可以在评论区告知,谢谢。

Unix/Linux 系统:

"scripts": {"build": "PUBLIC_URL=/manager react-scripts build"
}

这里直接在命令前设置环境变量 PUBLIC_URL=/manager,这种方式同样可以把 PUBLIC_URL 环境变量的值设置为 /manager,然后再执行 react-scripts build 命令进行构建。


http://www.ppmy.cn/devtools/163117.html

相关文章

Redis面试宝典【刷题系列】

文章目录 一、什么是Redis?二、Redis相比Memcached有哪些优势?三、Redis支持的数据类型有哪些?四、Redis的主要消耗的物理资源是什么?五、Redis的全称是什么?六、Redis有哪些数据淘汰策略?七、为什么Redis需…

python爬虫学习第十一篇爬取指定类型数据

最近在学习Python爬虫的过程中,尝试用爬虫获取指定类型的数据。今天,我想和大家分享一下我的实践过程和遇到的问题。 一、实现目标 目标是从一个网站的API接口获取不同类型的食品数据。 比如,第一步我想获取汉堡、小食、甜品等不同类型的数…

计算机毕设-基于springboot的人工智能领域复合型人才校企协同培养管理系统的设计与实现(附源码+lw+ppt+开题报告)

博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

大白话css第二章深入学习

CSS学习第二阶段主要是深入掌握一些更复杂、更实用的知识和技能,以下用大白话为你详细介绍并给出代码示例: 盒模型与布局 盒模型深入理解 解释:前面说过每个HTML元素像个盒子,现在要更深入了解。内容区域就是盒子里真正放东西的…

怎么合并主从分支,要注意什么

在 Git 中合并主从分支(例如将 feature 分支合并到 main 分支)是一个常见操作。以下是具体步骤和注意事项: 合并分支的步骤 切换到主分支 git checkout main确保当前在 main 分支。 拉取最新代码 git pull origin main确保 main 分支是最…

如果二者隔离级别不一致,以哪个为主。例如@Transactional 隔离级别是RC,mysql是RR

如果 Spring 的 Transactional 隔离级别 和 数据库的隔离级别 不一致,最终生效的隔离级别取决于以下两种情况: 1. Spring 隔离级别优先级更高 Spring 的行为: 当你在 Transactional 注解中显式配置了隔离级别(例如 isolation Iso…

排序模板——C++

0.排序模板题目 题目描述 将读入的 N 个数从小到大排序后输出。 输入格式 第一行为一个正整数 N。 第二行包含 N 个空格隔开的正整数 ai​,为你需要进行排序的数。 输出格式 将给定的 N 个数从小到大输出,数之间空格隔开,行末换行且无空格。 …

MySQL表转移数据的三种方式

说明:在一些情况,像大表修改表结构,重新建立分区(对已有表建立分区,对历史数据是不生效的),或者表备份,我们需要将表的数据,从一张表转移到另外一张表里。本文介绍&#…