vite的入口

vite的entry相对于其他构建工具是特别的。

  • vite的默认入口是根目录下的index.html文件
  • 而webpack需要配置entry入口,通常是index.js,另外需要配合使用webpackHtmlPlugin插件
  • 同时vite也支持配置多入口(多页应用),vite打包多页应用比webpack要简单
  • webpack配置多个entry时,如果只配置一个index.html,所有entry的js都会插入到这个index.html,所以webpack配置多个entry的同时还需要配置多个index.html。而vite配置多个input就行了。
// vite.config.js
import { resolve } from 'path'
import { defineConfig } from 'vite'


export default defineConfig({
  build: {
    rollupOptions: {
      input: {
        main: resolve(__dirname, 'index.html'),
        nested: resolve(__dirname, 'nested/index.html')
      }
    }
  }
})

script手动插入入口js即可

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite + TS</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/react/Main.tsx"></script>
  </body>
</html>

实际上,在项目第一次启动时,Vite 会默认抓取项目中所有的 HTML 文件(如当前脚手架项目中的index.html),将 HTML 文件作为应用入口,然后根据入口文件扫描出项目中用到的第三方依赖,最后对这些依赖逐个进行编译。

那么,当默认扫描 HTML 文件的行为无法满足需求的时候,比如项目入口为vue格式文件时,你可以通过 entries 参数来配置:

// vite.config.ts
{
  optimizeDeps: {
    // 为一个字符串数组
    entries: ["./src/main.vue"];
  }
}