# Deployment / Penempatan > docs/user/ > Deployment --- PromptJS menyediakan 3 deployment adapter yang mengubah output build sesuai target hosting. Adapter dipilih melalui flag `--adapter` pada `pjs build` atau field `adapter` di `pjs.config.js`. PromptJS provides 3 deployment adapters that transform build output for the target hosting. Adapters are selected via the `--adapter` flag on `pjs build` or the `adapter` field in `pjs.config.js`. **Bukti / Evidence:** Adapter yang valid didefinisikan di `src/engine/config.js` dalam `KNOWN_ADAPTERS = new Set(['static', 'node', 'vercel'])`. Implementasi masing-masing ada di `src/engine/adapters/`. --- ## Front-Matter Build / Build dengan Multi-Page Sebelum menggunakan adapter, pastikan proyek memiliki struktur multi-page yang benar: Before using adapters, ensure the project has a correct multi-page structure: ``` proyek/ ├── src/ │ ├── pages/ │ │ ├── index.pjs │ │ ├── tentang.pjs │ │ └── blog/[slug].pjs │ └── assets/ ├── pjs.config.js └── package.json ``` Builder mendeteksi folder `pages/` di dalam `src/` atau di root proyek. Jika ditemukan, builder menjalankan mode project build (bukan single-file legacy mode). **Bukti / Evidence:** Di `src/cli/commands/build.js`, builder mengecek `src/pages/` lalu `pages/` secara berurutan. Jika salah satu ada, `Builder.buildProject()` dipanggil. ### Rute Dinamis / Dynamic Routes File dengan `[nama].pjs` di dalam subfolder menghasilkan rute dengan parameter. Misalnya `pages/blog/[slug].pjs` menghasilkan rute `/blog/:slug`. Parameter bisa diakses di halaman melalui argument kedua factory function. Files with `[name].pjs` in subfolders produce routes with parameters. For example, `pages/blog/[slug].pjs` produces the route `/blog/:slug`. **Bukti / Evidence:** Fungsi `fileToRoute()` di `builder.js` mengubah `[slug]` menjadi `:slug` menggunakan regex. Parameter diteruskan ke factory function sebagai argumen kedua. --- ## Konfigurasi Build / Build Configuration File konfigurasi: `pjs.config.js` atau `promptjs.config.js` (dicari secara ascending dari working directory). Configuration file: `pjs.config.js` or `promptjs.config.js` (searched upward from the working directory). **Bukti / Evidence:** `CONFIG_FILENAMES = new Set(['pjs.config.js', 'promptjs.config.js'])` di `src/engine/config.js`. Hanya file `.js` yang didukung (bukan `.json`, `.yaml`, atau `.toml`). ```js // pjs.config.js module.exports = { adapter: 'static', // 'static' | 'node' | 'vercel' outDir: 'dist', // Direktori output pagesDir: 'pages', // Subfolder halaman (relatif terhadap rootDir) assetsDir: 'assets', // Subfolder aset baseUrl: '/', // Base URL untuk asset meta: { title: 'Nama Aplikasi', description: 'Deskripsi aplikasi', ogImage: '/og-image.png', ogType: 'website', }, siteUrl: 'https://example.com', // Untuk sitemap dan canonical URL apiUrl: 'https://api.example.com', // Untuk Node adapter API proxy plugins: [], // Array plugin (fungsi atau objek) }; ``` ### Merge dengan CLI / CLI Override CLI flags selalu mengambil alih konfigurasi file. Flag yang bisa override: CLI flags always override config file values. Overridable flags: | Flag CLI | Override Field | |----------|----------------| | `--out-dir