Lompat ke konten
dokumentasi.id
Commit a27b09d
v1
Star11 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

2

Arsitektur Repository

Repository ini bukan aplikasi: tidak ada direktori src, tidak ada tahap build, dan tidak ada artefak yang dihasilkan. Isi katalog hidup seluruhnya di satu berkas Markdown di akar repository, dan satu-satunya pemeriksa otomatisnya adalah awesome-lint. Bentuk arsitekturnya karena itu berarah tunggal: README.md menjadi masukan, linter menjadi satu-satunya pemroses, lalu keluar sebagai laporan.

README.md sebagai satu-satunya sumber data

README.md dibuka oleh satu heading H1 yang sekaligus membawa badge Awesome, lalu satu baris deskripsi proyek (README.md:1-3). Sesudah itu ada daftar isi ## Contents yang memuat enam tautan anchor: Programming Languages, Development Environment, Platforms, Frameworks, Content Management System, dan Tools (README.md:5-12).

Keenam tautan itu berpasangan dengan enam heading ## sungguhan. Tiga heading ## terakhir — Frameworks, Content Management System, dan Tools — muncul berurutan tanpa subbagian ###, dan berkas berakhir di baris 376 (README.md:349-376). Tidak ada berkas lain yang menyimpan entri: contributing.md, code-of-conduct.md, LICENSE, dan assets/header.png bukan katalog. Menambah panduan selalu berarti menambah baris di README.md.

Alur data dari katalog ke laporan

Diagram berikut menunjukkan satu gagasan: bagaimana isi katalog berpindah dari berkas Markdown ke linter, dan lewat pintu masuk mana linter itu dipanggil.

graph TD
  README["README.md<br/>376 baris katalog"]
  CONTENTS["## Contents<br/>6 anchor internal"]
  SECTIONS["6 heading ##<br/>Languages sampai Tools"]
  ENTRY["entri<br/>[Title](url) - Description"]
  LINT["awesome-lint 2.3.0<br/>cli.js"]
  TESTJS["test.js<br/>awesomeLint.report()"]
  NPMTEST["npm test<br/>scripts.test"]
  GHA["lint.yml<br/>pull_request ke master"]
  REPORT["report()"]
  TRAVIS["travis.yml<br/>tidak dijalankan"]
  README --> CONTENTS
  README --> SECTIONS
  SECTIONS --> ENTRY
  README --> LINT
  TESTJS --> LINT
  NPMTEST --> LINT
  GHA -- "npx awesome-lint" --> LINT
  LINT --> REPORT
  TRAVIS -.-> LINT
  style README fill:#336791,color:#fff
  style CONTENTS fill:#8b5cf6,color:#fff
  style SECTIONS fill:#8b5cf6,color:#fff
  style ENTRY fill:#8b5cf6,color:#fff
  style LINT fill:#f59e0b,color:#000
  style TESTJS fill:#f59e0b,color:#000
  style NPMTEST fill:#f59e0b,color:#000
  style GHA fill:#f59e0b,color:#000
  style REPORT fill:#2d7d46,color:#fff
  style TRAVIS fill:#dc2626,color:#fff
%% fig: Alur data katalog ke laporan lint
%% desc: README.md menjadi masukan tunggal awesome-lint, dipanggil lewat test.js, npm test, atau workflow lint, dan hasilnya keluar sebagai report(). travis.yml tetap ada di akar repository tetapi tidak terhubung ke jalur mana pun.
Fig. 1: Alur data katalog ke laporan lintREADME.md menjadi masukan tunggal awesome-lint, dipanggil lewat test.js, npm test, atau workflow lint, dan hasilnya keluar sebagai report(). travis.yml tetap ada di akar repository tetapi tidak terhubung ke jalur mana pun.

Tiga jalur di sisi kiri diagram berakhir di awesome-lint versi 2.3.0 yang sama. Tidak ada jalur yang melewati linter, dan tidak ada langkah antara yang mengubah README.md sebelum diperiksa.

Tiga pintu masuk ke satu linter

test.js hanya tiga baris: mengimpor awesome-lint lalu memanggil awesomeLint.report() (test.js:1-3). package.json mendaftarkan skrip test yang menjalankan binary awesome-lint dan mengunci dependensinya di v2.3.0 sebagai devDependency (package.json:1-7).

Pintu masukPerintahBerkasMemanggil test.js?
skrip npmawesome-lintpackage.json:2-4tidak
manualnode test.jstest.js:1-3ya
CInpx awesome-lint.github/workflows/lint.yml:10-14tidak

⚠️ test.js bukan bagian dari jalur CI. Skrip test menjalankan binary awesome-lint langsung (package.json:1-7), dan workflow memanggil npx awesome-lint (.github/workflows/lint.yml:10-14). Berkas test.js hanya terpakai bila ada yang menjalankan node test.js secara manual, jadi ia pintu masuk alternatif, bukan gerbang wajib.

Versi yang benar-benar terpasang tercatat di lockfile: dependensi dev menunjuk awesome-lint v2.3.0 (package-lock.json:2-8), dan entri node_modules/awesome-lint memetakan bin ke cli.js serta menuntut Node >=20 (package-lock.json:452-457).

Pemicu, warisan konfigurasi, dan otomasi lain

Workflow lint hanya terpicu oleh pull_request (.github/workflows/lint.yml:1-14), dan filternya ditulis literal pada satu baris branches: [ master ] (.github/workflows/lint.yml:3-4). Nama branch itu sejalan dengan tautan blob/master di templat pull request (.github/pull_request_template.md:1). Langkahnya dua: checkout dengan fetch-depth: 0, lalu npx awesome-lint.

⚠️ Pemicu pull_request diikat ke satu nama branch, master. Bila branch default diganti nama, filter branches: [ master ] tidak lagi cocok dan workflow lint tidak berjalan pada pull request baru.

travis.yml masih ada di akar repository, berisi language: node_js dengan satu entri node_js: 'node', sementara dua baris pengaturan git dikomentari (travis.yml:1-5). Nama berkasnya tanpa titik di depan, sedangkan Travis CI membaca .travis.yml, sehingga berkas ini tidak termasuk jalur yang dijalankan.

⚠️ travis.yml adalah sisa konfigurasi lama yang tidak dieksekusi. Jangan menganggapnya sebagai quality gate kedua; satu-satunya pemeriksa katalog ada di .github/workflows/lint.yml.

Dua workflow lain tidak menyentuh katalog. stale.yml berjalan pada cron 59 23 * * *, memberi label setelah 20 hari tanpa aktivitas, lalu menutup issue atau pull request sehari kemudian (.github/workflows/stale.yml:1-21). dependabot.yml menjadwalkan update ekosistem npm harian dengan reviewer kristories (.github/dependabot.yml:1-10). Satu pengaturan Git melengkapi arsitektur ini: *.md merge=union membuat Git menggabungkan hunk bertabrakan alih-alih menandainya sebagai konflik (.gitattributes:4-5).

Halaman ini berhenti pada bentuk dan aliran data. Isi katalog dibahas di Katalog Panduan, cara penulisan entri di Format Entri dan Pengurutan, aturan yang diuji linter di Quality Gate dan CI, dan kebijakan issue serta dependabot di Tata Kelola dan Pemeliharaan.