我正在尝试将现有项目更新为 vite,但我在文档中读到 Vite 需要一个 index.html 文件来工作。是否有指定 vite 应该构建的另一个文件名?就我而言 main.html
ton*_*y19 25
入口点配置在build.rollupOptions.input
:
import { defineConfig } from \'vite\'\nexport default defineConfig({\n \xe2\x8b\xae\n build: {\n rollupOptions: {\n input: {\n app: \'./index.html\', // default\n },\n },\n },\n})\n
Run Code Online (Sandbox Code Playgroud)\n您可以将其更改为main.html
,如下所示。提供应用程序时,您必须手动导航到/main.html
,但您可以配置server.open
为自动打开该文件:
import { defineConfig } from \'vite\'\n\nexport default defineConfig({\n \xe2\x8b\xae\n build: {\n rollupOptions: {\n input: {\n app: \'./main.html\',\n },\n },\n },\n server: {\n open: \'/main.html\',\n },\n})\n
Run Code Online (Sandbox Code Playgroud)\n\n
jdu*_*ing 16
如果您不仅尝试更改根 HTML 页面的名称,还尝试更改其路径build
,则更改或server
选项将无济于事。例如,如果您想加载<project root>/src/main.html
而不是<project root>/index.html
,则可以在 处访问它http://localhost:3000/src/main.html
,但不能简单地在 处访问localhost:3000
。
要从不同的路径提供文件,您需要root
在配置文件中进行设置。请注意,您还需要定义相对于这个新根的其他路径,例如dist
. 否则,打包的文件将输出到/src/dist
.
加载 HTML 文件的更完整的配置文件/src
如下所示:
import path from "node:path";
import process from "node:process";
import { defineConfig } from "vite";
export default defineConfig({
server: {
open: "main.html",
},
root: "src",
publicDir: "../public",
build: {
outDir: "../dist"
},
resolve: {
alias: { "/src": path.resolve(process.cwd(), "src") }
},
});
Run Code Online (Sandbox Code Playgroud)
对于任何试图提供index.html
位于源文件深处的文件的人,但希望开发服务器实际上在 上提供该文件/
,您可以在您的 中使用像这样的 vite 插件来做到这一点vite.config
:
export default defineConfig({
plugins: [
vue(),
{
name: "deep-index",
configureServer(server) {
server.middlewares.use(
(req, res, next) => {
if (req.url === '/') {
req.url = '/some/path/to/your/index.html';
}
next();
}
)
}
}
]
})
Run Code Online (Sandbox Code Playgroud)
以下是实现相同高级目标的方法:
在构建时,我们将index.html 的内容与另一个html 文件交换。
对于我的用例,项目暂时需要静态构建输出的两种变体:1. Vue 应用程序,2. 纯 JS 应用程序。交换index.html
内容是实现这一目标的最直接方法,无需担心路径、路由等。
为此,会发生文件转换(使用fs
),并且在项目的一次性构建步骤期间就可以了。如果在另一种情况下存在常规文件操作(不是一次性),则性能可能会成为问题。
1.有多个html源文件
至少index.html
需要一项;制作你自己的变体。
index.html
index_type1.html
index_type2.html
whatever.html
etc
Run Code Online (Sandbox Code Playgroud)
2. 在你的 vite.config 中创建一个 HTML 替换插件
这里我们直接在 vite 配置中内嵌一个插件。这将使用您选择的任何源文件覆盖index.html。它发生在其他构建步骤之前,基本上相当于您在运行之前手动重命名文件build
。
vite.config.js
import fs from 'fs/promises'
export default defineConfig({
plugins: [
// ...
{
name: 'my-plugin-for-index-html-build-replacement',
transformIndexHtml: {
enforce: 'pre', // Tells Vite to run this before other processes
async transform() {
// Do some logic; whatever you want
if (env.MY_ENV_VARIABLE == 'myType2') {
// Grab new HTML content to place into index.html
return await fs.readFile('./index_type2.html', 'utf8')
}
}
}
}
// ...
]
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37073 次 |
最近记录: |