如何修改Vite中public目录资源的输出目录至/static文件夹?
解决Vite构建时public目录文件复制到static目录的问题
有两种可行方案,按需选择:
方案一:调整public目录结构(最简方案)
直接将public目录下的所有文件/子目录移动到public/static目录中。Vite构建时会自动将public内的结构完整复制到输出目录,最终这些文件就会出现在outDir/static路径下,完全匹配需求,无需修改任何配置。
方案二:使用vite-plugin-copy自定义复制规则(适合不想调整目录结构的场景)
- 安装插件:
npm install vite-plugin-copy --save-dev # 或使用yarn yarn add vite-plugin-copy -D
- 修改
vite.config.js,引入插件并配置复制规则,同时禁用Vite默认的public目录复制行为:
import { defineConfig } from 'vite' import copy from 'vite-plugin-copy' export default defineConfig({ base: "./", /* ---- 原有其他配置 ---- */ plugins: [ copy({ targets: [ { src: 'public/**/*', // 匹配public目录下所有文件及子目录 dest: './../backend/src/main/resources/static/articles/static' // 指定复制到static目录内 } ], // 可选:如果不需要保留public内的子目录结构,添加flatten: true会将所有文件直接放到static根目录 // flatten: true }) ], build: { assetsInlineLimit: 0, minify: true, publicDir: false, // 禁用Vite默认的public文件复制,避免生成重复文件 rollupOptions: { output: { assetFileNames: (assetInfo) => { var info = assetInfo.name.split("."); var extType = info[info.length - 1]; if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(extType)) { extType = "img"; } else if (/woff|woff2/.test(extType)) { extType = "css"; } return `static/${extType}/[name]-[hash][extname]`; }, chunkFileNames: "static/js/[name]-[hash].js", entryFileNames: "static/js/[name]-[hash].js", }, }, outDir: "./../backend/src/main/resources/static/articles/", emptyOutDir: true, }, });
内容的提问来源于stack exchange,提问作者mahan
相关产品推荐
相关产品推荐

