I have a simple project setup using Vite:
- index.html
- JavaScript file
- SASS file
I’m using Vite’s default configuration without a custom config file. After building the project, the index.html
in the dist
folder uses static paths for assets:
<head>
<script type="module" crossorigin src="/assets/index.b850bc1f.js"></script>
<link rel="stylesheet" href="/assets/index.04d1c13d.css">
</head>
This also affects url()
paths in CSS, converting them to static paths.
I want Vite to output relative paths instead, like this:
<head>
<script type="module" crossorigin src="assets/index.b850bc1f.js"></script>
<link rel="stylesheet" href="assets/index.04d1c13d.css">
</head>
Solution:
The leading slash in the paths is the base URL, configured by the base
option, which defaults to /
. To use relative paths, set the base
option to an empty string in your Vite config:
// vite.config.js
import { defineConfig } from 'vite'
export default defineConfig({
base: '',
})
This configuration makes the paths relative to the deployment directory, removing the leading slash.