我是个新手,一开始我并不知道自己需要什么样的结构。
我需要构建多个应用程序,但其中一些依赖于相同的组件。
到目前为止效果很好,但我认为混合了一些东西
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite App</title>
<script type="module" crossorigin src="/assets/modules/modules\\VPlayerList\\index-74e8dd8e.js"></script>
<link rel="modulepreload" crossorigin href="/assets/js/main-a0df4ea4.js">
<link rel="stylesheet" href="/assets/main.44382b18.css">
</head>
<body>
<div id="app"></div>
</body>
</html>
Hrefs 错误,我错过了什么?
忘记附上vite配置:
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import path, { resolve } from 'path'
import glob from 'glob';
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue(), vueJsx()],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
build: {
rollupOptions: {
input: Object.fromEntries(
glob.sync("src/modules/**/*.html").map((file:string) => [
path.relative(
"src",
file.slice(0, file.length - path.extname(file).length)
),
fileURLToPath(new URL(file, import.meta.url)),
])
),
output: {
chunkFileNames: 'assets/js/[name]-[hash].js',
entryFileNames: 'assets/modules/[name]-[hash].js',
dir: "dist"
}
},
},
})
我遇到了同样的问题,但无法添加评论,因此我将我的进度作为答案发布。
我需要为我的应用程序分发 3 个版本,这是一个使用 CapacitorJS 编译的移动(混合)应用程序、一个在线版本(具有一些隐藏功能、API 令牌等)和一个 Lite 版本(具有最少的功能)。
所有三个应用程序共享大部分系统组件,对我来说一次构建三个不同的版本可能非常容易。
我最接近的方法是使用 3 个入口点,即三个不同的
index.html
文件。但是,我无法分离从构建生成的构建目录。到目前为止,这是我的 vite.config.js
文件:
import { resolve } from 'path';
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
base: "",
build: {
rollupOptions: {
input: {
web: resolve(__dirname, './index_web.html'),
mobile: resolve(__dirname, './index_mobile.html'),
lite: resolve(__dirname, './index_lite.html'),
},
output: [
{
name: "web",
dir: "dist_web",
},
{
name: "mobile",
dir: "dist_mobile",
},
{
name: "lite",
dir: "dist_lite",
}
]
},
},
});
如前所述,此方法仅构建三个
dist
文件夹,其中包含三个应用程序。也许我缺少一种将输出链接到输入的方法,或者有一种使用不同构建命令的更简单的方法。
目前,我使用三个不同的
vite.config.js
文件,并使用 package.json
中声明的不同构建命令构建每个版本:
{
"name": "vite-multiple-build",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build-web": "vite build --config vite.config.web.js",
"build-mobile": "vite build --config vite.config.mobile.js",
"build-lite": "vite build --config vite.config.lite.js",
"preview": "vite preview"
},
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"@types/react": "^18.0.24",
"@types/react-dom": "^18.0.8",
"@vitejs/plugin-react": "^2.2.0",
"vite": "^3.2.3"
}
}
这似乎工作正常,唯一的问题是入口点需要在构建后重命名。