vite打包react,输出多个js文件

因为需要在RazorPages的局部使用js写部分动态效果,于是折腾一下看看能不能用react来写,没想到还真的可以。

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path'
import fs from 'fs'

// https://vite.dev/config/

const _pathDir = 'src/pages'

const pageDir = path.resolve(__dirname, _pathDir)

const paths = fs.readdirSync(pageDir, { recursive: true }).map(a => path.resolve(pageDir, a))
  .map(a => {
    let name = path.basename(a, path.extname(a))
    return { name, path: a }
  }).filter(a => fs.statSync(a.path).isFile())
const inputPaths = Object.fromEntries(paths.map(a => [a.name, a.path]))
export default defineConfig({
  plugins: [react()],
  build: {
    rolldownOptions: {
      input: {
        ...inputPaths
      },
      output: {
        entryFileNames: (opt) => {
          let relativePath = path.relative(path.resolve(__dirname, _pathDir), path.dirname(opt.facadeModuleId))
          if (relativePath === '') {
            relativePath = '.'
          }
          return `${relativePath}/${opt.name}.js`;
        },
      }
    }
  }
})

在src/pages下的所有jsx文件,都会在dist下输出对应的js文件,可以就可以直接使用挂到对应的dom上去了。

posted on 2025-10-30 11:25  快乐海盗  阅读(4)  评论(0)    收藏  举报