๐ Panduan index.html dalam Vite: Apa yang Boleh, Tidak Boleh, dan Rekomendasinya

I am an enthusiastic researcher and developer with a passion for using technology to innovate in business and education.
Vite adalah build tool modern yang menggabungkan simplicity HTML + kekuatan ESM + performa super cepat. Salah satu bagian penting dari proyek Vite adalah file index.html.
Tapi, apakah kamu tahu bahwa index.html di Vite bukan file HTML biasa?
๐ง Apa Itu index.html di Vite?
Berbeda dari proyek frontend tradisional, Vite memproses index.html secara spesial:
Sebagai entry point utama aplikasi.
Mendukung template injection seperti
%-style atauenvvariables.Bisa menyertakan
<script type="module">yang menjadi entry ESM.
โ
Apa yang Boleh Dilakukan pada index.html
Berikut hal-hal yang boleh dan didukung secara resmi:
1. โ Ditempatkan di Root Project
/project-root/
โโโ index.html โ
default dan direkomendasikan
โโโ vite.config.ts
โโโ src/
โ โโโ main.ts
Vite akan otomatis mendeteksi dan menjalankan file ini saat
vite dev.
2. โ
Menggunakan <script type="module" src="/main.ts">
<script type="module" src="/main.ts"></script>
Vite akan membaca file ini dan menggunakannya sebagai entry point module bundling.
3. โ
Inject env dan base secara otomatis
<script type="module">
console.log(import.meta.env.BASE_URL)
</script>
4. โ
Multi-page support (jika dikonfigurasi di vite.config.ts)
Kamu bisa punya banyak file HTML seperti about.html, dashboard.html, dll โ asalkan ditentukan di rollupOptions.input.
โ Apa yang Tidak Boleh / Tidak Disarankan
1. โ Meletakkan index.html di Dalam src/ Tanpa Konfigurasi
/project-root/
โโโ src/
โ โโโ index.html โ tidak akan dikenali tanpa config
Tanpa konfigurasi root dan rollupOptions, Vite tidak akan tahu ini adalah entry.
2. โ Menggunakan Syntax HTML yang Tidak Valid atau Conflict dengan ESM
Misalnya, script biasa tanpa type="module":
<!-- โ ๏ธ Ini tidak akan digunakan sebagai ESM entry -->
<script src="/main.js"></script>
3. โ Menambahkan Script Build Tools Langsung di HTML
Vite tidak mengizinkan eksekusi script non-browser (Node.js tools) langsung dari HTML seperti:
<script src="node_modules/..."> <!-- โ Tidak jalan -->
โ๏ธ Jika Harus Pindahkan ke src/?
Kamu boleh saja pindahkan index.html ke dalam src/, asal kamu tahu konsekuensinya dan mengubah config Vite:
// vite.config.ts
import { defineConfig } from 'vite'
import { resolve } from 'path'
export default defineConfig({
root: 'src',
build: {
outDir: '../dist',
rollupOptions: {
input: resolve(__dirname, 'src/index.html'),
},
},
})
Tapi ini tidak disarankan untuk pemula, karena akan merusak konvensi default dan menambah kompleksitas tidak perlu.
๐งญ Rekomendasi Terbaik
| Tujuan Kamu | Rekomendasi |
| Setup biasa (SPA / React / Vue) | โ
Simpan index.html di root project |
| Butuh struktur bersih | โ
Simpan main.ts & asset di src/, HTML tetap di root |
| Butuh banyak halaman (MPA) | โ
Gunakan rollupOptions.input untuk HTML lainnya |
| Pakai Bun + Vite | โ Tidak ada masalah, tetap ikuti struktur Vite |
Pindah HTML ke src/ | ๐ซ Hindari kecuali kamu sudah paham konfigurasi penuh |
๐ Kesimpulan
index.htmladalah file spesial di Vite yang menjadi entry utama aplikasi.Harus diletakkan di root project agar dideteksi otomatis.
Tidak perlu plugin tambahan untuk menggunakannya.
Boleh dipindahkan ke
src/, tapi harus mengaturvite.config.tssecara eksplisit.Untuk pengalaman terbaik: ikuti konvensi default Vite.





