Skip to Content
I'm available for work

8 mins read


Mengenal struktur project Nextjs

Artikel ini memberikan gambaran tentang struktur proyek dari aplikasi Next.js, mencakup top-level folder dan file, file konfigurasi, serta konvensi routing dalam direktori aplikasi dan halaman.


Series: Nextjs

Episodes: (3/3)

Struktur Proyek Next.js

Artikel ini akan memberikan gambaran tentang struktur proyek dari aplikasi Next.js. Ini termasuk top-level file dan folder, file konfigurasi, dan konvensi routing dalam folder app dan pages.

Top-level folders

Top-level Folder digunakan untuk mengorganisir kode aplikasi dan aset statis Kamu. Artinya Kamu bisa gunain folder tersebut buat nyimpen berkas-berkas utama yang menjadi bagian dari struktur inti aplikasi Kamu, seperti komponen, utility, pages, dan file statis seperti gambar atau file konfigurasi. Dengan cara ini, struktur folder yang tertata rapi akan memudahkan developer dan juga memudahkan dalam pemeliharaan projek atau aplikasi Nextjs.

Segmentasi Rute ke Segmen Path Nextjs

  • app: Router Aplikasi
  • pages: Router Halaman
  • public: Aset statis yang akan disajikan
  • src: Folder sumber aplikasi opsional

Top-level File

Top-level File digunakan untuk mengkonfigurasi aplikasi Kamu, mengelola dependensi, menjalankan middleware, mengintegrasikan alat pemantauan (monitoring tools), dan mendefinisikan environment variables.

  • next.config.js: File konfigurasi untuk Next.js
  • package.json: Dependensi proyek dan skrip
  • instrumentation.ts: File OpenTelemetry dan Instrumentasi
  • middleware.ts: Middleware permintaan Next.js
  • .env: environment variables.
  • .env.local: environment variables lokal
  • .env.production: environment variables produksi
  • .env.development: environment variables pengembangan (Development)
  • .eslintrc.json: File konfigurasi untuk ESLint
  • .gitignore: File dan folder Git untuk diabaikan
  • next-env.d.ts: File deklarasi TypeScript untuk Next.js
  • tsconfig.json: File konfigurasi untuk TypeScript
  • jsconfig.json: File konfigurasi untuk JavaScript

Konvensi Routing app

Berikut adalah konvensi file yang digunakan untuk mendefinisikan rute dan menangani metadata dalam router aplikasi.

File Routing

  • layout: Layout
  • page: Halaman
  • loading: UI Loading
  • not-found: UI Not-found
  • error: UI error
  • global-error: UI Global error
  • route: API endpoint
  • template: Layout yang Dibuat Ulang
  • default: Rute Paralel halaman fallback

Rute Bersarang (Nested Routes)

  • folder: Segmentasi Rute (Route segment)
  • folder/folder: Segmentasi Rute Bersarang ( Nested route segment)

Rute Dinamis

  • [folder]: Segmentasi Rute Dinamis
  • [...folder]: Segmentasi Rute Catch-all
  • [[...folder]]: Segmentasi Rute Optional catch-all

Grup Rute dan Folder Private

  • (folder): Grup rute tanpa memengaruhi routing
  • _folder: Folder opsional dan semua segment anak (child segments) dari routing

Paralel dan Rute Intercepted

  • @folder: Slot bernama (Named slot)
  • (.)folder: Memotong tingkat yang sama (Intercept same level)
  • (..)folder: Memotong satu tingkat di atas (Intercept one level above)
  • (..)(..)folder: Memotong dua tingkat di atas (Intercept two levels above)
  • (...)folder: Memotong dari root (Intercept from root)

Konvensi File Metadata

Ikon Aplikasi (App Icons)

Nama FileEkstensiDeskripsi
favicon.icoBerkas Favicon
icon.ico, .jpg, .jpeg, .png, .svgBerkas Ikon Aplikasi
icon.js, .ts, .tsxIkon Aplikasi yang Dihasilkan
apple-icon.jpg, .jpeg, .pngBerkas Ikon Aplikasi Apple
apple-icon.js, .ts, .tsxIkon Aplikasi Apple yang Dihasilkan

Open Graph dan Gambar Twitter

Nama FileEkstensiDeskripsi
opengraph-image.jpg, .jpeg, .png, .gifBerkas Gambar Open Graph
opengraph-image.js, .ts, .tsxGambar Open Graph yang Dihasilkan
twitter-image.jpg, .jpeg, .png, .gifBerkas Gambar Twitter
twitter-image.js, .ts, .tsxGambar Twitter yang Dihasilkan

SEO

Nama FileEkstensiDeskripsi
sitemap.xmlfile Sitemap
sitemap.js, .tsSitemap yang Dihasilkan
robots.txtfile Robots
robots.js, .tsRobots yang Dihasilkan

Pages Konvensi Routing (pages Routing Conventions)

Berikut adalah konvensi file yang digunakan untuk mendefinisikan rute dalam pages router.

Special Files

Nama FileEkstensiDeskripsi
_app.js, .jsx, .tsxCustom App
_document.js, .jsx, .tsxCustom Document
_error.js, .jsx, .tsxCustom halaman Error
404.js, .jsx, .tsxhalaman error 404
500.js, .jsx, .tsxhalaman error 500

Rute

Konvensi FolderEkstensiDeskripsi
index.js, .jsx, .tsxHalaman Utama
folder/index.js, .jsx, .tsxHalaman Bertingkat
Konvensi FileEkstensiDeskripsi
index.js, .jsx, .tsxHalaman Utama
file.js, .jsx, .tsxHalaman Bertingkat

Rute Dinamis

Konvensi FolderEkstensiDeskripsi
[folder]/index.js, .jsx, .tsxSegment Rute Dinamis
[...folder]/index.js, .jsx, .tsxSegment Rute Catch-all
[[...folder]]/index.js, .jsx, .tsxSegment Rute Optional catch-all
Konvensi FileEkstensiDeskripsi
[file].js, .jsx, .tsxSegment Rute Dinamis
[...file].js, .jsx, .tsxSegment Rute Catch-all
[[...file]].js, .jsx, .tsxSegment Rute Optional catch-all

Sekian, semoga bermanfaat and thank u 💞

Referensi

Documentasi Nextjs : struktur project