You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多入口场景下如何配置Vite移除index文件的多余子目录

解决Vite多入口构建生成多余login子目录的问题

问题原因

你当前构建后出现重复login目录层级,是因为配置里build.outDir设为dist/login,同时rollupOptions.input指向login/index.html,Rollup默认会保留输入文件的目录结构,导致把login目录下的文件输出到dist/login/login路径下,形成了多余的子目录。

解决方案

调整Rollup的输出配置,取消输入文件的目录结构映射,让login/index.html直接输出到dist/login目录根节点。以下是两种可行的修改方式:

方式一:指定输出文件命名规则

import { resolve } from 'path';
import { defineConfig } from 'vite';
import Vue from '@vitejs/plugin-vue';
import VueRouter from 'unplugin-vue-router/vite';

export default defineConfig({
  base: '/',
  plugins: [Vue(), VueRouter()],
  build: {
    outDir: 'dist/login',
    rollupOptions: {
      input: resolve(__dirname, 'login/index.html'),
      output: {
        // 直接将入口文件输出到outDir根目录,不保留原目录结构
        entryFileNames: '[name].html',
        chunkFileNames: 'assets/[name]-[hash].js',
        assetFileNames: 'assets/[name]-[hash].[ext]'
      }
    },
  },
});

方式二:设置模块根目录

import { resolve } from 'path';
import { defineConfig } from 'vite';
import Vue from '@vitejs/plugin-vue';
import VueRouter from 'unplugin-vue-router/vite';

export default defineConfig({
  base: '/',
  plugins: [Vue(), VueRouter()],
  build: {
    outDir: 'dist/login',
    rollupOptions: {
      input: resolve(__dirname, 'login/index.html'),
      output: {
        // 将login目录设为模块根目录,其下文件直接输出到outDir
        preserveModulesRoot: 'login'
      }
    },
  },
});

效果验证

重新执行构建命令后,dist/login目录下将直接生成index.html及对应静态资源,不会再出现多余的login子目录,与你期望的目录结构一致。

内容的提问来源于stack exchange,提问作者Shafeeq Nt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:52:49