vite打包,静态资源问题?

我项目结构长这样,然后有一个public文件夹,里面放的都是一些静态的数据
image.png

然后打包的时候它不会把public这个文件夹整体给打包进去dist,而是把public里面的一个个文件单独打包进去dist里面,想问一下,有什么配置或者办法可以把这个public整体打包进去dist文件夹里面吗?
image.png

试了几个vite的配置都不太行

阅读 775
2 个回答

vite-plugin-static-copy可以保留 public 文件夹的完整结构

import { defineConfig } from 'vite';
import viteStaticCopy from 'vite-plugin-static-copy';

export default defineConfig({
  plugins: [
    viteStaticCopy({
      targets: [
        {
          src: 'public', // 源文件夹
          dest: '.' // 目标文件夹,保持在 `dist` 内
        }
      ]
    })
  ]
});

这个试过没有,不行的话写脚本打包完成后将 public 文件夹复制到 dist 目录

"scripts": {
  "build": "vite build && node copyPublic.js"
}

然后脚本大概

const fs = require('fs-extra');
const path = require('path');

const source = path.resolve(__dirname, 'public');
const destination = path.resolve(__dirname, 'dist/public');

// 复制文件夹
fs.copy(source, destination, err => {
  if (err) {
    console.error('Error copying public folder:', err);
  } else {
    console.log('Public folder copied to dist successfully!');
  }
});

是在不行我也不知道了

有个讨巧的办法,就是你在public下面再建一个public文件夹,然后把原本应该放在外层public目录下的内容都放在这个内层public下,这个办法的好处是不用去折腾和研究打包配置

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题