Laravel环境下如何配置Vite禁用文件拆分并输出单一指定文件
Laravel环境下如何配置Vite禁用文件拆分并输出单一指定文件
咱们一步步来解决这个问题——你现在的需求是:当在Blade模板中单独引用sale.js时,Vite只输出这一个打包后的文件,不再生成那些拆分的依赖chunk和modulepreload链接。下面是具体的配置调整步骤:
1. 修改Vite配置文件,强制打包为单文件并禁用预加载
打开你的Vite配置文件,调整build部分的配置,添加Rollup的相关设置来禁用代码拆分,同时确保模块预加载彻底关闭:
import {defineConfig} from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig(({ mode }) => { return { plugins: [ laravel({ input: [ // 这里如果不需要其他全局文件,可以暂时只保留你需要的这个入口 // 或者保留原有配置,因为你在Blade中单独引用了目标文件 'resources/js/client/pages/client/sale/sale.js', // 其他原有文件... ], refresh: true, }) ], build: { outDir: 'public/build', minify: 'esbuild', modulePreload: false, // 彻底禁用自动模块预加载 polyfillModulePreload: false, sourcemap: mode !== 'production', // 核心配置:强制Rollup不拆分代码,所有依赖内联到入口文件 rollupOptions: { output: { inlineDynamicImports: true, // 把动态导入的依赖内联到主文件 manualChunks: () => 'single-bundle', // 强制所有代码打包到一个chunk中 }, }, terserOptions: { compress: { drop_console: mode === 'production', }, output: { comments: mode === 'production', }, }, }, } });
关键配置说明:
modulePreload: false+polyfillModulePreload: false:直接关掉Vite自动生成的modulepreload链接rollupOptions.output.inlineDynamicImports: true:把sale.js中动态导入的依赖(比如你看到的constant.js、init-swiper.js这些)全部内联到主文件里,不再生成单独的chunkrollupOptions.output.manualChunks: () => 'single-bundle':强制Rollup把所有代码都打包到一个文件中,彻底禁用自动代码拆分
2. 清理旧的打包文件并重新编译
执行以下命令清理旧的构建产物,然后重新编译:
# 清理旧的build目录 rm -rf public/build # 开发环境编译(带热重载) npm run dev # 或者生产环境编译 npm run build
3. 验证效果
重新加载你的页面,查看页面源码,应该只会看到一个指向sale.js打包后文件的<script>标签,不再有那些modulepreload链接和拆分的依赖文件了。
需要注意的是:如果你的项目其他页面还需要用到那些拆分的依赖文件,这种全局配置会影响它们。如果只是临时需要单独打包这个文件,你可以考虑创建一个独立的Vite配置文件(比如vite.sale.config.js),然后用vite --config vite.sale.config.js build命令单独编译它。
备注:内容来源于stack exchange,提问作者Denis Chenykh
相关产品推荐
相关产品推荐

