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-31). 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-122).
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-3763). 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.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-34). package.json mendaftarkan skrip test yang menjalankan binary awesome-lint dan mengunci dependensinya di v2.3.0 sebagai devDependency (package.json:1-75).
| Pintu masuk | Perintah | Berkas | Memanggil test.js? |
|---|---|---|---|
| skrip npm | awesome-lint | package.json:2-46 | tidak |
| manual | node test.js | test.js:1-34 | ya |
| CI | npx awesome-lint | .github/workflows/lint.yml:10-147 | tidak |
⚠️
test.jsbukan bagian dari jalur CI. Skriptestmenjalankan binaryawesome-lintlangsung (package.json:1-75), dan workflow memanggilnpx awesome-lint(.github/workflows/lint.yml:10-147). Berkastest.jshanya terpakai bila ada yang menjalankannode test.jssecara 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-88), dan entri node_modules/awesome-lint memetakan bin ke cli.js serta menuntut Node >=20 (package-lock.json:452-4579).
Pemicu, warisan konfigurasi, dan otomasi lain
Workflow lint hanya terpicu oleh pull_request (.github/workflows/lint.yml:1-1410), dan filternya ditulis literal pada satu baris branches: [ master ] (.github/workflows/lint.yml:3-411). Nama branch itu sejalan dengan tautan blob/master di templat pull request (.github/pull_request_template.md:112). Langkahnya dua: checkout dengan fetch-depth: 0, lalu npx awesome-lint.
⚠️ Pemicu
pull_requestdiikat ke satu nama branch,master. Bila branch default diganti nama, filterbranches: [ 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-513). Nama berkasnya tanpa titik di depan, sedangkan Travis CI membaca .travis.yml, sehingga berkas ini tidak termasuk jalur yang dijalankan.
⚠️
travis.ymladalah 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-2114). dependabot.yml menjadwalkan update ekosistem npm harian dengan reviewer kristories (.github/dependabot.yml:1-1015). 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.