Vite 在编译文件中添加资产路径前缀/更改资产路径

unt*_*red 3 javascript path vite

您能告诉我,如何更改 vite 资产路径的构建方式,但仅限于编译文件吗?我的意思是,例如,我有文件index.html,如下所示:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
  </head>
  <body>
    <script type="module" src="/src/main.js"></script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这里我有 src="/src/main.js" 的脚本

当我编译它时,我得到 src="/assets/index-c371877d.js"

我正在制作 ESP32 网络服务器,由于一些内部原因,我需要将编译后的文件放在 SD 卡上的另一个文件夹中。

我可以使用 vite.config.js 更改输出目录,这里有:

export default defineConfig({
  plugins: [vue(), vueJsx()],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  build: {
    outDir: "../../SD/modules/test", // test is project name
  },
})

Run Code Online (Sandbox Code Playgroud)

但问题是,编译的文件具有相同的相对路径,而我需要 module/%moduleName%/%relative path%
所以我需要 src="module/ 而不是 src="/assets/index-c371877d.js"测试/资产/index-c371877d.js”

我尝试更改 vite assetDir:

export default defineConfig({
  plugins: [vue(), vueJsx()],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  build: {
    outDir: "../../SD/modules/test",
    assetsDir: "modules/test"
})
Run Code Online (Sandbox Code Playgroud)

现在它在路径之前添加了modules/test,但是编译后的文件被放入outDir + assetsDir目录中,这是我不想要的。

请告诉我,如何在不更改实际资产目录的情况下添加必要的路径数据?先感谢您。

unt*_*red 5

终于解决了

需要为配置提供基本属性

export default defineConfig({
  plugins: [vue(), vueJsx()],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  build: {
    outDir: Config.modulesDirRelativePath + "/vue-project"
  },
  base: "/modules/vue-project"
})
Run Code Online (Sandbox Code Playgroud)

  • 成功了!我想将资产路径从“/assets/[files]”更改为“./assets/[files]”。基址:“./”,成功了。 (3认同)