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上去了。
浙公网安备 33010602011771号